X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/dd226cecb0cb5dad554ed3adf7bf60d2eb059a30..479b8853c2ab18c98926a9369a03888021e9b986:/projects/stargazer/plugins/configuration/sgconfig/stgconfig.cpp diff --git a/projects/stargazer/plugins/configuration/sgconfig/stgconfig.cpp b/projects/stargazer/plugins/configuration/sgconfig/stgconfig.cpp index 73f58145..0896bb85 100644 --- a/projects/stargazer/plugins/configuration/sgconfig/stgconfig.cpp +++ b/projects/stargazer/plugins/configuration/sgconfig/stgconfig.cpp @@ -20,7 +20,6 @@ #include "stgconfig.h" -#include "stg/plugin_creator.h" #include "stg/common.h" #include @@ -31,14 +30,10 @@ //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -static PLUGIN_CREATOR stgc; -//----------------------------------------------------------------------------- -//----------------------------------------------------------------------------- -//----------------------------------------------------------------------------- -bool STG_CONFIG_SETTINGS::ParseSettings(const MODULE_SETTINGS & s) +bool STG_CONFIG_SETTINGS::ParseSettings(const STG::ModuleSettings & s) { - PARAM_VALUE pv; - std::vector::const_iterator pvi; + STG::ParamValue pv; + std::vector::const_iterator pvi; /////////////////////////// pv.param = "Port"; pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv); @@ -67,9 +62,10 @@ bool STG_CONFIG_SETTINGS::ParseSettings(const MODULE_SETTINGS & s) //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -extern "C" PLUGIN * GetPlugin() +extern "C" STG::Plugin * GetPlugin() { -return stgc.GetPlugin(); + static STG_CONFIG plugin; + return &plugin; } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- @@ -77,7 +73,7 @@ return stgc.GetPlugin(); STG_CONFIG::STG_CONFIG() : nonstop(false), isRunning(false), - logger(GetPluginLogger(GetStgLogger(), "conf_sg")), + logger(STG::PluginLogger::get("conf_sg")), config(logger) { } @@ -106,13 +102,7 @@ int STG_CONFIG::Start() return -1; } - if (pthread_create(&thread, NULL, Run, this)) - { - errorStr = std::string("Cannot create thread: '") + strerror(errno) + "'."; - printfd(__FILE__, "%s\n", errorStr.c_str()); - logger(errorStr); - return -1; - } + m_thread = std::jthread([this](auto token){ Run(token); }); return 0; } @@ -123,6 +113,7 @@ int STG_CONFIG::Stop() return 0; config.Stop(); + m_thread.request_stop(); //5 seconds to thread stops itself for (size_t i = 0; i < 25; ++i) @@ -135,23 +126,22 @@ int STG_CONFIG::Stop() } if (isRunning) - return -1; + m_thread.detach(); + else + m_thread.join(); return 0; } //----------------------------------------------------------------------------- -void * STG_CONFIG::Run(void * d) +void STG_CONFIG::Run(std::stop_token token) { sigset_t signalSet; sigfillset(&signalSet); pthread_sigmask(SIG_BLOCK, &signalSet, NULL); - STG_CONFIG & stgConf = *static_cast(d); - stgConf.isRunning = true; - - stgConf.config.Run(); + isRunning = true; - stgConf.isRunning = false; + config.Run(token); - return NULL; + isRunning = false; }