From 35477f607907bfdbe0b312c31d8770e7e858548f Mon Sep 17 00:00:00 2001 From: ye yiyang <850219375@qq.com> Date: Fri, 7 Mar 2025 11:22:57 +0800 Subject: [PATCH 3/3] InfocmdHandler add the display of running status --- src/plugin_mgr/event/info_cmd_handler.cpp | 53 +++++++++++++---------- src/plugin_mgr/event/info_cmd_handler.h | 2 + src/plugin_mgr/plugin.cpp | 6 +++ src/plugin_mgr/plugin.h | 1 + 4 files changed, 39 insertions(+), 23 deletions(-) diff --git a/src/plugin_mgr/event/info_cmd_handler.cpp b/src/plugin_mgr/event/info_cmd_handler.cpp index 2d9f72d..8b8dc8c 100644 --- a/src/plugin_mgr/event/info_cmd_handler.cpp +++ b/src/plugin_mgr/event/info_cmd_handler.cpp @@ -98,6 +98,34 @@ std::vector wrapText(const std::string& text, size_t width) return wrapped; } +void InfoCmdHandler::FormatAndPrint(const std::string& instanceName, const std::string& description, + const std::string& effect, std::ostringstream &formattedRes) +{ + auto instanceNames = wrapText(instanceName, instanceWidth); + auto descriptions = wrapText(description, descriptionWidth); + auto effects = wrapText(effect, effectWidth); + size_t maxLines = std::max({descriptions.size(), effects.size(), static_cast(1)}); + for (size_t j = 0; j < maxLines; ++j) { + if (j < instanceNames.size()) { + formattedRes << std::left << std::setw(instanceWidth) << instanceNames[j]; + } else { + formattedRes << std::left << std::setw(instanceWidth) << ""; + } + if (j < descriptions.size()) { + formattedRes << "|" << std::setw(descriptionWidth) << descriptions[j]; + } else { + formattedRes << "|" << std::setw(descriptionWidth) << ""; + } + if (j < effects.size()) { + formattedRes << "|" << std::setw(effectWidth) << effects[j]; + } else { + formattedRes << "|" << std::setw(effectWidth) << ""; + } + formattedRes << "\n"; + } + formattedRes << std::string(instanceWidth + 1 + descriptionWidth + 1 + effectWidth, '-') << "\n"; +} + ErrorCode InfoCmdHandler::AddList(std::string &res) { std::vector> allPlugins = memoryStore->GetAllPlugins(); @@ -119,31 +147,10 @@ ErrorCode InfoCmdHandler::AddList(std::string &res) for (size_t i = 0; i < p->GetInstanceLen(); ++i) { auto instance = p->GetInstance(i); auto infoPartner = GetInfo(instance->GetName()); - std::string instanceName = infoPartner.instance; + std::string instanceName = instance->GetRun(); std::string description = infoPartner.description; std::string effect = infoPartner.effect; - auto descriptions = wrapText(description, descriptionWidth); - auto effects = wrapText(effect, effectWidth); - size_t maxLines = std::max({descriptions.size(), effects.size(), static_cast(1)}); - formattedRes << std::left << std::setw(instanceWidth) << instanceName; - formattedRes << "|" << std::setw(descriptionWidth) << descriptions[0]; - formattedRes << "|" << std::setw(effectWidth) << effects[0]; - formattedRes << "\n"; - for (size_t j = 1; j < maxLines; ++j) { - formattedRes << std::left << std::setw(instanceWidth) << ""; - if (j < descriptions.size()) { - formattedRes << "|" << std::setw(descriptionWidth) << descriptions[j]; - } else { - formattedRes << "|" << std::setw(descriptionWidth) << ""; - } - if (j < effects.size()) { - formattedRes << "|" << std::setw(effectWidth) << effects[j]; - } else { - formattedRes << "|" << std::setw(effectWidth) << ""; - } - formattedRes << "\n"; - } - formattedRes << std::string(instanceWidth + 1 + descriptionWidth + 1 + effectWidth, '-') << "\n"; + FormatAndPrint(instanceName, description, effect, formattedRes); } } res = formattedRes.str(); diff --git a/src/plugin_mgr/event/info_cmd_handler.h b/src/plugin_mgr/event/info_cmd_handler.h index 9ecc246..8eeec2e 100644 --- a/src/plugin_mgr/event/info_cmd_handler.h +++ b/src/plugin_mgr/event/info_cmd_handler.h @@ -26,6 +26,8 @@ public: EventResult Handle(const Event &event) override; InfoCmd GetInfo(const std::string& name); bool CreateInfoCmdInstances(const std::string& filePath, std::vector& infoCmds); + void FormatAndPrint(const std::string& instanceName, const std::string& description, + const std::string& effect, std::ostringstream &formattedRes); private: ErrorCode AddList(std::string &res); std::vector infoCmd; diff --git a/src/plugin_mgr/plugin.cpp b/src/plugin_mgr/plugin.cpp index ed666cb..2dde7e0 100644 --- a/src/plugin_mgr/plugin.cpp +++ b/src/plugin_mgr/plugin.cpp @@ -75,6 +75,12 @@ std::string Instance::GetInfo() const return name + "(" + stateText + ", " + runText + ", count: " + std::to_string(enableCnt) + ")"; } +std::string Instance::GetRun() const +{ + std::string runText = this->enabled ? pluginEnabled : pluginDisabled; + return name + " (" + runText + ")"; +} + std::string Instance::GetName() const { return name; diff --git a/src/plugin_mgr/plugin.h b/src/plugin_mgr/plugin.h index 64a79f5..3d34802 100644 --- a/src/plugin_mgr/plugin.h +++ b/src/plugin_mgr/plugin.h @@ -32,6 +32,7 @@ struct Instance { const static std::string pluginStateOff; std::string GetInfo() const; std::string GetName() const; + std::string GetRun() const; }; class Plugin { -- 2.33.0