summaryrefslogtreecommitdiff
path: root/toxcore/TCP_client.c
diff options
context:
space:
mode:
authoriphydf <iphydf@users.noreply.github.com>2018-01-13 19:19:20 +0000
committeriphydf <iphydf@users.noreply.github.com>2018-01-14 19:13:32 +0000
commitbacd74c4dd1fc6edaaacf580b20a9292f3322532 (patch)
tree546a9fe5d7eca634410236038db1e7995974d7c5 /toxcore/TCP_client.c
parent7aca413e3231dfcfa7bc484bc44319c6780a4fc7 (diff)
Make TCP_Client_Connection a module-private type.
Diffstat (limited to 'toxcore/TCP_client.c')
-rw-r--r--toxcore/TCP_client.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/toxcore/TCP_client.c b/toxcore/TCP_client.c
index 8a14c7cd..6e6e6b7b 100644
--- a/toxcore/TCP_client.c
+++ b/toxcore/TCP_client.c
@@ -33,6 +33,88 @@
33#include <sys/ioctl.h> 33#include <sys/ioctl.h>
34#endif 34#endif
35 35
36struct TCP_Client_Connection {
37 TCP_CLIENT_STATUS status;
38 Socket sock;
39 uint8_t self_public_key[CRYPTO_PUBLIC_KEY_SIZE]; /* our public key */
40 uint8_t public_key[CRYPTO_PUBLIC_KEY_SIZE]; /* public key of the server */
41 IP_Port ip_port; /* The ip and port of the server */
42 TCP_Proxy_Info proxy_info;
43 uint8_t recv_nonce[CRYPTO_NONCE_SIZE]; /* Nonce of received packets. */
44 uint8_t sent_nonce[CRYPTO_NONCE_SIZE]; /* Nonce of sent packets. */
45 uint8_t shared_key[CRYPTO_SHARED_KEY_SIZE];
46 uint16_t next_packet_length;
47
48 uint8_t temp_secret_key[CRYPTO_SECRET_KEY_SIZE];
49
50 uint8_t last_packet[2 + MAX_PACKET_SIZE];
51 uint16_t last_packet_length;
52 uint16_t last_packet_sent;
53
54 TCP_Priority_List *priority_queue_start, *priority_queue_end;
55
56 uint64_t kill_at;
57
58 uint64_t last_pinged;
59 uint64_t ping_id;
60
61 uint64_t ping_response_id;
62 uint64_t ping_request_id;
63
64 struct {
65 uint8_t status; /* 0 if not used, 1 if other is offline, 2 if other is online. */
66 uint8_t public_key[CRYPTO_PUBLIC_KEY_SIZE];
67 uint32_t number;
68 } connections[NUM_CLIENT_CONNECTIONS];
69 int (*response_callback)(void *object, uint8_t connection_id, const uint8_t *public_key);
70 void *response_callback_object;
71 int (*status_callback)(void *object, uint32_t number, uint8_t connection_id, uint8_t status);
72 void *status_callback_object;
73 int (*data_callback)(void *object, uint32_t number, uint8_t connection_id, const uint8_t *data, uint16_t length,
74 void *userdata);
75 void *data_callback_object;
76 int (*oob_data_callback)(void *object, const uint8_t *public_key, const uint8_t *data, uint16_t length, void *userdata);
77 void *oob_data_callback_object;
78
79 int (*onion_callback)(void *object, const uint8_t *data, uint16_t length, void *userdata);
80 void *onion_callback_object;
81
82 /* Can be used by user. */
83 void *custom_object;
84 uint32_t custom_uint;
85};
86
87const uint8_t *tcp_con_public_key(const TCP_Client_Connection *con)
88{
89 return con->public_key;
90}
91
92IP_Port tcp_con_ip_port(const TCP_Client_Connection *con)
93{
94 return con->ip_port;
95}
96
97TCP_CLIENT_STATUS tcp_con_status(const TCP_Client_Connection *con)
98{
99 return con->status;
100}
101void *tcp_con_custom_object(const TCP_Client_Connection *con)
102{
103 return con->custom_object;
104}
105uint32_t tcp_con_custom_uint(const TCP_Client_Connection *con)
106{
107 return con->custom_uint;
108}
109void tcp_con_set_custom_object(TCP_Client_Connection *con, void *object)
110{
111 con->custom_object = object;
112}
113void tcp_con_set_custom_uint(TCP_Client_Connection *con, uint32_t uint)
114{
115 con->custom_uint = uint;
116}
117
36/* return 1 on success 118/* return 1 on success
37 * return 0 on failure 119 * return 0 on failure
38 */ 120 */