From bacd74c4dd1fc6edaaacf580b20a9292f3322532 Mon Sep 17 00:00:00 2001 From: iphydf Date: Sat, 13 Jan 2018 19:19:20 +0000 Subject: Make TCP_Client_Connection a module-private type. --- toxcore/TCP_client.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) (limited to 'toxcore/TCP_client.c') 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 @@ #include #endif +struct TCP_Client_Connection { + TCP_CLIENT_STATUS status; + Socket sock; + uint8_t self_public_key[CRYPTO_PUBLIC_KEY_SIZE]; /* our public key */ + uint8_t public_key[CRYPTO_PUBLIC_KEY_SIZE]; /* public key of the server */ + IP_Port ip_port; /* The ip and port of the server */ + TCP_Proxy_Info proxy_info; + uint8_t recv_nonce[CRYPTO_NONCE_SIZE]; /* Nonce of received packets. */ + uint8_t sent_nonce[CRYPTO_NONCE_SIZE]; /* Nonce of sent packets. */ + uint8_t shared_key[CRYPTO_SHARED_KEY_SIZE]; + uint16_t next_packet_length; + + uint8_t temp_secret_key[CRYPTO_SECRET_KEY_SIZE]; + + uint8_t last_packet[2 + MAX_PACKET_SIZE]; + uint16_t last_packet_length; + uint16_t last_packet_sent; + + TCP_Priority_List *priority_queue_start, *priority_queue_end; + + uint64_t kill_at; + + uint64_t last_pinged; + uint64_t ping_id; + + uint64_t ping_response_id; + uint64_t ping_request_id; + + struct { + uint8_t status; /* 0 if not used, 1 if other is offline, 2 if other is online. */ + uint8_t public_key[CRYPTO_PUBLIC_KEY_SIZE]; + uint32_t number; + } connections[NUM_CLIENT_CONNECTIONS]; + int (*response_callback)(void *object, uint8_t connection_id, const uint8_t *public_key); + void *response_callback_object; + int (*status_callback)(void *object, uint32_t number, uint8_t connection_id, uint8_t status); + void *status_callback_object; + int (*data_callback)(void *object, uint32_t number, uint8_t connection_id, const uint8_t *data, uint16_t length, + void *userdata); + void *data_callback_object; + int (*oob_data_callback)(void *object, const uint8_t *public_key, const uint8_t *data, uint16_t length, void *userdata); + void *oob_data_callback_object; + + int (*onion_callback)(void *object, const uint8_t *data, uint16_t length, void *userdata); + void *onion_callback_object; + + /* Can be used by user. */ + void *custom_object; + uint32_t custom_uint; +}; + +const uint8_t *tcp_con_public_key(const TCP_Client_Connection *con) +{ + return con->public_key; +} + +IP_Port tcp_con_ip_port(const TCP_Client_Connection *con) +{ + return con->ip_port; +} + +TCP_CLIENT_STATUS tcp_con_status(const TCP_Client_Connection *con) +{ + return con->status; +} +void *tcp_con_custom_object(const TCP_Client_Connection *con) +{ + return con->custom_object; +} +uint32_t tcp_con_custom_uint(const TCP_Client_Connection *con) +{ + return con->custom_uint; +} +void tcp_con_set_custom_object(TCP_Client_Connection *con, void *object) +{ + con->custom_object = object; +} +void tcp_con_set_custom_uint(TCP_Client_Connection *con, uint32_t uint) +{ + con->custom_uint = uint; +} + /* return 1 on success * return 0 on failure */ -- cgit v1.2.3