diff --git a/include/opendht/dhtrunner.h b/include/opendht/dhtrunner.h index 57f060fc..6d55aecc 100644 --- a/include/opendht/dhtrunner.h +++ b/include/opendht/dhtrunner.h @@ -149,26 +149,40 @@ public: void cancelListen(InfoHash h, size_t token); void cancelListen(InfoHash h, std::shared_future token); - void put(InfoHash hash, Value&& value, Dht::DoneCallback cb=nullptr); - void put(InfoHash hash, const std::shared_ptr&, Dht::DoneCallback cb=nullptr); + void put(InfoHash hash, std::shared_ptr value, Dht::DoneCallback cb={}); + void put(InfoHash hash, std::shared_ptr value, Dht::DoneCallbackSimple cb) { + put(hash, value, Dht::bindDoneCb(cb)); + } + + void put(InfoHash hash, Value&& value, Dht::DoneCallback cb={}); void put(InfoHash hash, Value&& value, Dht::DoneCallbackSimple cb) { put(hash, std::forward(value), Dht::bindDoneCb(cb)); } - void put(const std::string& key, Value&& value, Dht::DoneCallbackSimple cb=nullptr); + void put(const std::string& key, Value&& value, Dht::DoneCallbackSimple cb={}); void cancelPut(const InfoHash& h, const Value::Id& id); - void putSigned(InfoHash hash, Value&& value, Dht::DoneCallback cb=nullptr); - void putSigned(const std::string& key, Value&& value, Dht::DoneCallbackSimple cb=nullptr); + void putSigned(InfoHash hash, std::shared_ptr value, Dht::DoneCallback cb={}); + void putSigned(InfoHash hash, std::shared_ptr value, Dht::DoneCallbackSimple cb) { + putSigned(hash, value, Dht::bindDoneCb(cb)); + } + + void putSigned(InfoHash hash, Value&& value, Dht::DoneCallback cb={}); void putSigned(InfoHash hash, Value&& value, Dht::DoneCallbackSimple cb) { putSigned(hash, std::forward(value), Dht::bindDoneCb(cb)); } + void putSigned(const std::string& key, Value&& value, Dht::DoneCallbackSimple cb={}); - void putEncrypted(InfoHash hash, InfoHash to, Value&& value, Dht::DoneCallback cb=nullptr); + void putEncrypted(InfoHash hash, InfoHash to, std::shared_ptr value, Dht::DoneCallback cb={}); + void putEncrypted(InfoHash hash, InfoHash to, std::shared_ptr value, Dht::DoneCallbackSimple cb) { + putEncrypted(hash, to, value, Dht::bindDoneCb(cb)); + } + + void putEncrypted(InfoHash hash, InfoHash to, Value&& value, Dht::DoneCallback cb={}); void putEncrypted(InfoHash hash, InfoHash to, Value&& value, Dht::DoneCallbackSimple cb) { putEncrypted(hash, to, std::forward(value), Dht::bindDoneCb(cb)); } - void putEncrypted(const std::string& key, InfoHash to, Value&& value, Dht::DoneCallback cb=nullptr); + void putEncrypted(const std::string& key, InfoHash to, Value&& value, Dht::DoneCallback cb={}); void bootstrap(const char* host, const char* service); void bootstrap(const std::vector>& nodes); diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp index 52f6b65d..b836c3ff 100644 --- a/src/dhtrunner.cpp +++ b/src/dhtrunner.cpp @@ -359,7 +359,7 @@ DhtRunner::put(InfoHash hash, Value&& value, Dht::DoneCallback cb) } void -DhtRunner::put(InfoHash hash, const std::shared_ptr& value, Dht::DoneCallback cb) +DhtRunner::put(InfoHash hash, std::shared_ptr value, Dht::DoneCallback cb) { std::lock_guard lck(storage_mtx); pending_ops.emplace([=](SecureDht& dht) { @@ -385,16 +385,21 @@ DhtRunner::cancelPut(const InfoHash& h , const Value::Id& id) } void -DhtRunner::putSigned(InfoHash hash, Value&& value, Dht::DoneCallback cb) +DhtRunner::putSigned(InfoHash hash, std::shared_ptr value, Dht::DoneCallback cb) { std::lock_guard lck(storage_mtx); - auto sv = std::make_shared(std::move(value)); pending_ops.emplace([=](SecureDht& dht) { - dht.putSigned(hash, sv, cb); + dht.putSigned(hash, value, cb); }); cv.notify_all(); } +void +DhtRunner::putSigned(InfoHash hash, Value&& value, Dht::DoneCallback cb) +{ + putSigned(hash, std::make_shared(std::move(value)), cb); +} + void DhtRunner::putSigned(const std::string& key, Value&& value, Dht::DoneCallbackSimple cb) { @@ -402,16 +407,21 @@ DhtRunner::putSigned(const std::string& key, Value&& value, Dht::DoneCallbackSim } void -DhtRunner::putEncrypted(InfoHash hash, InfoHash to, Value&& value, Dht::DoneCallback cb) +DhtRunner::putEncrypted(InfoHash hash, InfoHash to, std::shared_ptr value, Dht::DoneCallback cb) { - std::lock_guard lck(storage_mtx); - auto sv = std::make_shared(std::move(value)); + std::lock_guard lck(storage_mtx); pending_ops.emplace([=](SecureDht& dht) { - dht.putEncrypted(hash, to, sv, cb); + dht.putEncrypted(hash, to, value, cb); }); cv.notify_all(); } +void +DhtRunner::putEncrypted(InfoHash hash, InfoHash to, Value&& value, Dht::DoneCallback cb) +{ + putEncrypted(hash, to, std::make_shared(std::move(value)), cb); +} + void DhtRunner::putEncrypted(const std::string& key, InfoHash to, Value&& value, Dht::DoneCallback cb) {