diff --git a/solanaceae/toxcore/tox_default_impl.cpp b/solanaceae/toxcore/tox_default_impl.cpp index f3ba921..3e17a62 100644 --- a/solanaceae/toxcore/tox_default_impl.cpp +++ b/solanaceae/toxcore/tox_default_impl.cpp @@ -285,6 +285,32 @@ Tox_Err_Friend_Custom_Packet ToxDefaultImpl::toxFriendSendLosslessPacket(uint32_ return err; } +std::vector ToxDefaultImpl::toxSelfGetDHTID(void) { + std::vector id(tox_public_key_size()); + tox_self_get_dht_id(_tox, id.data()); + return id; +} + +std::tuple, Tox_Err_Get_Port> ToxDefaultImpl::toxSelfGetUDPPort(void) { + Tox_Err_Get_Port err = TOX_ERR_GET_PORT_OK; + const auto res = tox_self_get_udp_port(_tox, &err); + if (err == TOX_ERR_GET_PORT_OK) { + return {res, err}; + } else { + return {std::nullopt, err}; + } +} + +std::tuple, Tox_Err_Get_Port> ToxDefaultImpl::toxSelfGetTCPPort(void) { + Tox_Err_Get_Port err = TOX_ERR_GET_PORT_OK; + const auto res = tox_self_get_tcp_port(_tox, &err); + if (err == TOX_ERR_GET_PORT_OK) { + return {res, err}; + } else { + return {std::nullopt, err}; + } +} + uint32_t ToxDefaultImpl::toxGroupMaxTopicLength(void) { return tox_group_max_topic_length(); } diff --git a/solanaceae/toxcore/tox_default_impl.hpp b/solanaceae/toxcore/tox_default_impl.hpp index 0da96b5..f79a8f0 100644 --- a/solanaceae/toxcore/tox_default_impl.hpp +++ b/solanaceae/toxcore/tox_default_impl.hpp @@ -59,9 +59,10 @@ struct ToxDefaultImpl : public ToxI { Tox_Err_Friend_Custom_Packet toxFriendSendLossyPacket(uint32_t friend_number, const std::vector& data) override; Tox_Err_Friend_Custom_Packet toxFriendSendLosslessPacket(uint32_t friend_number, const std::vector& data) override; - // dht - // udp - // tcp + // dht and ports + std::vector toxSelfGetDHTID(void) override; + std::tuple, Tox_Err_Get_Port> toxSelfGetUDPPort(void) override; + std::tuple, Tox_Err_Get_Port> toxSelfGetTCPPort(void) override; // group diff --git a/solanaceae/toxcore/tox_interface.hpp b/solanaceae/toxcore/tox_interface.hpp index 569dbc3..c848001 100644 --- a/solanaceae/toxcore/tox_interface.hpp +++ b/solanaceae/toxcore/tox_interface.hpp @@ -14,7 +14,7 @@ // defines the full interface for tox // HACK: raw struct ToxI_raw { - static constexpr const char* version {"7"}; + static constexpr const char* version {"8"}; virtual ~ToxI_raw(void) {} @@ -103,9 +103,10 @@ struct ToxI_raw { virtual Tox_Err_Friend_Custom_Packet toxFriendSendLossyPacket(uint32_t friend_number, const std::vector& data) = 0; virtual Tox_Err_Friend_Custom_Packet toxFriendSendLosslessPacket(uint32_t friend_number, const std::vector& data) = 0; - // dht - // udp - // tcp + // dht and ports + virtual std::vector toxSelfGetDHTID(void) = 0; + virtual std::tuple, Tox_Err_Get_Port> toxSelfGetUDPPort(void) = 0; + virtual std::tuple, Tox_Err_Get_Port> toxSelfGetTCPPort(void) = 0; // group diff --git a/solanaceae/toxcore/toxcore_enums.hpp b/solanaceae/toxcore/toxcore_enums.hpp index 86d5ebe..2d5a1fb 100644 --- a/solanaceae/toxcore/toxcore_enums.hpp +++ b/solanaceae/toxcore/toxcore_enums.hpp @@ -159,6 +159,11 @@ enum Tox_Err_Friend_Custom_Packet { TOX_ERR_FRIEND_CUSTOM_PACKET_SENDQ, }; +enum Tox_Err_Get_Port { + TOX_ERR_GET_PORT_OK, + TOX_ERR_GET_PORT_NOT_BOUND, +}; + enum Tox_Err_Group_New { TOX_ERR_GROUP_NEW_OK, TOX_ERR_GROUP_NEW_TOO_LONG,