From 6cf75f0fc2069eff355c00bbcc2ce59173c6da42 Mon Sep 17 00:00:00 2001 From: Miguel Portilla Date: Mon, 27 Jul 2015 13:28:19 -0400 Subject: [PATCH] Add uptime to crawl data (RIPD-997) --- src/ripple/overlay/impl/OverlayImpl.cpp | 5 ++++- src/ripple/overlay/impl/PeerImp.cpp | 1 + src/ripple/overlay/impl/PeerImp.h | 9 +++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/ripple/overlay/impl/OverlayImpl.cpp b/src/ripple/overlay/impl/OverlayImpl.cpp index 5539b4034e..9b00fe2e03 100644 --- a/src/ripple/overlay/impl/OverlayImpl.cpp +++ b/src/ripple/overlay/impl/OverlayImpl.cpp @@ -744,6 +744,7 @@ OverlayImpl::size() Json::Value OverlayImpl::crawl() { + using namespace std::chrono; Json::Value jv; auto& av = jv["active"] = Json::Value(Json::arrayValue); std::lock_guard lock (mutex_); @@ -752,12 +753,14 @@ OverlayImpl::crawl() if (auto const sp = e.second.lock()) { auto& pv = av.append(Json::Value(Json::objectValue)); - pv[jss::type] = "peer"; pv[jss::public_key] = beast::base64_encode( sp->getNodePublic().getNodePublic().data(), sp->getNodePublic().getNodePublic().size()); pv[jss::type] = sp->slot()->inbound() ? "in" : "out"; + pv[jss::uptime] = + static_cast(duration_cast( + sp->uptime()).count()); if (sp->crawl()) { pv[jss::ip] = sp->getRemoteAddress().address().to_string(); diff --git a/src/ripple/overlay/impl/PeerImp.cpp b/src/ripple/overlay/impl/PeerImp.cpp index 96cf13632a..6439507cd7 100644 --- a/src/ripple/overlay/impl/PeerImp.cpp +++ b/src/ripple/overlay/impl/PeerImp.cpp @@ -75,6 +75,7 @@ PeerImp::PeerImp (id_t id, endpoint_type remote_endpoint, , sanity_ (Sanity::unknown) , insaneTime_ (clock_type::now()) , publicKey_(publicKey) + , creationTime_ (clock_type::now()) , hello_(hello) , usage_(consumer) , fee_ (Resource::feeLightPeer) diff --git a/src/ripple/overlay/impl/PeerImp.h b/src/ripple/overlay/impl/PeerImp.h index 16236f8857..2f06506c4a 100644 --- a/src/ripple/overlay/impl/PeerImp.h +++ b/src/ripple/overlay/impl/PeerImp.h @@ -143,6 +143,7 @@ private: std::chrono::milliseconds latency_ = std::chrono::milliseconds (-1); std::uint64_t lastPingSeq_ = 0; clock_type::time_point lastPingTime_; + clock_type::time_point creationTime_; std::mutex mutable recentLock_; protocol::TMStatusChange last_status_; @@ -279,6 +280,13 @@ public: std::string getVersion() const; + // Return the connection elapsed time. + clock_type::duration + uptime() const + { + return clock_type::now() - creationTime_; + } + Json::Value json() override; @@ -497,6 +505,7 @@ PeerImp::PeerImp (std::unique_ptr&& ssl_bundle, , sanity_ (Sanity::unknown) , insaneTime_ (clock_type::now()) , publicKey_ (legacyPublicKey) + , creationTime_ (clock_type::now()) , hello_ (std::move(hello)) , usage_ (usage) , fee_ (Resource::feeLightPeer)