diff options
author | George Hazan <ghazan@miranda.im> | 2022-07-24 16:44:24 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2022-07-24 16:44:24 +0300 |
commit | e55d071e5485a937efd427d159b76c208cccdcce (patch) | |
tree | 48d09dc5cf1df2581fd6471b5ccf1560015fa3a4 /protocols/Tox/libtox/src/toxcore/tox_private.h | |
parent | f36629f67153bc500c828cf51de31988122a1024 (diff) |
fixes #3118 (Update toxcore to 0.2.18)
Diffstat (limited to 'protocols/Tox/libtox/src/toxcore/tox_private.h')
-rw-r--r-- | protocols/Tox/libtox/src/toxcore/tox_private.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/protocols/Tox/libtox/src/toxcore/tox_private.h b/protocols/Tox/libtox/src/toxcore/tox_private.h index 593282f7c8..71d7a97601 100644 --- a/protocols/Tox/libtox/src/toxcore/tox_private.h +++ b/protocols/Tox/libtox/src/toxcore/tox_private.h @@ -10,10 +10,26 @@ #include <stddef.h> #include <stdint.h> +#include "tox.h" + #ifdef __cplusplus extern "C" { #endif +typedef uint64_t tox_mono_time_cb(void *user_data); + +struct Tox_System { + tox_mono_time_cb *mono_time_callback; + void *mono_time_user_data; + const struct Random *rng; + const struct Network *ns; +}; + +Tox_System tox_default_system(void); + +void tox_lock(const Tox *tox); +void tox_unlock(const Tox *tox); + /** * Set the callback for the `friend_lossy_packet` event for a specific packet ID. * Pass NULL to unset. @@ -37,6 +53,92 @@ void tox_callback_friend_lossless_packet_per_pktid(Tox *tox, tox_friend_lossless void tox_set_av_object(Tox *tox, void *object); void *tox_get_av_object(const Tox *tox); + +/******************************************************************************* + * + * :: DHT network queries. + * + ******************************************************************************/ + +/** + * The minimum size of an IP string buffer in bytes. + */ +#define TOX_DHT_NODE_IP_STRING_SIZE 96 + +uint32_t tox_dht_node_ip_string_size(void); + +/** + * The size of a DHT node public key in bytes. + */ +#define TOX_DHT_NODE_PUBLIC_KEY_SIZE 32 + +uint32_t tox_dht_node_public_key_size(void); + +/** + * @param public_key The node's public key. + * @param ip The node's IP address, represented as a null terminated string. + * @param port The node's port. + */ +typedef void tox_dht_get_nodes_response_cb(Tox *tox, const uint8_t *public_key, const char *ip, uint16_t port, + void *user_data); + + +/** + * Set the callback for the `dht_get_nodes_response` event. Pass NULL to unset. + * + * This event is triggered when a getnodes response is received from a DHT peer. + */ +void tox_callback_dht_get_nodes_response(Tox *tox, tox_dht_get_nodes_response_cb *callback); + + +typedef enum Tox_Err_Dht_Get_Nodes { + /** + * The function returned successfully. + */ + TOX_ERR_DHT_GET_NODES_OK, + + /** + * UDP is disabled in tox options; the DHT can only be queried when UDP is enabled. + */ + TOX_ERR_DHT_GET_NODES_UDP_DISABLED, + + /** + * One of the arguments to the function was NULL when it was not expected. + */ + TOX_ERR_DHT_GET_NODES_NULL, + + /** + * The supplied port is invalid. + */ + TOX_ERR_DHT_GET_NODES_BAD_PORT, + + /** + * The supplied IP address is invalid. + */ + TOX_ERR_DHT_GET_NODES_BAD_IP, + + /** + * The getnodes request failed. This usually means the packet failed to send. + */ + TOX_ERR_DHT_GET_NODES_FAIL, +} Tox_Err_Dht_Get_Nodes; + +/** + * This function sends a getnodes request to a DHT node for its peers that + * are "close" to the passed target public key according to the distance metric used + * by the DHT implementation. + * + * @param public_key The public key of the node that we wish to query. This key must be + * at least `TOX_DHT_NODE_PUBLIC_KEY_SIZE` bytes in length. + * @param ip A NULL terminated string representing the IP address of the node we wish to query. + * @param port The port of the node we wish to query. + * @param target_public_key The public key for which we want to find close nodes. + * + * @return true on success. + */ +bool tox_dht_get_nodes(const Tox *tox, const uint8_t *public_key, const char *ip, uint16_t port, + const uint8_t *target_public_key, Tox_Err_Dht_Get_Nodes *error); + #ifdef __cplusplus } #endif |