summaryrefslogtreecommitdiffstats
path: root/src/lib-master/master-service-private.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib-master/master-service-private.h109
1 files changed, 109 insertions, 0 deletions
diff --git a/src/lib-master/master-service-private.h b/src/lib-master/master-service-private.h
new file mode 100644
index 0000000..429f2eb
--- /dev/null
+++ b/src/lib-master/master-service-private.h
@@ -0,0 +1,109 @@
+#ifndef MASTER_SERVICE_PRIVATE_H
+#define MASTER_SERVICE_PRIVATE_H
+
+#include "master-interface.h"
+#include "master-service.h"
+
+struct master_service_haproxy_conn;
+
+struct master_service_listener {
+ struct master_service *service;
+ char *name;
+
+ /* settings */
+ bool ssl;
+ bool haproxy;
+
+ /* state */
+ bool closed;
+ int fd;
+ struct io *io;
+};
+
+struct master_service {
+ struct ioloop *ioloop;
+
+ char *name;
+ char *configured_name;
+ char *getopt_str;
+ enum master_service_flags flags;
+
+ int argc;
+ char **argv;
+
+ const char *version_string;
+ char *config_path;
+ ARRAY_TYPE(const_string) config_overrides;
+ int config_fd;
+ int syslog_facility;
+ data_stack_frame_t datastack_frame_id;
+
+ struct master_service_listener *listeners;
+ unsigned int socket_count;
+
+ struct io *io_status_write, *io_status_error;
+ unsigned int service_count_left;
+ unsigned int total_available_count;
+ unsigned int process_limit;
+ unsigned int process_min_avail;
+ unsigned int idle_kill_secs;
+
+ struct master_status master_status;
+ unsigned int last_sent_status_avail_count;
+ time_t last_sent_status_time;
+ struct timeout *to_status;
+
+ bool (*idle_die_callback)(void);
+ void (*die_callback)(void);
+ struct timeout *to_die;
+
+ master_service_avail_overflow_callback_t *avail_overflow_callback;
+ struct timeout *to_overflow_state, *to_overflow_call;
+
+ struct master_login *login;
+
+ master_service_connection_callback_t *callback;
+
+ pool_t set_pool;
+ const struct master_service_settings *set;
+ struct setting_parser_context *set_parser;
+
+ struct ssl_iostream_context *ssl_ctx;
+ time_t ssl_params_last_refresh;
+
+ struct stats_client *stats_client;
+ struct master_service_haproxy_conn *haproxy_conns;
+ struct event_filter *process_shutdown_filter;
+
+ bool killed:1;
+ bool stopping:1;
+ bool keep_environment:1;
+ bool log_directly:1;
+ bool initial_status_sent:1;
+ bool die_with_master:1;
+ bool call_avail_overflow:1;
+ bool config_path_changed_with_param:1;
+ bool want_ssl_server:1;
+ bool ssl_ctx_initialized:1;
+ bool config_path_from_master:1;
+ bool log_initialized:1;
+ bool init_finished:1;
+};
+
+void master_service_io_listeners_add(struct master_service *service);
+void master_status_update(struct master_service *service);
+void master_service_close_config_fd(struct master_service *service);
+
+void master_service_io_listeners_remove(struct master_service *service);
+void master_service_ssl_io_listeners_remove(struct master_service *service);
+
+void master_service_client_connection_handled(struct master_service *service,
+ struct master_service_connection *conn);
+void master_service_client_connection_callback(struct master_service *service,
+ struct master_service_connection *conn);
+
+void master_service_haproxy_new(struct master_service *service,
+ struct master_service_connection *conn);
+void master_service_haproxy_abort(struct master_service *service);
+
+#endif