From 144fa7ddc88d85e9fbb9716072d237289e41dc3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Mon, 28 Oct 2019 17:35:19 -0400 Subject: [PATCH] dhtrunner: allow permanent put for signed/encrypted values --- include/opendht/dhtrunner.h | 28 ++++++++++++++-------------- src/dhtrunner.cpp | 24 ++++++++++++------------ 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/include/opendht/dhtrunner.h b/include/opendht/dhtrunner.h index 1b725d71..eaf6753d 100644 --- a/include/opendht/dhtrunner.h +++ b/include/opendht/dhtrunner.h @@ -232,27 +232,27 @@ public: void cancelPut(const InfoHash& h, const Value::Id& id); - void putSigned(InfoHash hash, std::shared_ptr<Value> value, DoneCallback cb={}); - void putSigned(InfoHash hash, std::shared_ptr<Value> value, DoneCallbackSimple cb) { - putSigned(hash, value, bindDoneCb(cb)); + void putSigned(InfoHash hash, std::shared_ptr<Value> value, DoneCallback cb={}, bool permanent = false); + void putSigned(InfoHash hash, std::shared_ptr<Value> value, DoneCallbackSimple cb, bool permanent = false) { + putSigned(hash, value, bindDoneCb(cb), permanent); } - void putSigned(InfoHash hash, Value&& value, DoneCallback cb={}); - void putSigned(InfoHash hash, Value&& value, DoneCallbackSimple cb) { - putSigned(hash, std::forward<Value>(value), bindDoneCb(cb)); + void putSigned(InfoHash hash, Value&& value, DoneCallback cb={}, bool permanent = false); + void putSigned(InfoHash hash, Value&& value, DoneCallbackSimple cb, bool permanent = false) { + putSigned(hash, std::forward<Value>(value), bindDoneCb(cb), permanent); } - void putSigned(const std::string& key, Value&& value, DoneCallbackSimple cb={}); + void putSigned(const std::string& key, Value&& value, DoneCallbackSimple cb={}, bool permanent = false); - void putEncrypted(InfoHash hash, InfoHash to, std::shared_ptr<Value> value, DoneCallback cb={}); - void putEncrypted(InfoHash hash, InfoHash to, std::shared_ptr<Value> value, DoneCallbackSimple cb) { - putEncrypted(hash, to, value, bindDoneCb(cb)); + void putEncrypted(InfoHash hash, InfoHash to, std::shared_ptr<Value> value, DoneCallback cb={}, bool permanent = false); + void putEncrypted(InfoHash hash, InfoHash to, std::shared_ptr<Value> value, DoneCallbackSimple cb, bool permanent = false) { + putEncrypted(hash, to, value, bindDoneCb(cb), permanent); } - void putEncrypted(InfoHash hash, InfoHash to, Value&& value, DoneCallback cb={}); - void putEncrypted(InfoHash hash, InfoHash to, Value&& value, DoneCallbackSimple cb) { - putEncrypted(hash, to, std::forward<Value>(value), bindDoneCb(cb)); + void putEncrypted(InfoHash hash, InfoHash to, Value&& value, DoneCallback cb={}, bool permanent = false); + void putEncrypted(InfoHash hash, InfoHash to, Value&& value, DoneCallbackSimple cb, bool permanent = false) { + putEncrypted(hash, to, std::forward<Value>(value), bindDoneCb(cb), permanent); } - void putEncrypted(const std::string& key, InfoHash to, Value&& value, DoneCallback cb={}); + void putEncrypted(const std::string& key, InfoHash to, Value&& value, DoneCallback cb={}, bool permanent = false); /** * Insert known nodes to the routing table, without necessarly ping them. diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp index 98edb344..e453a0d3 100644 --- a/src/dhtrunner.cpp +++ b/src/dhtrunner.cpp @@ -720,51 +720,51 @@ DhtRunner::cancelPut(const InfoHash& h , const Value::Id& id) } void -DhtRunner::putSigned(InfoHash hash, std::shared_ptr<Value> value, DoneCallback cb) +DhtRunner::putSigned(InfoHash hash, std::shared_ptr<Value> value, DoneCallback cb, bool permanent) { { std::lock_guard<std::mutex> lck(storage_mtx); pending_ops.emplace([=](SecureDht& dht) { - dht.putSigned(hash, value, cb); + dht.putSigned(hash, value, cb, permanent); }); } cv.notify_all(); } void -DhtRunner::putSigned(InfoHash hash, Value&& value, DoneCallback cb) +DhtRunner::putSigned(InfoHash hash, Value&& value, DoneCallback cb, bool permanent) { - putSigned(hash, std::make_shared<Value>(std::move(value)), std::move(cb)); + putSigned(hash, std::make_shared<Value>(std::move(value)), std::move(cb), permanent); } void -DhtRunner::putSigned(const std::string& key, Value&& value, DoneCallbackSimple cb) +DhtRunner::putSigned(const std::string& key, Value&& value, DoneCallbackSimple cb, bool permanent) { - putSigned(InfoHash::get(key), std::forward<Value>(value), std::move(cb)); + putSigned(InfoHash::get(key), std::forward<Value>(value), std::move(cb), permanent); } void -DhtRunner::putEncrypted(InfoHash hash, InfoHash to, std::shared_ptr<Value> value, DoneCallback cb) +DhtRunner::putEncrypted(InfoHash hash, InfoHash to, std::shared_ptr<Value> value, DoneCallback cb, bool permanent) { { std::lock_guard<std::mutex> lck(storage_mtx); pending_ops.emplace([=](SecureDht& dht) { - dht.putEncrypted(hash, to, value, cb); + dht.putEncrypted(hash, to, value, cb, permanent); }); } cv.notify_all(); } void -DhtRunner::putEncrypted(InfoHash hash, InfoHash to, Value&& value, DoneCallback cb) +DhtRunner::putEncrypted(InfoHash hash, InfoHash to, Value&& value, DoneCallback cb, bool permanent) { - putEncrypted(hash, to, std::make_shared<Value>(std::move(value)), std::move(cb)); + putEncrypted(hash, to, std::make_shared<Value>(std::move(value)), std::move(cb), permanent); } void -DhtRunner::putEncrypted(const std::string& key, InfoHash to, Value&& value, DoneCallback cb) +DhtRunner::putEncrypted(const std::string& key, InfoHash to, Value&& value, DoneCallback cb, bool permanent) { - putEncrypted(InfoHash::get(key), to, std::forward<Value>(value), std::move(cb)); + putEncrypted(InfoHash::get(key), to, std::forward<Value>(value), std::move(cb), permanent); } void -- GitLab