director.h revision c4900d31385344bfadaee53a897daeafdb3063d8
#ifndef DIRECTOR_H
#define DIRECTOR_H
#include "network.h"
#include "director-settings.h"
struct director;
struct mail_host;
struct user;
struct director {
const struct director_settings *set;
unsigned int self_port;
unsigned int test_port;
struct director_host *self_host;
/* all director connections */
struct director_connection *connections;
struct timeout *to_reconnect;
/* 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;
struct timeout *to_handshake_warning;
/* director hosts are sorted by IP (and port) */
struct ipc_client *ipc_proxy;
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 sync_frozen:1;
unsigned int sync_pending: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 */
struct director_host *orig_src,
struct director_host *orig_src,
struct director_host *orig_src,
struct director_host *orig_src,
struct director_host *src,
struct director_host *orig_src,
unsigned int username_hash);
/* Send data to all directors using both left and right connections
(unless they're the same). */
const char *data);
#endif