From 22d4b88edc1f3dfaacac58f7b9173d59e257ed6a Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Tue, 9 Nov 2021 11:20:53 -0500 Subject: [PATCH] make PumpLL idempotent to reduce cpu use a bit --- llarp/router/router.cpp | 19 +++++++++++-------- llarp/router/router.hpp | 2 ++ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/llarp/router/router.cpp b/llarp/router/router.cpp index e7eae19a1..2537ded55 100644 --- a/llarp/router/router.cpp +++ b/llarp/router/router.cpp @@ -69,6 +69,16 @@ namespace llarp _running.store(false); _lastTick = llarp::time_now_ms(); m_NextExploreAt = Clock_t::now(); + m_Pump = _loop->make_waker([this]() { + llarp::LogTrace("Router::PumpLL() start"); + if (_stopping.load()) + return; + paths.PumpDownstream(); + paths.PumpUpstream(); + _outboundMessageHandler.Tick(); + _linkManager.PumpLinks(); + llarp::LogTrace("Router::PumpLL() end"); + }); } Router::~Router() @@ -245,14 +255,7 @@ namespace llarp void Router::PumpLL() { - llarp::LogTrace("Router::PumpLL() start"); - if (_stopping.load()) - return; - paths.PumpDownstream(); - paths.PumpUpstream(); - _outboundMessageHandler.Tick(); - _linkManager.PumpLinks(); - llarp::LogTrace("Router::PumpLL() end"); + m_Pump->Trigger(); } bool diff --git a/llarp/router/router.hpp b/llarp/router/router.hpp index 946bc8594..36bbbd2a4 100644 --- a/llarp/router/router.hpp +++ b/llarp/router/router.hpp @@ -76,6 +76,8 @@ namespace llarp path::BuildLimiter m_PathBuildLimiter; + std::shared_ptr m_Pump; + path::BuildLimiter& pathBuildLimiter() override {