From 652ac9fe82bae29606dc12f0efbbd7069a44e0d4 Mon Sep 17 00:00:00 2001 From: xia-chu <771730766@qq.com> Date: Sun, 10 Aug 2025 11:55:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96poller?= =?UTF-8?q?=E7=9B=91=E5=90=ACfd=E4=B8=AA=E6=95=B0=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3rdpart/ZLToolKit | 2 +- server/WebApi.cpp | 48 ++++++++++++++++++++++------------------------- 2 files changed, 23 insertions(+), 27 deletions(-) diff --git a/3rdpart/ZLToolKit b/3rdpart/ZLToolKit index 1b7d6fc4..7c0f9b41 160000 --- a/3rdpart/ZLToolKit +++ b/3rdpart/ZLToolKit @@ -1 +1 @@ -Subproject commit 1b7d6fc47ca4f13deab56de0241d3a9ac380e2d6 +Subproject commit 7c0f9b41c1346e31892924320fb8b6cc67cf88ef diff --git a/server/WebApi.cpp b/server/WebApi.cpp index e4423e54..7d26214e 100755 --- a/server/WebApi.cpp +++ b/server/WebApi.cpp @@ -748,6 +748,26 @@ void addStreamPusherProxy(const string &schema, pusher->publish(url); } +void getThreadsLoad(TaskExecutorGetterImp &getter, API_ARGS_MAP_ASYNC) { + getter.getExecutorDelay([&getter, invoker, headerOut](const vector &vecDelay) { + Value val; + auto vec = getter.getExecutorLoad(); + std::vector pollers; + getter.for_each([&](const TaskExecutor::Ptr &exe) { pollers.emplace_back(std::static_pointer_cast(exe)); }); + int i = API::Success; + for (auto load : vec) { + Value obj(objectValue); + obj["load"] = load; + auto &poller = pollers[i]; + obj["name"] = poller->getThreadName(); + obj["fd_count"] = static_cast(poller->fdCount()); + obj["delay"] = vecDelay[i++]; + val["data"].append(obj); + } + val["code"] = API::Success; + invoker(200, headerOut, val.toStyledString()); + }); +} /** * 安装api接口 @@ -769,19 +789,7 @@ void installWebApi() { // Test url http://127.0.0.1/index/api/getThreadsLoad api_regist("/index/api/getThreadsLoad", [](API_ARGS_MAP_ASYNC) { CHECK_SECRET(); - EventPollerPool::Instance().getExecutorDelay([invoker, headerOut](const vector &vecDelay) { - Value val; - auto vec = EventPollerPool::Instance().getExecutorLoad(); - int i = API::Success; - for (auto load : vec) { - Value obj(objectValue); - obj["load"] = load; - obj["delay"] = vecDelay[i++]; - val["data"].append(obj); - } - val["code"] = API::Success; - invoker(200, headerOut, val.toStyledString()); - }); + getThreadsLoad(EventPollerPool::Instance(), API_ARGS_VALUE, invoker); }); // 获取后台工作线程负载 [AUTO-TRANSLATED:6166e265] @@ -790,19 +798,7 @@ void installWebApi() { // Test url http://127.0.0.1/index/api/getWorkThreadsLoad api_regist("/index/api/getWorkThreadsLoad", [](API_ARGS_MAP_ASYNC) { CHECK_SECRET(); - WorkThreadPool::Instance().getExecutorDelay([invoker, headerOut](const vector &vecDelay) { - Value val; - auto vec = WorkThreadPool::Instance().getExecutorLoad(); - int i = 0; - for (auto load : vec) { - Value obj(objectValue); - obj["load"] = load; - obj["delay"] = vecDelay[i++]; - val["data"].append(obj); - } - val["code"] = API::Success; - invoker(200, headerOut, val.toStyledString()); - }); + getThreadsLoad(WorkThreadPool::Instance(), API_ARGS_VALUE, invoker); }); // 获取服务器配置 [AUTO-TRANSLATED:7dd2f3da]