diff --git a/include/opendht/dhtrunner.h b/include/opendht/dhtrunner.h index 1b725d7115851a113fbc5d2107d880b3fd74cce1..eaf6753dc2cae4f47cf8454ab283ef576383e957 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 98edb344602505fcaf4d1a44dbdda9daa8ad99d6..e453a0d36cdd0b263a4132c01200e8b094cc4b2e 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