From deab99af73dd5e03bc5f32e0ade43fbcc9e24358 Mon Sep 17 00:00:00 2001 From: arm64v8a <48624112+arm64v8a@users.noreply.github.com> Date: Wed, 16 Nov 2022 15:07:10 +0900 Subject: [PATCH] fix: traffic stats time --- db/TrafficData.hpp | 2 ++ db/TrafficLooper.cpp | 11 +++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/db/TrafficData.hpp b/db/TrafficData.hpp index 2b3b9ed..27e98c1 100644 --- a/db/TrafficData.hpp +++ b/db/TrafficData.hpp @@ -13,6 +13,8 @@ namespace NekoRay::traffic { long long downlink_rate = 0; long long uplink_rate = 0; + long long last_update; + explicit TrafficData(std::string tag) { this->tag = std::move(tag); _add(new configItem("dl", &downlink, itemType::integer64)); diff --git a/db/TrafficLooper.cpp b/db/TrafficLooper.cpp index d531dce..0353dbb 100644 --- a/db/TrafficLooper.cpp +++ b/db/TrafficLooper.cpp @@ -8,11 +8,17 @@ namespace NekoRay::traffic { TrafficLooper *trafficLooper = new TrafficLooper; + QElapsedTimer trafficLooper_timer; std::unique_ptr TrafficLooper::update_stats(TrafficData *item) { #ifndef NKR_NO_GRPC - auto interval = dataStore->traffic_loop_interval; - if (interval == 0) return nullptr; + // last update + auto now = trafficLooper_timer.elapsed(); + auto interval = now - item->last_update; + item->last_update = now; + if (interval <= 0) return nullptr; + + // query auto uplink = NekoRay::rpc::defaultClient->QueryStats(item->tag, "uplink"); auto downlink = NekoRay::rpc::defaultClient->QueryStats(item->tag, "downlink"); @@ -63,6 +69,7 @@ namespace NekoRay::traffic { } void TrafficLooper::loop() { + trafficLooper_timer.start(); while (true) { auto sleep_ms = dataStore->traffic_loop_interval; auto user_disabled = sleep_ms == 0;