22#include "log_enable.h"
36 DhtInterface(
const std::shared_ptr<Logger>& l) : logger_(l) {};
48 virtual NodeStatus getStatus(sa_family_t af)
const = 0;
51 void addOnConnectedCallback(std::function<
void()> cb) {
52 onConnectCallbacks_.emplace(std::move(cb));
55 virtual net::DatagramSocket* getSocket()
const {
return {}; };
67 virtual void shutdown(ShutdownCallback cb,
bool stop =
false) = 0;
75 virtual bool isRunning(sa_family_t af = 0)
const = 0;
77 virtual void registerType(
const ValueType& type) = 0;
79 virtual const ValueType& getType(ValueType::Id type_id)
const = 0;
81 virtual void addBootstrap(
const std::string& ,
const std::string& ) {};
82 virtual void clearBootstrap() {};
90 virtual void insertNode(
const NodeExport& n) = 0;
92 virtual void pingNode(
SockAddr, DoneCallbackSimple&& cb={}) = 0;
94 virtual time_point periodic(
const uint8_t *buf,
size_t buflen,
SockAddr,
const time_point& now) = 0;
95 virtual time_point periodic(
const uint8_t *buf,
size_t buflen,
const sockaddr* from, socklen_t fromlen,
const time_point& now) = 0;
108 virtual void get(
const InfoHash& key, GetCallback cb, DoneCallbackSimple donecb={}, Value::Filter&& f={}, Where&& w = {}) = 0;
109 virtual void get(
const InfoHash& key, GetCallbackSimple cb, DoneCallback donecb={}, Value::Filter&& f={}, Where&& w = {}) = 0;
110 virtual void get(
const InfoHash& key, GetCallbackSimple cb, DoneCallbackSimple donecb, Value::Filter&& f={}, Where&& w = {}) = 0;
122 virtual void query(
const InfoHash& key, QueryCallback cb, DoneCallback done_cb = {},
Query&& q = {}) = 0;
123 virtual void query(
const InfoHash& key, QueryCallback cb, DoneCallbackSimple done_cb = {}, Query&& q = {}) = 0;
143 DoneCallback cb=
nullptr,
144 time_point created=time_point::max(),
145 bool permanent =
false) = 0;
146 virtual void put(
const InfoHash& key,
148 DoneCallbackSimple cb,
149 time_point created=time_point::max(),
150 bool permanent =
false) = 0;
151 virtual void put(
const InfoHash& key,
153 DoneCallback cb=
nullptr,
154 time_point created=time_point::max(),
155 bool permanent =
false) = 0;
156 virtual void put(
const InfoHash& key,
158 DoneCallbackSimple cb,
159 time_point created=time_point::max(),
160 bool permanent =
false) = 0;
186 virtual size_t listen(
const InfoHash& key, GetCallbackSimple cb, Value::Filter f={}, Where w = {}) = 0;
187 virtual size_t listen(
const InfoHash&, ValueCallback, Value::Filter={}, Where w = {}) = 0;
189 virtual bool cancelListen(
const InfoHash&,
size_t token) = 0;
197 virtual void connectivityChanged() = 0;
205 virtual std::vector<ValuesExport> exportValues()
const = 0;
206 virtual void importValues(
const std::vector<ValuesExport>&) = 0;
208 virtual NodeStats getNodesStats(sa_family_t af)
const = 0;
210 virtual std::string getStorageLog()
const = 0;
211 virtual std::string getStorageLog(
const InfoHash&)
const = 0;
213 virtual std::string getRoutingTablesLog(sa_family_t)
const = 0;
214 virtual std::string getSearchesLog(sa_family_t)
const = 0;
215 virtual std::string getSearchLog(
const InfoHash&, sa_family_t af = AF_UNSPEC)
const = 0;
217 virtual void dumpTables()
const = 0;
218 virtual std::vector<unsigned> getNodeMessageStats(
bool in =
false) = 0;
224 virtual size_t getStorageLimit()
const = 0;
232 virtual std::vector<SockAddr> getPublicAddress(sa_family_t family = 0) = 0;
239 logger_->DBG = std::move(debug);
240 logger_->WARN = std::move(warn);
241 logger_->ERR = std::move(error);
243 logger_= std::make_shared<Logger>(std::move(error), std::move(warn), std::move(debug));
246 virtual void setLogger(
const Logger& l) {
250 logger_= std::make_shared<Logger>(l);
253 virtual void setLogger(
const std::shared_ptr<Logger>& l) {
263 logger_->setFilter(f);
266 virtual void setPushNotificationToken(
const std::string&) {};
275 std::shared_ptr<Logger> logger_ {};
276 std::queue<std::function<void()>> onConnectCallbacks_ {};
virtual void insertNode(const InfoHash &id, const SockAddr &)=0
virtual Sp< Value > getPut(const InfoHash &, const Value::Id &) const =0
virtual std::vector< Sp< Value > > getLocal(const InfoHash &key, const Value::Filter &f={}) const =0
virtual void get(const InfoHash &key, GetCallback cb, DoneCallback donecb={}, Value::Filter &&f={}, Where &&w={})=0
virtual std::vector< Sp< Value > > getPut(const InfoHash &) const =0
virtual void setLoggers(LogMethod error={}, LogMethod warn={}, LogMethod debug={})
virtual void setLogFilter(const InfoHash &f)
virtual void put(const InfoHash &key, Sp< Value >, DoneCallback cb=nullptr, time_point created=time_point::max(), bool permanent=false)=0
virtual void connectivityChanged(sa_family_t)=0
virtual void query(const InfoHash &key, QueryCallback cb, DoneCallback done_cb={}, Query &&q={})=0
virtual void setStorageLimit(size_t limit=DEFAULT_STORAGE_LIMIT)=0
virtual bool isRunning(sa_family_t af=0) const =0
virtual void shutdown(ShutdownCallback cb, bool stop=false)=0
virtual Sp< Value > getLocalById(const InfoHash &key, Value::Id vid) const =0
virtual size_t listen(const InfoHash &, GetCallback, Value::Filter={}, Where w={})=0
virtual const InfoHash & getNodeId() const =0
virtual std::pair< size_t, size_t > getStoreSize() const =0
virtual NodeStatus updateStatus(sa_family_t af)
virtual void pushNotificationReceived(const std::map< std::string, std::string > &data)=0
virtual std::vector< NodeExport > exportNodes() const =0
virtual bool cancelPut(const InfoHash &, const Value::Id &)=0
Describes a query destined to another peer.
Serializable dht::Value filter.