30inline constexpr const char*
33 return status == NodeStatus::Connected ?
"connected"
34 : (status == NodeStatus::Connecting ?
"connecting" :
"disconnected");
39 unsigned good_nodes {0}, dubious_nodes {0}, cached_nodes {0}, incoming_nodes {0};
40 unsigned table_depth {0};
41 unsigned searches {0};
42 unsigned node_cache_size {0};
43 unsigned getKnownNodes()
const {
return good_nodes + dubious_nodes; }
44 unsigned long getNetworkSizeEstimation()
const {
return 8 * std::exp2(table_depth); }
45 std::string toString()
const;
51 Json::Value toJson()
const;
56 MSGPACK_DEFINE_MAP(good_nodes, dubious_nodes, cached_nodes, incoming_nodes, table_depth, searches, node_cache_size)
65 size_t ongoing_ops {0};
66 size_t storage_values {0};
67 size_t storage_size {0};
68 size_t local_storage_values {0};
69 size_t local_storage_size {0};
77 Json::Value toJson()
const;
79 explicit NodeInfo(
const Json::Value& v);
82 MSGPACK_DEFINE_MAP(
id,
126 ssize_t max_searches {0};
129 ssize_t max_store_size {0};
132 ssize_t max_local_store_size {0};
135 ssize_t max_store_keys {0};
145 bool client_mode {
false};
154 crypto::Identity
id {};
163enum class OPENDHT_PUBLIC PushNotificationResult : uint8_t {
170 IgnoredWrongSession = 0x80,
177static constexpr size_t STORAGE_LIMIT_DEFAULT {1024 * 1024 * 64};
178static constexpr size_t STORAGE_LIMIT_UNLIMITED {(size_t) -1};
180using ValuesExport = std::pair<InfoHash, Blob>;
182using QueryCallback = std::function<bool(
const std::vector<std::shared_ptr<FieldValueIndex>>& fields)>;
183using GetCallback = std::function<bool(
const std::vector<std::shared_ptr<Value>>& values)>;
184using ValueCallback = std::function<bool(
const std::vector<std::shared_ptr<Value>>& values,
bool expired)>;
185using GetCallbackSimple = std::function<bool(std::shared_ptr<Value> value)>;
186using ShutdownCallback = std::function<void()>;
187using IdentityAnnouncedCb = std::function<void(
bool)>;
188using PublicAddressChangedCb = std::function<void(std::vector<SockAddr>)>;
190using CertificateStoreQueryLegacy
191 = std::function<std::vector<std::shared_ptr<crypto::Certificate>>(
const InfoHash& pk_id)>;
192using CertificateStoreQuery = std::function<std::vector<std::shared_ptr<crypto::Certificate>>(
const PkId& pk_id)>;
194using DoneCallback = std::function<void(
bool success,
const std::vector<std::shared_ptr<Node>>& nodes)>;
195using DoneCallbackSimple = std::function<void(
bool success)>;
197typedef bool (*GetCallbackRaw)(std::shared_ptr<Value>,
void* user_data);
198typedef bool (*ValueCallbackRaw)(std::shared_ptr<Value>,
bool expired,
void* user_data);
199typedef void (*DoneCallbackRaw)(bool, std::vector<std::shared_ptr<Node>>*,
void* user_data);
200typedef void (*ShutdownCallbackRaw)(
void* user_data);
201typedef void (*DoneCallbackSimpleRaw)(bool,
void* user_data);
202typedef bool (*FilterRaw)(
const Value&,
void* user_data);
204OPENDHT_PUBLIC GetCallbackSimple bindGetCb(GetCallbackRaw raw_cb,
void* user_data);
205OPENDHT_PUBLIC GetCallback bindGetCb(GetCallbackSimple cb);
206OPENDHT_PUBLIC ValueCallback bindValueCb(ValueCallbackRaw raw_cb,
void* user_data);
207OPENDHT_PUBLIC ShutdownCallback bindShutdownCb(ShutdownCallbackRaw shutdown_cb_raw,
void* user_data);
208OPENDHT_PUBLIC DoneCallback bindDoneCb(DoneCallbackSimple donecb);
209OPENDHT_PUBLIC DoneCallback bindDoneCb(DoneCallbackRaw raw_cb,
void* user_data);
210OPENDHT_PUBLIC DoneCallbackSimple bindDoneCbSimple(DoneCallbackSimpleRaw raw_cb,
void* user_data);
211OPENDHT_PUBLIC
Value::Filter bindFilterRaw(FilterRaw raw_filter,
void* user_data);