director.h revision 242abe3ad2423776e9cf05e1304eb8fda4831b23
#ifndef DIRECTOR_H
#define DIRECTOR_H
#include "network.h"
#include "director-settings.h"
struct director;
struct mail_host;
struct user;
struct director_host_change {
because by the time its sync comes, the director itself may have
already been removed. */
unsigned int port;
/* highest change sequence from this director */
unsigned int seq;
};
struct director {
const struct director_settings *set;
unsigned int self_port;
unsigned int test_port;
struct director_host *self_host;
/* current mail hosts */
struct mail_host_list *mail_hosts;
/* original mail hosts configured in config file.
this is used only for doveadm lookups */
struct mail_host_list *orig_config_hosts;
/* temporary user -> host associations */
struct user_directory *users;
/* these requests are waiting for directors to be in synced */
struct timeout *to_request;
/* director hosts are sorted by IP (and port) */
unsigned int sync_seq;
/* director ring handshaking is complete.
director can start serving clients. */
unsigned int ring_handshaked:1;
unsigned int ring_handshake_warning_sent:1;
unsigned int ring_synced:1;
unsigned int debug:1;
};
/* Create a new director. If listen_ip specifies an actual IP, it's used with
listen_port for finding ourself from the director_servers setting.
listen_port is used regardless by director_host_add_from_string() for hosts
without specified port. */
struct director *
/* Start connecting to other directors */
/* Send data to all directors using both left and right connections
(unless they're the same). */
const char *data);
#endif