diff --git a/include/opendht/callbacks.h b/include/opendht/callbacks.h index 21fad568b28d30da1cf8af53b903feb9657dffdb..5619b927bfddb72bab3250174c05d5f293268b07 100644 --- a/include/opendht/callbacks.h +++ b/include/opendht/callbacks.h @@ -78,6 +78,7 @@ struct OPENDHT_PUBLIC NodeInfo { InfoHash node_id; NodeStats ipv4; NodeStats ipv6; + size_t ongoing_ops; #ifdef OPENDHT_JSONCPP /** diff --git a/include/opendht/dhtrunner.h b/include/opendht/dhtrunner.h index 65ecdba808071ac9d77b145f0a967365ae349b9e..551601efc0f8cf956fad23c4c60d3af617c29c47 100644 --- a/include/opendht/dhtrunner.h +++ b/include/opendht/dhtrunner.h @@ -522,7 +522,7 @@ private: std::mutex storage_mtx {}; std::atomic<State> running {State::Idle}; - std::atomic_uint ongoing_ops {0}; + std::atomic_size_t ongoing_ops {0}; std::vector<ShutdownCallback> shutdownCallbacks_; NodeStatus status4 {NodeStatus::Disconnected}, diff --git a/src/callbacks.cpp b/src/callbacks.cpp index 8d85155f55fe68d78e90b6a28e7de31bc319e3e0..70b623b81ace56fc4c5b0a7b09c00ce4258d4923 100644 --- a/src/callbacks.cpp +++ b/src/callbacks.cpp @@ -121,6 +121,7 @@ NodeInfo::toJson() const val["node_id"] = node_id.toString(); val["ipv4"] = ipv4.toJson(); val["ipv6"] = ipv6.toJson(); + val["ops"] = Json::Value::LargestUInt(ongoing_ops); return val; } @@ -131,6 +132,7 @@ NodeInfo::NodeInfo(const Json::Value& v) node_id = InfoHash(v["node_id"].asString()); ipv4 = NodeStats(v["ipv4"]); ipv6 = NodeStats(v["ipv6"]); + ongoing_ops = v["ops"].asLargestUInt(); } #endif diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp index 26732405d2111c60488aabc79ebcea308968d0ee..8701db9be8e78afcda36630f255a2213e9624124 100644 --- a/src/dhtrunner.cpp +++ b/src/dhtrunner.cpp @@ -467,6 +467,7 @@ DhtRunner::getNodeInfo() const { NodeInfo info; info.id = getId(); info.node_id = getNodeId(); + info.ongoing_ops = ongoing_ops; info.ipv4 = dht_->getNodesStats(AF_INET); info.ipv6 = dht_->getNodesStats(AF_INET6); return info; diff --git a/tools/dhtnode.cpp b/tools/dhtnode.cpp index 4c5dbefb6995e2485d7c04c055095c3891d1f3d1..7b200b9bbbe83a6652403d7a5ffaa6e6511b441b 100644 --- a/tools/dhtnode.cpp +++ b/tools/dhtnode.cpp @@ -140,11 +140,13 @@ void cmd_loop(std::shared_ptr<DhtRunner>& node, dht_params& params print_help(); continue; } else if (op == "ll") { + auto nodeInfo = node->getNodeInfo(); print_node_info(*node, params); + std::cout << nodeInfo.ongoing_ops << " ongoing operations" << std::endl; std::cout << "IPv4 stats:" << std::endl; - std::cout << node->getNodesStats(AF_INET).toString() << std::endl; + std::cout << nodeInfo.ipv4.toString() << std::endl; std::cout << "IPv6 stats:" << std::endl; - std::cout << node->getNodesStats(AF_INET6).toString() << std::endl; + std::cout << nodeInfo.ipv6.toString() << std::endl; #ifdef OPENDHT_PROXY_SERVER for (const auto& proxy : proxies) { std::cout << "Stats for proxy on port " << proxy.first << std::endl;