imap-client.h revision 5ef28f68edef46f69961b19b7c1dcd8ec5a955e8
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen#ifndef IMAP_CLIENT_H
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen#define IMAP_CLIENT_H
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen#include "net.h"
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainenstruct imap_client_state {
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen /* required: */
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen const char *username, *mail_log_prefix;
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen /* optional: */
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen const char *session_id, *userdb_fields, *stats;
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen struct ip_addr local_ip, remote_ip;
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen uid_t uid;
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen gid_t gid;
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen struct ip_addr peer_ip;
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen unsigned int peer_port;
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen const unsigned char *state;
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen size_t state_size;
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen unsigned int imap_idle_notify_interval;
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen bool idle_cmd;
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen bool have_notify_fd;
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen};
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainenstruct imap_client *
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainenimap_client_create(int fd, const struct imap_client_state *state);
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainenvoid imap_client_add_notify_fd(struct imap_client *client, int fd);
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainenvoid imap_client_create_finish(struct imap_client *client);
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainenvoid imap_client_destroy(struct imap_client **_client, const char *reason);
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainenvoid imap_clients_deinit(void);
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen
5ef28f68edef46f69961b19b7c1dcd8ec5a955e8Timo Sirainen#endif