17class OPENDHT_PUBLIC DhtInterface
20 DhtInterface() =
default;
21 DhtInterface(
const std::shared_ptr<Logger>& l)
24 virtual ~DhtInterface() =
default;
35 virtual NodeStatus getStatus(sa_family_t af)
const = 0;
38 void addOnConnectedCallback(std::function<
void()> cb) { onConnectCallbacks_.emplace(std::move(cb)); }
39 virtual void setOnPublicAddressChanged(PublicAddressChangedCb) {}
41 virtual net::DatagramSocket* getSocket()
const {
return {}; }
53 virtual void shutdown(ShutdownCallback cb,
bool stop =
false) = 0;
61 virtual bool isRunning(sa_family_t af = 0)
const = 0;
63 virtual void registerType(
const ValueType& type) = 0;
65 virtual const ValueType& getType(ValueType::Id type_id)
const = 0;
67 virtual void addBootstrap(
const std::string& ,
const std::string& ) {};
68 virtual void clearBootstrap() {};
76 virtual void insertNode(
const NodeExport& n) = 0;
78 virtual void pingNode(
SockAddr, DoneCallbackSimple&& cb = {}) = 0;
80 virtual time_point periodic(
const uint8_t* buf,
size_t buflen,
SockAddr,
const time_point& now) = 0;
81 virtual time_point periodic(
82 const uint8_t* buf,
size_t buflen,
const sockaddr* from, socklen_t fromlen,
const time_point& now)
96 const InfoHash& key, GetCallback cb, DoneCallback donecb = {},
Value::Filter&& f = {}, Where&& w = {})
99 const InfoHash& key, GetCallback cb, DoneCallbackSimple donecb = {}, Value::Filter&& f = {}, Where&& w = {})
102 const InfoHash& key, GetCallbackSimple cb, DoneCallback donecb = {}, Value::Filter&& f = {}, Where&& w = {})
105 const InfoHash& key, GetCallbackSimple cb, DoneCallbackSimple donecb, Value::Filter&& f = {}, Where&& w = {})
118 virtual void query(
const InfoHash& key, QueryCallback cb, DoneCallback done_cb = {},
Query&& q = {}) = 0;
119 virtual void query(
const InfoHash& key, QueryCallback cb, DoneCallbackSimple done_cb = {}, Query&& q = {}) = 0;
129 virtual Sp<Value>
getLocalById(
const InfoHash& key, Value::Id vid)
const = 0;
137 virtual void put(
const InfoHash& key,
139 DoneCallback cb =
nullptr,
140 time_point created = time_point::max(),
141 bool permanent =
false)
143 virtual void put(
const InfoHash& key,
145 DoneCallbackSimple cb,
146 time_point created = time_point::max(),
147 bool permanent =
false)
149 virtual void put(
const InfoHash& key,
151 DoneCallback cb =
nullptr,
152 time_point created = time_point::max(),
153 bool permanent =
false)
155 virtual void put(
const InfoHash& key,
157 DoneCallbackSimple cb,
158 time_point created = time_point::max(),
159 bool permanent =
false)
165 virtual std::vector<Sp<Value>>
getPut(
const InfoHash&)
const = 0;
170 virtual Sp<Value>
getPut(
const InfoHash&,
const Value::Id&)
const = 0;
176 virtual bool cancelPut(
const InfoHash&,
const Value::Id&) = 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;
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;
230 virtual size_t getLocalStorageLimit()
const = 0;
238 virtual std::pair<size_t, size_t> getLocalStoreSize()
const = 0;
240 virtual std::vector<SockAddr> getPublicAddress(sa_family_t family = 0) = 0;
242 virtual void setLogger(
const std::shared_ptr<Logger>& l) { logger_ = l; }
250 logger_->setFilter(f);
253 virtual void setPushNotificationToken(
const std::string&) {};
255 virtual void setPushNotificationTopic(
const std::string&) {};
256 virtual void setPushNotificationPlatform(
const std::string&) {};
265 std::shared_ptr<Logger> logger_ {};
266 std::queue<std::function<void()>> onConnectCallbacks_ {};