master-service-private.h revision 86791365b10f45982c88e70f2eb94fd6c3fea151
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen#ifndef MASTER_SERVICE_PRIVATE_H
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen#define MASTER_SERVICE_PRIVATE_H
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen#include "master-interface.h"
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen#include "master-service.h"
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainenstruct master_service_listener {
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen struct master_service *service;
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen int fd;
7487ff578435377bbeefffdbfb78ca09ed1292dfTimo Sirainen bool ssl;
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen struct io *io;
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen};
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenstruct master_service {
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen struct ioloop *ioloop;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen char *name;
578ef2538ccf42e2a48234c24a8b709397101d88Timo Sirainen char *getopt_str;
578ef2538ccf42e2a48234c24a8b709397101d88Timo Sirainen enum master_service_flags flags;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen int argc;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen char **argv;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen const char *version_string;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen const char *config_path;
d39a04db2f4d0599cb9b5f03a9aa10a3c234453cTimo Sirainen ARRAY_TYPE(const_string) config_overrides;
01230de017cd273de41143d88e9c18df1243ae8aTimo Sirainen int config_fd;
01230de017cd273de41143d88e9c18df1243ae8aTimo Sirainen int syslog_facility;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
7487ff578435377bbeefffdbfb78ca09ed1292dfTimo Sirainen unsigned int socket_count, ssl_socket_count;
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen struct master_service_listener *listeners;
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen struct io *io_status_write, *io_status_error;
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen unsigned int service_count_left;
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen unsigned int total_available_count;
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen struct master_status master_status;
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen
86791365b10f45982c88e70f2eb94fd6c3fea151Timo Sirainen void (*die_callback)(void);
86791365b10f45982c88e70f2eb94fd6c3fea151Timo Sirainen struct timeout *to_die;
86791365b10f45982c88e70f2eb94fd6c3fea151Timo Sirainen
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen void (*avail_overflow_callback)(void);
cf0ad1a0bddb0787f3d7b408a96d721a8b2a98a3Timo Sirainen struct timeout *to_overflow_state;
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen master_service_connection_callback_t *callback;
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen pool_t set_pool;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen const struct master_service_settings *set;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen struct setting_parser_context *set_parser;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen unsigned int keep_environment:1;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen unsigned int log_directly:1;
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen unsigned int initial_status_sent:1;
3f603ef00e35fca21605afa0ad8d76e94fee2b96Timo Sirainen unsigned int die_with_master:1;
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen unsigned int call_avail_overflow:1;
cf0ad1a0bddb0787f3d7b408a96d721a8b2a98a3Timo Sirainen unsigned int delay_status_updates:1;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen};
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainenvoid master_service_io_listeners_add(struct master_service *service);
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen#endif