diff --git a/include/opendht/dht.h b/include/opendht/dht.h index d294404be969998efb6e6dccb4218ba931a5bc17..a49892beff5ad42c610a70506926b8f7e4076119 100644 --- a/include/opendht/dht.h +++ b/include/opendht/dht.h @@ -137,15 +137,15 @@ public: cb and donecb won't be called again afterward. * @param f a filter function used to prefilter values. */ - void get(const InfoHash& key, GetCallback cb, DoneCallback donecb=nullptr, Value::Filter f = Value::AllFilter()); - void get(const InfoHash& key, GetCallback cb, DoneCallbackSimple donecb, Value::Filter f = Value::AllFilter()) { - get(key, cb, bindDoneCb(donecb), f); + virtual void get(const InfoHash& key, GetCallback cb, DoneCallback donecb={}, Value::Filter&& f={}); + virtual void get(const InfoHash& key, GetCallback cb, DoneCallbackSimple donecb={}, Value::Filter&& f={}) { + get(key, cb, bindDoneCb(donecb), std::forward<Value::Filter>(f)); } - void get(const InfoHash& key, GetCallbackSimple cb, DoneCallback donecb=nullptr, Value::Filter f = Value::AllFilter()) { - get(key, bindGetCb(cb), donecb, f); + void get(const InfoHash& key, GetCallbackSimple cb, DoneCallback donecb={}, Value::Filter&& f={}) { + get(key, bindGetCb(cb), donecb, std::forward<Value::Filter>(f)); } - void get(const InfoHash& key, GetCallbackSimple cb, DoneCallbackSimple donecb, Value::Filter f = Value::AllFilter()) { - get(key, bindGetCb(cb), bindDoneCb(donecb), f); + void get(const InfoHash& key, GetCallbackSimple cb, DoneCallbackSimple donecb, Value::Filter&& f={}) { + get(key, bindGetCb(cb), bindDoneCb(donecb), std::forward<Value::Filter>(f)); } /** @@ -203,9 +203,9 @@ public: * * @return a token to cancel the listener later. */ - size_t listen(const InfoHash&, GetCallback, Value::Filter = Value::AllFilter()); - size_t listen(const InfoHash& key, GetCallbackSimple cb, Value::Filter f = Value::AllFilter()) { - return listen(key, bindGetCb(cb), f); + virtual size_t listen(const InfoHash&, GetCallback, Value::Filter&&={}); + virtual size_t listen(const InfoHash& key, GetCallbackSimple cb, Value::Filter f={}) { + return listen(key, bindGetCb(cb), std::forward<Value::Filter>(f)); } bool cancelListen(const InfoHash&, size_t token); diff --git a/include/opendht/securedht.h b/include/opendht/securedht.h index 9496ab775c5e429b57a3e42d3b243325a758ce39..b5dd7774de5db6393c59b453952b94f4b3f1152f 100644 --- a/include/opendht/securedht.h +++ b/include/opendht/securedht.h @@ -85,12 +85,12 @@ public: * If the signature can't be checked, or if the data can't be decrypted, it is not returned. * Public, non-signed & non-encrypted data is retransmitted as-is. */ - void get(const InfoHash& id, GetCallback cb, DoneCallback donecb, Value::Filter&& = {}); - void get(const InfoHash& id, GetCallback cb, DoneCallbackSimple donecb, Value::Filter&& f = {}) { + virtual void get(const InfoHash& id, GetCallback cb, DoneCallback donecb={}, Value::Filter&& = {}) override; + virtual void get(const InfoHash& id, GetCallback cb, DoneCallbackSimple donecb={}, Value::Filter&& f = {}) override { get(id, cb, bindDoneCb(donecb), std::forward<Value::Filter>(f)); } - size_t listen(const InfoHash& id, GetCallback cb, Value::Filter&& = {}); + virtual size_t listen(const InfoHash& id, GetCallback cb, Value::Filter&& = {}) override; /** * Will take ownership of the value, sign it using our private key and put it in the DHT. diff --git a/src/dht.cpp b/src/dht.cpp index 46ad883db6ec4af82a01cc58d78b654a4f610eb7..702e32ce13737e970ac9002361c5dce78a09f453 100644 --- a/src/dht.cpp +++ b/src/dht.cpp @@ -1063,7 +1063,7 @@ Dht::listenTo(const InfoHash& id, sa_family_t af, GetCallback cb, Value::Filter } size_t -Dht::listen(const InfoHash& id, GetCallback cb, Value::Filter f) +Dht::listen(const InfoHash& id, GetCallback cb, Value::Filter&& f) { scheduler.syncTime(); @@ -1200,7 +1200,7 @@ struct OpStatus { }; void -Dht::get(const InfoHash& id, GetCallback getcb, DoneCallback donecb, Value::Filter filter) +Dht::get(const InfoHash& id, GetCallback getcb, DoneCallback donecb, Value::Filter&& filter) { scheduler.syncTime();