summaryrefslogtreecommitdiff
path: root/protocols/Telegram/src/t_network.h
blob: 3859f562e49116f0caa8a2800828aa1a04dfcd62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
enum conn_state {
	conn_none,
	conn_connecting,
	conn_ready,
	conn_failed,
	conn_stopped
};

struct connection : public MZeroedObject
{
	char *ip;
	int port;
	int flags;
	enum conn_state state;
	struct mtproto_methods *methods;
	struct tgl_state *TLS;
	struct tgl_session *session;
	struct tgl_dc *dc;
	void *extra;
	double last_receive_time;
	HANDLE hNetlibConn;
	HANDLE ping_timer;
	HANDLE in_fail_timer;

	struct connection_buffer *in_head;
	struct connection_buffer *in_tail;
	struct connection_buffer *out_head;
	struct connection_buffer *out_tail;

	int in_bytes;
	int out_bytes;
	int packet_num;
	int out_packet_num;


	HANDLE ping_ev, fail_ev, write_ev, read_ev;

	time_t last_connect_time;

};

struct connection_buffer {
	unsigned char *start;
	unsigned char *end;
	unsigned char *rptr;
	unsigned char *wptr;
	struct connection_buffer *next;
};