X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/4271ab433cd55bbd2612292bcf39e4dc3d7274f1..0907aa4037b12b6b88ee24495d4577a064d4f8db:/stargazer/plugins/configuration/sgconfig/stgconfig.cpp diff --git a/stargazer/plugins/configuration/sgconfig/stgconfig.cpp b/stargazer/plugins/configuration/sgconfig/stgconfig.cpp deleted file mode 100644 index 3f47f24b..00000000 --- a/stargazer/plugins/configuration/sgconfig/stgconfig.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/* - * This program 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 2 of the License, or - * (at your option) any later version. - * - * This program 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 this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -/* - * Author : Boris Mikhailenko - */ - -#include "stgconfig.h" - -#include "stg/common.h" - -#include -#include -#include -#include - -//----------------------------------------------------------------------------- -//----------------------------------------------------------------------------- -//----------------------------------------------------------------------------- -bool STG_CONFIG_SETTINGS::ParseSettings(const STG::ModuleSettings & s) -{ - STG::ParamValue pv; - std::vector::const_iterator pvi; - /////////////////////////// - pv.param = "Port"; - pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv); - if (pvi == s.moduleParams.end() || pvi->value.empty()) - { - errorStr = "Parameter \'Port\' is not found."; - printfd(__FILE__, "%s\n", errorStr.c_str()); - return false; - } - int p; - if (ParseIntInRange(pvi->value[0], 2, 65535, &p)) - { - errorStr = "Parameter \'Port\' should be an integral value in range (2, 65535). Actual value: '" + pvi->value[0] + "'."; - printfd(__FILE__, "%s\n", errorStr.c_str()); - return false; - } - m_port = static_cast(p); - - pv.param = "BindAddress"; - pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv); - if (pvi != s.moduleParams.end() && !pvi->value.empty()) - m_bindAddress = pvi->value[0]; - - return true; -} -//----------------------------------------------------------------------------- -//----------------------------------------------------------------------------- -//----------------------------------------------------------------------------- -extern "C" STG::Plugin * GetPlugin() -{ - static STG_CONFIG plugin; - return &plugin; -} -//----------------------------------------------------------------------------- -//----------------------------------------------------------------------------- -//----------------------------------------------------------------------------- -STG_CONFIG::STG_CONFIG() - : nonstop(false), - isRunning(false), - logger(STG::PluginLogger::get("conf_sg")), - config(logger) -{ -} -//----------------------------------------------------------------------------- -int STG_CONFIG::ParseSettings() -{ - if (stgConfigSettings.ParseSettings(settings)) - return 0; - errorStr = stgConfigSettings.GetStrError(); - return -1; -} -//----------------------------------------------------------------------------- -int STG_CONFIG::Start() -{ - if (isRunning) - return 0; - - nonstop = true; - - config.SetPort(stgConfigSettings.GetPort()); - config.SetBindAddress(stgConfigSettings.GetBindAddress()); - - if (config.Prepare()) - { - errorStr = config.GetStrError(); - 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; - } - - return 0; -} -//----------------------------------------------------------------------------- -int STG_CONFIG::Stop() -{ - if (!isRunning) - return 0; - - config.Stop(); - - //5 seconds to thread stops itself - for (size_t i = 0; i < 25; ++i) - { - if (!isRunning) - break; - - struct timespec ts = {0, 200000000}; - nanosleep(&ts, NULL); - } - - if (isRunning) - return -1; - - return 0; -} -//----------------------------------------------------------------------------- -void * STG_CONFIG::Run(void * d) -{ - sigset_t signalSet; - sigfillset(&signalSet); - pthread_sigmask(SIG_BLOCK, &signalSet, NULL); - - STG_CONFIG & stgConf = *static_cast(d); - stgConf.isRunning = true; - - stgConf.config.Run(); - - stgConf.isRunning = false; - - return NULL; -}