From 83f2b272a7611adc0cff0c878518715fd35c02f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Sun, 1 Dec 2019 15:07:11 -0500 Subject: [PATCH] dhtrunner: add ongoing op count to node info --- include/opendht/callbacks.h | 1 + include/opendht/dhtrunner.h | 2 +- src/callbacks.cpp | 2 ++ src/dhtrunner.cpp | 1 + tools/dhtnode.cpp | 6 ++++-- 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/include/opendht/callbacks.h b/include/opendht/callbacks.h index 21fad568..5619b927 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 65ecdba8..551601ef 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 8d85155f..70b623b8 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 26732405..8701db9b 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 4c5dbefb..7b200b9b 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; -- GitLab