client.h revision 7753eaa6a4275e074b4ce8428b85d9d04fc67f31
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen#ifndef CLIENT_H
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen#define CLIENT_H
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen#include "network.h"
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen#include "master.h"
e074ffeaee1ce283bd42f167c6810e3d013f8218Timo Sirainen#include "client-common.h"
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainenstruct imap_client {
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen struct client common;
08f24237ccc177f5b3a09b24d8a725fa47e1ee32Timo Sirainen
08f24237ccc177f5b3a09b24d8a725fa47e1ee32Timo Sirainen time_t created;
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen int refcount;
35565557e05721a761132cec2ba1d93acacb6c14Timo Sirainen
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen struct io *io;
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen struct ostream *output;
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen struct imap_parser *parser;
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen struct timeout *to_idle_disconnect, *to_auth_waiting;
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen struct login_proxy *proxy;
797de45dcf6e24642ab347d5033beb92034b779dTimo Sirainen char *proxy_user, *proxy_password;
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen unsigned int bad_counter;
35565557e05721a761132cec2ba1d93acacb6c14Timo Sirainen
dba5754de32284b3149ddd5c9bb1701b05707752Timo Sirainen const char *cmd_tag, *cmd_name;
dba5754de32284b3149ddd5c9bb1701b05707752Timo Sirainen
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen unsigned int login_success:1;
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen unsigned int cmd_finished:1;
dac0b2e5e0f38c6d95ef1a842d891480db580236Timo Sirainen unsigned int proxy_login_sent:1;
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen unsigned int skip_line:1;
797de45dcf6e24642ab347d5033beb92034b779dTimo Sirainen unsigned int input_blocked:1;
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen unsigned int destroyed:1;
dcc76bb1e1bb287e3e71e6a39a7ca207fab0eaa8Timo Sirainen unsigned int greeting_sent:1;
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen unsigned int id_logged:1;
dac0b2e5e0f38c6d95ef1a842d891480db580236Timo Sirainen};
dac0b2e5e0f38c6d95ef1a842d891480db580236Timo Sirainen
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainenvoid client_destroy(struct imap_client *client, const char *reason);
dac0b2e5e0f38c6d95ef1a842d891480db580236Timo Sirainenvoid client_destroy_success(struct imap_client *client, const char *reason);
717a444a466280a84a468220f647fdcb9f3b546fTimo Sirainenvoid client_destroy_internal_failure(struct imap_client *client);
717a444a466280a84a468220f647fdcb9f3b546fTimo Sirainen
717a444a466280a84a468220f647fdcb9f3b546fTimo Sirainenvoid client_send_line(struct imap_client *client, const char *line);
717a444a466280a84a468220f647fdcb9f3b546fTimo Sirainenvoid client_send_tagline(struct imap_client *client, const char *line);
717a444a466280a84a468220f647fdcb9f3b546fTimo Sirainen
717a444a466280a84a468220f647fdcb9f3b546fTimo Sirainenbool client_read(struct imap_client *client);
717a444a466280a84a468220f647fdcb9f3b546fTimo Sirainenbool client_skip_line(struct imap_client *client);
717a444a466280a84a468220f647fdcb9f3b546fTimo Sirainenvoid client_input(struct imap_client *client);
08f24237ccc177f5b3a09b24d8a725fa47e1ee32Timo Sirainen
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainenvoid client_ref(struct imap_client *client);
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainenbool client_unref(struct imap_client *client);
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainen
c014f12e8268bf37ca2997e632ad7c22b8d04a84Timo Sirainenvoid client_set_auth_waiting(struct imap_client *client);
797de45dcf6e24642ab347d5033beb92034b779dTimo Sirainen
720692523ece4a549f7c589508d5693ee310f6b3Timo Sirainen#endif
720692523ece4a549f7c589508d5693ee310f6b3Timo Sirainen