From 2a72277194ddc52ad7df8897b400c7b825f813b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Mon, 21 Oct 2019 14:19:29 -0400
Subject: [PATCH] c wrapper: add dht_runner_get_id, get_node_id

---
 c/opendht.cpp | 20 ++++++++++++++++++--
 c/opendht_c.h |  2 ++
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/c/opendht.cpp b/c/opendht.cpp
index 6c5d77fc..0524a72e 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 c70bee4e..d142aab9 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
 }
-- 
GitLab