master-service.h revision 86791365b10f45982c88e70f2eb94fd6c3fea151
#ifndef MASTER_SERVICE_H
#define MASTER_SERVICE_H
#include "network.h"
enum master_service_flags {
MASTER_SERVICE_FLAG_STD_CLIENT = 0x01,
/* this process is currently running standalone without a master */
MASTER_SERVICE_FLAG_STANDALONE = 0x02,
/* Log to configured log file instead of stderr. By default when
_FLAG_STANDALONE is set, logging is done to stderr. */
/* Service is going to do multiple configuration lookups,
keep the connection to config service open. */
/* Don't read settings by executing config binary */
/* Don't read settings from environment */
/* Use MASTER_LOGIN_NOTIFY_FD to track login overflow state */
};
struct master_service_connection {
int fd;
int listen_fd;
unsigned int remote_port;
unsigned int fifo:1;
unsigned int ssl:1;
};
typedef void
extern struct master_service *master_service;
const char *master_service_getopt_string(void);
/* Start service initialization. */
struct master_service *
/* Call getopt() and handle internal parameters. Return values are the same as
getopt()'s. */
/* Parser command line option. Returns TRUE if processed. */
/* Finish service initialization. The caller should drop privileges
before calling this. */
/* Clean environment from everything except TZ, USER and optionally HOME. */
void master_service_env_clean(bool preserve_home);
/* Initialize logging. */
const char *prefix);
/* If set, die immediately when connection to master is lost.
Normally all existing clients are handled first. */
bool set);
/* Call the given when master connection dies and die_with_master is TRUE.
The callback is expected to shut down the service somewhat soon or it's
done forcibly. If NULL, the service is stopped immediately. */
void (*callback)(void));
/* Call the given callback when there are no available connections and master
has indicated that it can't create any more processes to handle requests.
The callback could decide to kill one of the existing connections. */
void (*callback)(void));
/* Set maximum number of clients we can handle. Default is given by master. */
unsigned int client_limit);
/* Returns the maximum number of clients we can handle. */
/* Set maximum number of client connections we will handle before shutting
down. */
unsigned int count);
/* Returns the number of client connections we will handle before shutting
down. The value is decreased only after connection has been closed. */
/* Return the number of listener sockets. */
/* Returns configuration file path. */
/* Returns PACKAGE_VERSION or NULL if version_ignore=yes. This function is
useful mostly as parameter to module_dir_load(). */
/* Returns name of the service, as given in name parameter to _init(). */
/* Start the service. Blocks until finished */
/* Stop a running service. */
/* Send command to anvil process, if we have fd to it. */
/* Call whenever a client connection is destroyed. */
/* Deinitialize the service. */
#endif