From cee29953892046ed9fa2865e0af9a84427bee252 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Thu, 17 Oct 2024 16:31:55 -0400 Subject: [PATCH] throttle peer_status a little bit, send an update every 175ms (similar to the TUI update speed); --- src/sysview/HostWS.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/sysview/HostWS.cpp b/src/sysview/HostWS.cpp index 5f18b402..c89c6097 100644 --- a/src/sysview/HostWS.cpp +++ b/src/sysview/HostWS.cpp @@ -158,6 +158,8 @@ int HostWS::run() peerListUpdate.start(); Timer affListUpdate(1000U, 10U); affListUpdate.start(); + Timer peerStatusUpdate(1000U, 0U, 175U); + peerStatusUpdate.start(); setNetDataEventCallback([=](json::object obj) { netDataEvent(obj); }); @@ -182,16 +184,21 @@ int HostWS::run() } // update peer status - std::map peerStatus(getNetwork()->peerStatus.begin(), getNetwork()->peerStatus.end()); - for (auto entry : peerStatus) { - json::object wsObj = json::object(); - std::string type = "peer_status"; - wsObj["type"].set(type); - uint32_t peerId = entry.first; - wsObj["peerId"].set(peerId); - json::object peerStatus = entry.second; - wsObj["payload"].set(peerStatus); - send(wsObj); + peerStatusUpdate.clock(ms); + if (peerStatusUpdate.isRunning() && peerStatusUpdate.hasExpired()) { + peerStatusUpdate.start(); + + std::map peerStatus(getNetwork()->peerStatus.begin(), getNetwork()->peerStatus.end()); + for (auto entry : peerStatus) { + json::object wsObj = json::object(); + std::string type = "peer_status"; + wsObj["type"].set(type); + uint32_t peerId = entry.first; + wsObj["peerId"].set(peerId); + json::object peerStatus = entry.second; + wsObj["payload"].set(peerStatus); + send(wsObj); + } } // update peer list data