From e5694e9f6d2a84954eaf508557caa795f5282b07 Mon Sep 17 00:00:00 2001 From: saturneric Date: Tue, 17 Oct 2023 22:57:03 +0800 Subject: refactor: change plugin system to module system --- src/module/GpgFrontendModuleInit.cpp | 99 ++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 src/module/GpgFrontendModuleInit.cpp (limited to 'src/module/GpgFrontendModuleInit.cpp') diff --git a/src/module/GpgFrontendModuleInit.cpp b/src/module/GpgFrontendModuleInit.cpp new file mode 100644 index 00000000..53f71b71 --- /dev/null +++ b/src/module/GpgFrontendModuleInit.cpp @@ -0,0 +1,99 @@ +/** + * Copyright (C) 2021 Saturneric + * + * This file is part of GpgFrontend. + * + * GpgFrontend is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GpgFrontend is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GpgFrontend. If not, see . + * + * The initial version of the source code is inherited from + * the gpg4usb project, which is under GPL-3.0-or-later. + * + * All the source code of GpgFrontend was modified and released by + * Saturneric starting on May 12, 2021. + * + * SPDX-License-Identifier: GPL-3.0-or-later + * + */ + +#include "GpgFrontendModuleInit.h" + +#include +#include +#include +#include + +#include + +#include "core/function/GlobalSettingStation.h" +#include "module/system/PluginManager.h" + +// integrated plugins +#include "integrated/version_checking_module/VersionCheckingModule.h" + +namespace GpgFrontend::Module { + +void LoadGpgFrontendIntegratedModules() { + SPDLOG_INFO("loading integrated module..."); + ModuleManager::GetInstance()->RegisterPlugin( + std::make_shared< + Integrated::VersionCheckingModule::VersionCheckingModule>()); +} + +void InitModuleLoggingSystem() { + using namespace boost::posix_time; + using namespace boost::gregorian; + + // get the log directory + auto logfile_path = + (GpgFrontend::GlobalSettingStation::GetInstance().GetLogDir() / "module"); + logfile_path.replace_extension(".log"); + + // sinks + std::vector sinks; + sinks.push_back(std::make_shared()); + sinks.push_back(std::make_shared( + logfile_path.u8string(), 1048576 * 32, 32)); + + // thread pool + spdlog::init_thread_pool(1024, 2); + + // logger + auto module_logger = std::make_shared( + "plugin", begin(sinks), end(sinks), spdlog::thread_pool()); + module_logger->set_pattern( + "[%H:%M:%S.%e] [T:%t] [%=4n] %^[%=8l]%$ [%s:%#] [%!] -> %v (+%ius)"); + +#ifdef DEBUG + module_logger->set_level(spdlog::level::trace); +#else + ui_logger->set_level(spdlog::level::info); +#endif + + // flush policy + module_logger->flush_on(spdlog::level::err); + spdlog::flush_every(std::chrono::seconds(5)); + + // register it as default logger + spdlog::set_default_logger(module_logger); +} + +void ShutdownModuleLoggingSystem() { +#ifdef WINDOWS + // Under VisualStudio, this must be called before main finishes to workaround + // a known VS issue + spdlog::drop_all(); + spdlog::shutdown(); +#endif +} +} // namespace GpgFrontend::Module \ No newline at end of file -- cgit v1.2.3 From 32b6d924e24d9ec80af2013009107cceb06c7489 Mon Sep 17 00:00:00 2001 From: saturneric Date: Tue, 17 Oct 2023 23:17:18 +0800 Subject: fix: slove compile issues --- src/module/GpgFrontendModuleInit.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/module/GpgFrontendModuleInit.cpp') diff --git a/src/module/GpgFrontendModuleInit.cpp b/src/module/GpgFrontendModuleInit.cpp index 53f71b71..234d0c18 100644 --- a/src/module/GpgFrontendModuleInit.cpp +++ b/src/module/GpgFrontendModuleInit.cpp @@ -36,16 +36,16 @@ #include #include "core/function/GlobalSettingStation.h" -#include "module/system/PluginManager.h" +#include "module/system/ModuleManager.h" -// integrated plugins +// integrated modules #include "integrated/version_checking_module/VersionCheckingModule.h" namespace GpgFrontend::Module { void LoadGpgFrontendIntegratedModules() { SPDLOG_INFO("loading integrated module..."); - ModuleManager::GetInstance()->RegisterPlugin( + ModuleManager::GetInstance()->RegisterModule( std::make_shared< Integrated::VersionCheckingModule::VersionCheckingModule>()); } @@ -70,7 +70,7 @@ void InitModuleLoggingSystem() { // logger auto module_logger = std::make_shared( - "plugin", begin(sinks), end(sinks), spdlog::thread_pool()); + "module", begin(sinks), end(sinks), spdlog::thread_pool()); module_logger->set_pattern( "[%H:%M:%S.%e] [T:%t] [%=4n] %^[%=8l]%$ [%s:%#] [%!] -> %v (+%ius)"); -- cgit v1.2.3 From 459cd3d0e512a1166b3a09233c22b7357b514760 Mon Sep 17 00:00:00 2001 From: saturneric Date: Tue, 17 Oct 2023 23:45:10 +0800 Subject: refactor: move module system to core and make it work --- src/module/GpgFrontendModuleInit.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/module/GpgFrontendModuleInit.cpp') diff --git a/src/module/GpgFrontendModuleInit.cpp b/src/module/GpgFrontendModuleInit.cpp index 234d0c18..7188bdd3 100644 --- a/src/module/GpgFrontendModuleInit.cpp +++ b/src/module/GpgFrontendModuleInit.cpp @@ -36,7 +36,7 @@ #include #include "core/function/GlobalSettingStation.h" -#include "module/system/ModuleManager.h" +#include "core/module/ModuleManager.h" // integrated modules #include "integrated/version_checking_module/VersionCheckingModule.h" @@ -45,9 +45,12 @@ namespace GpgFrontend::Module { void LoadGpgFrontendIntegratedModules() { SPDLOG_INFO("loading integrated module..."); - ModuleManager::GetInstance()->RegisterModule( - std::make_shared< - Integrated::VersionCheckingModule::VersionCheckingModule>()); + + // VersionCheckingModule + RegisterAndActivateModule< + Integrated::VersionCheckingModule::VersionCheckingModule>(); + + SPDLOG_INFO("load integrated module done."); } void InitModuleLoggingSystem() { -- cgit v1.2.3 From 12f42d88e10c08d1acc835d8703dcef55bab737a Mon Sep 17 00:00:00 2001 From: saturneric Date: Wed, 18 Oct 2023 13:37:33 +0800 Subject: fix: solve a build issue at release mode --- src/module/GpgFrontendModuleInit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/module/GpgFrontendModuleInit.cpp') diff --git a/src/module/GpgFrontendModuleInit.cpp b/src/module/GpgFrontendModuleInit.cpp index 7188bdd3..5c3418ec 100644 --- a/src/module/GpgFrontendModuleInit.cpp +++ b/src/module/GpgFrontendModuleInit.cpp @@ -80,7 +80,7 @@ void InitModuleLoggingSystem() { #ifdef DEBUG module_logger->set_level(spdlog::level::trace); #else - ui_logger->set_level(spdlog::level::info); + module_logger->set_level(spdlog::level::info); #endif // flush policy -- cgit v1.2.3 From 31fc827672a131da020c4b4a0c3c8a145d477835 Mon Sep 17 00:00:00 2001 From: saturneric Date: Mon, 23 Oct 2023 14:29:25 +0800 Subject: feat: improve project structure and add GRT for modules --- src/module/GpgFrontendModuleInit.cpp | 61 ++++-------------------------------- 1 file changed, 6 insertions(+), 55 deletions(-) (limited to 'src/module/GpgFrontendModuleInit.cpp') diff --git a/src/module/GpgFrontendModuleInit.cpp b/src/module/GpgFrontendModuleInit.cpp index 5c3418ec..1afa5552 100644 --- a/src/module/GpgFrontendModuleInit.cpp +++ b/src/module/GpgFrontendModuleInit.cpp @@ -28,22 +28,17 @@ #include "GpgFrontendModuleInit.h" -#include -#include -#include -#include - -#include - -#include "core/function/GlobalSettingStation.h" -#include "core/module/ModuleManager.h" +#include +#include // integrated modules #include "integrated/version_checking_module/VersionCheckingModule.h" namespace GpgFrontend::Module { -void LoadGpgFrontendIntegratedModules() { +void LoadGpgFrontendModules() { + InitModuleLoggingSystem(); + SPDLOG_INFO("loading integrated module..."); // VersionCheckingModule @@ -53,50 +48,6 @@ void LoadGpgFrontendIntegratedModules() { SPDLOG_INFO("load integrated module done."); } -void InitModuleLoggingSystem() { - using namespace boost::posix_time; - using namespace boost::gregorian; - - // get the log directory - auto logfile_path = - (GpgFrontend::GlobalSettingStation::GetInstance().GetLogDir() / "module"); - logfile_path.replace_extension(".log"); - - // sinks - std::vector sinks; - sinks.push_back(std::make_shared()); - sinks.push_back(std::make_shared( - logfile_path.u8string(), 1048576 * 32, 32)); - - // thread pool - spdlog::init_thread_pool(1024, 2); +void ShutdownGpgFrontendModules() { ShutdownModuleLoggingSystem(); } - // logger - auto module_logger = std::make_shared( - "module", begin(sinks), end(sinks), spdlog::thread_pool()); - module_logger->set_pattern( - "[%H:%M:%S.%e] [T:%t] [%=4n] %^[%=8l]%$ [%s:%#] [%!] -> %v (+%ius)"); - -#ifdef DEBUG - module_logger->set_level(spdlog::level::trace); -#else - module_logger->set_level(spdlog::level::info); -#endif - - // flush policy - module_logger->flush_on(spdlog::level::err); - spdlog::flush_every(std::chrono::seconds(5)); - - // register it as default logger - spdlog::set_default_logger(module_logger); -} - -void ShutdownModuleLoggingSystem() { -#ifdef WINDOWS - // Under VisualStudio, this must be called before main finishes to workaround - // a known VS issue - spdlog::drop_all(); - spdlog::shutdown(); -#endif -} } // namespace GpgFrontend::Module \ No newline at end of file -- cgit v1.2.3 From 5a3f422335b27c6c19a2d91f525c77435e8f2384 Mon Sep 17 00:00:00 2001 From: saturneric Date: Mon, 23 Oct 2023 21:23:37 +0800 Subject: fix: solve some issues on log system --- src/module/GpgFrontendModuleInit.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/module/GpgFrontendModuleInit.cpp') diff --git a/src/module/GpgFrontendModuleInit.cpp b/src/module/GpgFrontendModuleInit.cpp index 1afa5552..cd874817 100644 --- a/src/module/GpgFrontendModuleInit.cpp +++ b/src/module/GpgFrontendModuleInit.cpp @@ -37,17 +37,17 @@ namespace GpgFrontend::Module { void LoadGpgFrontendModules() { - InitModuleLoggingSystem(); + SDK::InitModuleLoggingSystem(); - SPDLOG_INFO("loading integrated module..."); + MODULE_LOG_INFO("loading integrated module..."); // VersionCheckingModule RegisterAndActivateModule< Integrated::VersionCheckingModule::VersionCheckingModule>(); - SPDLOG_INFO("load integrated module done."); + MODULE_LOG_INFO("load integrated module done."); } -void ShutdownGpgFrontendModules() { ShutdownModuleLoggingSystem(); } +void ShutdownGpgFrontendModules() { SDK::ShutdownModuleLoggingSystem(); } } // namespace GpgFrontend::Module \ No newline at end of file -- cgit v1.2.3 From b7ceed0b87752077fe19fefe9b0df8ec27ce0531 Mon Sep 17 00:00:00 2001 From: saturneric Date: Wed, 25 Oct 2023 22:28:25 +0800 Subject: feat: moving gnupg info gathering logic to a new module --- src/module/GpgFrontendModuleInit.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/module/GpgFrontendModuleInit.cpp') diff --git a/src/module/GpgFrontendModuleInit.cpp b/src/module/GpgFrontendModuleInit.cpp index cd874817..46a57f47 100644 --- a/src/module/GpgFrontendModuleInit.cpp +++ b/src/module/GpgFrontendModuleInit.cpp @@ -32,6 +32,7 @@ #include // integrated modules +#include "integrated/gnupg_info_gathering_module/GnuPGInfoGatheringModule.h" #include "integrated/version_checking_module/VersionCheckingModule.h" namespace GpgFrontend::Module { @@ -45,6 +46,10 @@ void LoadGpgFrontendModules() { RegisterAndActivateModule< Integrated::VersionCheckingModule::VersionCheckingModule>(); + // VersionCheckingModule + RegisterAndActivateModule< + Integrated::GnuPGInfoGatheringModule::GnuPGInfoGatheringModule>(); + MODULE_LOG_INFO("load integrated module done."); } -- cgit v1.2.3 From 635a6c16e982ba2a5c7bea28eb31ee235df158c2 Mon Sep 17 00:00:00 2001 From: saturneric Date: Wed, 29 Nov 2023 20:45:48 +0800 Subject: feat: introduce cmd functions --- src/module/GpgFrontendModuleInit.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/module/GpgFrontendModuleInit.cpp') diff --git a/src/module/GpgFrontendModuleInit.cpp b/src/module/GpgFrontendModuleInit.cpp index 46a57f47..367d1be1 100644 --- a/src/module/GpgFrontendModuleInit.cpp +++ b/src/module/GpgFrontendModuleInit.cpp @@ -37,8 +37,8 @@ namespace GpgFrontend::Module { -void LoadGpgFrontendModules() { - SDK::InitModuleLoggingSystem(); +void LoadGpgFrontendModules(ModuleInitArgs args) { + SDK::InitModuleLoggingSystem(args.log_level); MODULE_LOG_INFO("loading integrated module..."); -- cgit v1.2.3 From 054e6e28cca2517dda2319ef683314b3318c39a6 Mon Sep 17 00:00:00 2001 From: saturneric Date: Sun, 3 Dec 2023 12:25:21 -0800 Subject: feat: standarized and speed up app env loading process --- src/module/GpgFrontendModuleInit.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'src/module/GpgFrontendModuleInit.cpp') diff --git a/src/module/GpgFrontendModuleInit.cpp b/src/module/GpgFrontendModuleInit.cpp index 367d1be1..1e83af0e 100644 --- a/src/module/GpgFrontendModuleInit.cpp +++ b/src/module/GpgFrontendModuleInit.cpp @@ -29,7 +29,9 @@ #include "GpgFrontendModuleInit.h" #include -#include + +#include "core/thread/Task.h" +#include "core/thread/TaskRunnerGetter.h" // integrated modules #include "integrated/gnupg_info_gathering_module/GnuPGInfoGatheringModule.h" @@ -37,8 +39,17 @@ namespace GpgFrontend::Module { +void LoadGpgFrontendModulesLoggingSystem(ModuleInitArgs args) { + GpgFrontend::Module::SDK::InitModuleLoggingSystem(args.log_level); +} + +void ShutdownGpgFrontendModulesLoggingSystem() { + GpgFrontend::Module::SDK::ShutdownModuleLoggingSystem(); +} + void LoadGpgFrontendModules(ModuleInitArgs args) { - SDK::InitModuleLoggingSystem(args.log_level); + // init the logging system for module system + LoadGpgFrontendModulesLoggingSystem(args); MODULE_LOG_INFO("loading integrated module..."); @@ -51,8 +62,13 @@ void LoadGpgFrontendModules(ModuleInitArgs args) { Integrated::GnuPGInfoGatheringModule::GnuPGInfoGatheringModule>(); MODULE_LOG_INFO("load integrated module done."); + + // must init at default thread before core + Thread::TaskRunnerGetter::GetInstance().GetTaskRunner()->PostTask( + new Thread::Task([](const DataObjectPtr&) -> int { return 0; }, + "modules_system_init_task")); } -void ShutdownGpgFrontendModules() { SDK::ShutdownModuleLoggingSystem(); } +void ShutdownGpgFrontendModules() {} } // namespace GpgFrontend::Module \ No newline at end of file -- cgit v1.2.3 From 9f19fe9bffe812ca6ad34e47f0d3fbb39c2a15b5 Mon Sep 17 00:00:00 2001 From: saturneric Date: Mon, 4 Dec 2023 19:20:42 +0800 Subject: fix: slove logger system isolation issues --- src/module/GpgFrontendModuleInit.cpp | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) (limited to 'src/module/GpgFrontendModuleInit.cpp') diff --git a/src/module/GpgFrontendModuleInit.cpp b/src/module/GpgFrontendModuleInit.cpp index 1e83af0e..d322a528 100644 --- a/src/module/GpgFrontendModuleInit.cpp +++ b/src/module/GpgFrontendModuleInit.cpp @@ -48,25 +48,27 @@ void ShutdownGpgFrontendModulesLoggingSystem() { } void LoadGpgFrontendModules(ModuleInitArgs args) { - // init the logging system for module system - LoadGpgFrontendModulesLoggingSystem(args); - - MODULE_LOG_INFO("loading integrated module..."); + // must init at default thread before core + Thread::TaskRunnerGetter::GetInstance().GetTaskRunner()->PostTask( + new Thread::Task( + [args](const DataObjectPtr&) -> int { + // init the logging system for module system + LoadGpgFrontendModulesLoggingSystem(args); - // VersionCheckingModule - RegisterAndActivateModule< - Integrated::VersionCheckingModule::VersionCheckingModule>(); + MODULE_LOG_INFO("loading integrated module..."); - // VersionCheckingModule - RegisterAndActivateModule< - Integrated::GnuPGInfoGatheringModule::GnuPGInfoGatheringModule>(); + // VersionCheckingModule + RegisterAndActivateModule< + Integrated::VersionCheckingModule::VersionCheckingModule>(); - MODULE_LOG_INFO("load integrated module done."); + // VersionCheckingModule + RegisterAndActivateModule(); - // must init at default thread before core - Thread::TaskRunnerGetter::GetInstance().GetTaskRunner()->PostTask( - new Thread::Task([](const DataObjectPtr&) -> int { return 0; }, - "modules_system_init_task")); + MODULE_LOG_INFO("load integrated module done."); + return 0; + }, + "modules_system_init_task")); } void ShutdownGpgFrontendModules() {} -- cgit v1.2.3 From 42264ed0d7a3c91fbe9f307984964ffc9e5fe65c Mon Sep 17 00:00:00 2001 From: saturneric Date: Wed, 13 Dec 2023 18:01:06 +0800 Subject: refactor: improve the structure of main,core and test module --- src/module/GpgFrontendModuleInit.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/module/GpgFrontendModuleInit.cpp') diff --git a/src/module/GpgFrontendModuleInit.cpp b/src/module/GpgFrontendModuleInit.cpp index d322a528..5db3b0b6 100644 --- a/src/module/GpgFrontendModuleInit.cpp +++ b/src/module/GpgFrontendModuleInit.cpp @@ -36,11 +36,12 @@ // integrated modules #include "integrated/gnupg_info_gathering_module/GnuPGInfoGatheringModule.h" #include "integrated/version_checking_module/VersionCheckingModule.h" +#include "spdlog/common.h" namespace GpgFrontend::Module { -void LoadGpgFrontendModulesLoggingSystem(ModuleInitArgs args) { - GpgFrontend::Module::SDK::InitModuleLoggingSystem(args.log_level); +void LoadGpgFrontendModulesLoggingSystem(spdlog::level::level_enum log_level) { + GpgFrontend::Module::SDK::InitModuleLoggingSystem(log_level); } void ShutdownGpgFrontendModulesLoggingSystem() { @@ -52,9 +53,6 @@ void LoadGpgFrontendModules(ModuleInitArgs args) { Thread::TaskRunnerGetter::GetInstance().GetTaskRunner()->PostTask( new Thread::Task( [args](const DataObjectPtr&) -> int { - // init the logging system for module system - LoadGpgFrontendModulesLoggingSystem(args); - MODULE_LOG_INFO("loading integrated module..."); // VersionCheckingModule -- cgit v1.2.3 From 644aa4397b03dbef73f8bfedc13925b51cad836b Mon Sep 17 00:00:00 2001 From: saturneric Date: Fri, 5 Jan 2024 20:55:15 +0800 Subject: feat: integrate logging api to core --- src/module/GpgFrontendModuleInit.cpp | 8 -------- 1 file changed, 8 deletions(-) (limited to 'src/module/GpgFrontendModuleInit.cpp') diff --git a/src/module/GpgFrontendModuleInit.cpp b/src/module/GpgFrontendModuleInit.cpp index 5db3b0b6..b2d29c71 100644 --- a/src/module/GpgFrontendModuleInit.cpp +++ b/src/module/GpgFrontendModuleInit.cpp @@ -40,14 +40,6 @@ namespace GpgFrontend::Module { -void LoadGpgFrontendModulesLoggingSystem(spdlog::level::level_enum log_level) { - GpgFrontend::Module::SDK::InitModuleLoggingSystem(log_level); -} - -void ShutdownGpgFrontendModulesLoggingSystem() { - GpgFrontend::Module::SDK::ShutdownModuleLoggingSystem(); -} - void LoadGpgFrontendModules(ModuleInitArgs args) { // must init at default thread before core Thread::TaskRunnerGetter::GetInstance().GetTaskRunner()->PostTask( -- cgit v1.2.3 From 5222a2fd1ba372f6eb67dc8fa71e334f1ff10bbb Mon Sep 17 00:00:00 2001 From: saturneric Date: Mon, 8 Jan 2024 17:26:41 +0800 Subject: fix: solve compile issue --- src/module/GpgFrontendModuleInit.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/module/GpgFrontendModuleInit.cpp') diff --git a/src/module/GpgFrontendModuleInit.cpp b/src/module/GpgFrontendModuleInit.cpp index b2d29c71..6f88b9ec 100644 --- a/src/module/GpgFrontendModuleInit.cpp +++ b/src/module/GpgFrontendModuleInit.cpp @@ -40,11 +40,11 @@ namespace GpgFrontend::Module { -void LoadGpgFrontendModules(ModuleInitArgs args) { +void LoadGpgFrontendModules(ModuleInitArgs) { // must init at default thread before core Thread::TaskRunnerGetter::GetInstance().GetTaskRunner()->PostTask( new Thread::Task( - [args](const DataObjectPtr&) -> int { + [](const DataObjectPtr&) -> int { MODULE_LOG_INFO("loading integrated module..."); // VersionCheckingModule -- cgit v1.2.3