31 #ifdef OPENDHT_JSONCPP 32 #include <json/json.h> 48 inline constexpr
const char*
50 return status == NodeStatus::Connected ?
"connected" : (
51 status == NodeStatus::Connecting ?
"connecting" :
56 unsigned good_nodes {0},
60 unsigned table_depth {0};
61 unsigned searches {0};
62 unsigned node_cache_size {0};
63 unsigned getKnownNodes()
const {
return good_nodes + dubious_nodes; }
64 unsigned long getNetworkSizeEstimation()
const {
return 8 * std::exp2(table_depth); }
65 std::string toString()
const;
67 #ifdef OPENDHT_JSONCPP 71 Json::Value toJson()
const;
76 MSGPACK_DEFINE_MAP(good_nodes, dubious_nodes, cached_nodes, incoming_nodes, table_depth, searches, node_cache_size)
84 size_t ongoing_ops {0};
85 size_t storage_values {0};
86 size_t storage_size {0};
90 #ifdef OPENDHT_JSONCPP 94 Json::Value toJson()
const;
96 explicit NodeInfo(
const Json::Value& v);
99 MSGPACK_DEFINE_MAP(
id, node_id, ipv4, ipv6)
117 bool is_bootstrap {
false};
120 bool maintain_storage {
false};
123 std::string persist_path {};
126 ssize_t max_req_per_sec {0};
129 ssize_t max_peer_req_per_sec {0};
132 ssize_t max_searches {0};
135 ssize_t max_store_size {0};
138 ssize_t max_store_keys {0};
145 bool public_stable {
false};
154 crypto::Identity
id {};
160 bool cert_cache_all {
false};
163 static constexpr
size_t DEFAULT_STORAGE_LIMIT {1024 * 1024 * 64};
165 using ValuesExport = std::pair<InfoHash, Blob>;
167 using QueryCallback = std::function<bool(const std::vector<std::shared_ptr<FieldValueIndex>>& fields)>;
168 using GetCallback = std::function<bool(const std::vector<std::shared_ptr<Value>>& values)>;
169 using ValueCallback = std::function<bool(const std::vector<std::shared_ptr<Value>>& values,
bool expired)>;
170 using GetCallbackSimple = std::function<bool(std::shared_ptr<Value> value)>;
171 using ShutdownCallback = std::function<void()>;
172 using IdentityAnnouncedCb = std::function<void(bool)>;
174 using CertificateStoreQuery = std::function<std::vector<std::shared_ptr<crypto::Certificate>>(
const InfoHash& pk_id)>;
176 typedef bool (*GetCallbackRaw)(std::shared_ptr<Value>,
void *user_data);
177 typedef bool (*ValueCallbackRaw)(std::shared_ptr<Value>,
bool expired,
void *user_data);
179 using DoneCallback = std::function<void(bool success, const std::vector<std::shared_ptr<Node>>& nodes)>;
180 typedef void (*DoneCallbackRaw)(bool, std::vector<std::shared_ptr<Node>>*,
void *user_data);
181 typedef void (*ShutdownCallbackRaw)(
void *user_data);
182 typedef void (*DoneCallbackSimpleRaw)(bool,
void *user_data);
183 typedef bool (*FilterRaw)(
const Value&,
void *user_data);
185 using DoneCallbackSimple = std::function<void(bool success)>;
187 OPENDHT_PUBLIC GetCallbackSimple bindGetCb(GetCallbackRaw raw_cb,
void* user_data);
188 OPENDHT_PUBLIC GetCallback bindGetCb(GetCallbackSimple cb);
189 OPENDHT_PUBLIC ValueCallback bindValueCb(ValueCallbackRaw raw_cb,
void* user_data);
190 OPENDHT_PUBLIC ShutdownCallback bindShutdownCb(ShutdownCallbackRaw shutdown_cb_raw,
void* user_data);
191 OPENDHT_PUBLIC DoneCallback bindDoneCb(DoneCallbackSimple donecb);
192 OPENDHT_PUBLIC DoneCallback bindDoneCb(DoneCallbackRaw raw_cb,
void* user_data);
193 OPENDHT_PUBLIC DoneCallbackSimple bindDoneCbSimple(DoneCallbackSimpleRaw raw_cb,
void* user_data);
194 OPENDHT_PUBLIC Value::Filter bindFilterRaw(FilterRaw raw_filter,
void* user_data);