diff --git a/c/opendht.cpp b/c/opendht.cpp index 6c5d77fcee860f5966c62a1da8bce16622ef4079..0524a72e5adcb64aabef444b6cbf810ceabd6ea7 100644 --- a/c/opendht.cpp +++ b/c/opendht.cpp @@ -95,14 +95,16 @@ int dht_publickey_pack(dht_publickey* pk, char* out, size_t* outlen) { } dht_infohash dht_publickey_get_id(const dht_publickey* pk) { + auto pkey = reinterpret_cast<const dht::crypto::PublicKey*>(pk); dht_infohash h; - *reinterpret_cast<dht::InfoHash*>(&h) = reinterpret_cast<const dht::crypto::PublicKey*>(pk)->getId(); + *reinterpret_cast<dht::InfoHash*>(&h) = pkey->getId(); return h; } dht_pkid dht_publickey_get_long_id(const dht_publickey* pk) { + auto pkey = reinterpret_cast<const dht::crypto::PublicKey*>(pk); dht_pkid h; - *reinterpret_cast<dht::PkId*>(&h) = reinterpret_cast<const dht::crypto::PublicKey*>(pk)->getLongId(); + *reinterpret_cast<dht::PkId*>(&h) = pkey->getLongId(); return h; } @@ -278,6 +280,20 @@ void dht_runner_shutdown(dht_runner* r, dht_shutdown_cb done_cb, void* cb_user_d }); } +dht_infohash dht_runner_get_node_id(const dht_runner* r) { + auto runner = reinterpret_cast<const dht::DhtRunner*>(r); + dht_infohash ret; + *reinterpret_cast<dht::InfoHash*>(&ret) = runner->getNodeId(); + return ret; +} + +dht_infohash dht_runner_get_id(const dht_runner* r) { + auto runner = reinterpret_cast<const dht::DhtRunner*>(r); + dht_infohash ret; + *reinterpret_cast<dht::InfoHash*>(&ret) = runner->getId(); + return ret; +} + #ifdef __cplusplus } #endif diff --git a/c/opendht_c.h b/c/opendht_c.h index c70bee4e4808c98b2de24ccbd839df9258685577..d142aab9c344653b05315bdefea42460c93b8925 100644 --- a/c/opendht_c.h +++ b/c/opendht_c.h @@ -135,6 +135,8 @@ OPENDHT_C_PUBLIC void dht_runner_put(dht_runner* runner, const dht_infohash* has OPENDHT_C_PUBLIC void dht_runner_put_permanent(dht_runner* runner, const dht_infohash* hash, const dht_value* value, dht_done_cb done_cb, void* cb_user_data); OPENDHT_C_PUBLIC void dht_runner_cancel_put(dht_runner* runner, const dht_infohash* hash, dht_value_id value_id); OPENDHT_C_PUBLIC void dht_runner_shutdown(dht_runner* runner, dht_shutdown_cb done_cb, void* cb_user_data); +OPENDHT_C_PUBLIC dht_infohash dht_runner_get_node_id(const dht_runner* runner); +OPENDHT_C_PUBLIC dht_infohash dht_runner_get_id(const dht_runner* runner); #ifdef __cplusplus }