diff --git a/include/opendht/dhtrunner.h b/include/opendht/dhtrunner.h index 57f060fc9f8cea09e1dbdcf784e6e0a959f640e5..6d55aecc12472cf07c8168de237e31303b0785f1 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<size_t> token); - void put(InfoHash hash, Value&& value, Dht::DoneCallback cb=nullptr); - void put(InfoHash hash, const std::shared_ptr<Value>&, Dht::DoneCallback cb=nullptr); + void put(InfoHash hash, std::shared_ptr<Value> value, Dht::DoneCallback cb={}); + void put(InfoHash hash, std::shared_ptr<Value> 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>(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> value, Dht::DoneCallback cb={}); + void putSigned(InfoHash hash, std::shared_ptr<Value> 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>(value), Dht::bindDoneCb(cb)); } + void putSigned(const std::string& key, Value&& value, Dht::DoneCallbackSimple cb={}); + + void putEncrypted(InfoHash hash, InfoHash to, std::shared_ptr<Value> value, Dht::DoneCallback cb={}); + void putEncrypted(InfoHash hash, InfoHash to, std::shared_ptr<Value> value, Dht::DoneCallbackSimple cb) { + putEncrypted(hash, to, value, Dht::bindDoneCb(cb)); + } - void putEncrypted(InfoHash hash, InfoHash to, Value&& value, Dht::DoneCallback cb=nullptr); + 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>(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<std::pair<sockaddr_storage, socklen_t>>& nodes); diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp index 52f6b65df6954a38ee8b400c5137c53be2606fae..b836c3ff8c6438e0b7bf21ef6eed741e50150cc7 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>& value, Dht::DoneCallback cb) +DhtRunner::put(InfoHash hash, std::shared_ptr<Value> value, Dht::DoneCallback cb) { std::lock_guard<std::mutex> 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> value, Dht::DoneCallback cb) { std::lock_guard<std::mutex> lck(storage_mtx); - auto sv = std::make_shared<Value>(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<Value>(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> value, Dht::DoneCallback cb) { - std::lock_guard<std::mutex> lck(storage_mtx); - auto sv = std::make_shared<Value>(std::move(value)); + std::lock_guard<std::mutex> 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<Value>(std::move(value)), cb); +} + void DhtRunner::putEncrypted(const std::string& key, InfoHash to, Value&& value, Dht::DoneCallback cb) {