X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/321b5c0630ef3b27469a008be31c9fcc131c2c8d..c26f4f6b17d688b3defb790486daf42392068aa3:/projects/stargazer/settings_impl.cpp diff --git a/projects/stargazer/settings_impl.cpp b/projects/stargazer/settings_impl.cpp index 8af7f7aa..14609647 100644 --- a/projects/stargazer/settings_impl.cpp +++ b/projects/stargazer/settings_impl.cpp @@ -32,17 +32,23 @@ $Author: faust $ #include #include -#include "settings.h" +#include "settings_impl.h" #include "stg_logger.h" #include "dotconfpp.h" using namespace std; //----------------------------------------------------------------------------- -SETTINGS::SETTINGS() - : confDir("/etc/stargazer"), +SETTINGS_IMPL::SETTINGS_IMPL() + : strError(), + modulesPath("/usr/lib/stg"), + dirName(DIR_NUM), + confDir("/etc/stargazer"), scriptsDir("/etc/stargazer"), + rules("/etc/stargazer/rules"), + logFile("/var/log/stargazer.log"), pidFile("/var/run/stargazer.pid"), + monitorDir("/var/stargazer/monitoring"), monitoring(false), detailStatWritePeriod(dsPeriod_1_6), statWritePeriod(10), @@ -57,13 +63,22 @@ SETTINGS::SETTINGS() writeFreeMbTraffCost(false), showFeeInCash(true), messageTimeout(0), + modulesSettings(), + storeModuleSettings(), logger(GetStgLogger()) { } //----------------------------------------------------------------------------- -SETTINGS::SETTINGS(const std::string & cd) - : confDir(cd), +SETTINGS_IMPL::SETTINGS_IMPL(const std::string & cd) + : strError(), + modulesPath("/usr/lib/stg"), + dirName(DIR_NUM), + confDir(cd), scriptsDir(cd), + rules(cd + "/rules"), + logFile("/var/log/stargazer.log"), + pidFile("/var/run/stargazer.pid"), + monitorDir("/var/stargazer/monitoring"), monitoring(false), detailStatWritePeriod(dsPeriod_1_6), statWritePeriod(10), @@ -78,37 +93,43 @@ SETTINGS::SETTINGS(const std::string & cd) writeFreeMbTraffCost(false), showFeeInCash(true), messageTimeout(0), + modulesSettings(), + storeModuleSettings(), logger(GetStgLogger()) { } //----------------------------------------------------------------------------- -SETTINGS::SETTINGS(const SETTINGS & rval) - : confDir(rval.confDir), +SETTINGS_IMPL::SETTINGS_IMPL(const SETTINGS_IMPL & rval) + : strError(), + modulesPath(rval.modulesPath), + dirName(rval.dirName), + confDir(rval.confDir), scriptsDir(rval.scriptsDir), + rules(rval.rules), + logFile(rval.logFile), pidFile(rval.pidFile), + monitorDir(rval.monitorDir), monitoring(rval.monitoring), - detailStatWritePeriod(dsPeriod_1_6), - statWritePeriod(10), + detailStatWritePeriod(rval.detailStatWritePeriod), + statWritePeriod(rval.statWritePeriod), stgExecMsgKey(rval.stgExecMsgKey), executersNum(rval.executersNum), fullFee(rval.fullFee), - dayFee(0), - dayResetTraff(0), + dayFee(rval.dayFee), + dayResetTraff(rval.dayResetTraff), spreadFee(rval.spreadFee), - freeMbAllowInet(false), - dayFeeIsLastDay(false), - writeFreeMbTraffCost(false), + freeMbAllowInet(rval.freeMbAllowInet), + dayFeeIsLastDay(rval.dayFeeIsLastDay), + writeFreeMbTraffCost(rval.writeFreeMbTraffCost), showFeeInCash(rval.showFeeInCash), messageTimeout(rval.messageTimeout), + modulesSettings(rval.modulesSettings), + storeModuleSettings(rval.storeModuleSettings), logger(GetStgLogger()) { } //----------------------------------------------------------------------------- -SETTINGS::~SETTINGS() -{ -} -//----------------------------------------------------------------------------- -int SETTINGS::ParseYesNo(const string & value, bool * val) +int SETTINGS_IMPL::ParseYesNo(const string & value, bool * val) { if (0 == strcasecmp(value.c_str(), "yes")) { @@ -125,7 +146,7 @@ strError = "Incorrect value \'" + value + "\'."; return -1; } //----------------------------------------------------------------------------- -int SETTINGS::ParseInt(const string & value, int * val) +int SETTINGS_IMPL::ParseInt(const string & value, int * val) { if (str2x(value, *val)) { @@ -135,7 +156,7 @@ if (str2x(value, *val)) return 0; } //----------------------------------------------------------------------------- -int SETTINGS::ParseUnsigned(const string & value, unsigned * val) +int SETTINGS_IMPL::ParseUnsigned(const string & value, unsigned * val) { if (str2x(value, *val)) { @@ -145,7 +166,7 @@ if (str2x(value, *val)) return 0; } //----------------------------------------------------------------------------- -int SETTINGS::ParseIntInRange(const string & value, int min, int max, int * val) +int SETTINGS_IMPL::ParseIntInRange(const string & value, int min, int max, int * val) { if (ParseInt(value, val) != 0) return -1; @@ -159,7 +180,7 @@ if (*val < min || *val > max) return 0; } //----------------------------------------------------------------------------- -int SETTINGS::ParseUnsignedInRange(const string & value, unsigned min, unsigned max, unsigned * val) +int SETTINGS_IMPL::ParseUnsignedInRange(const string & value, unsigned min, unsigned max, unsigned * val) { if (ParseUnsigned(value, val) != 0) return -1; @@ -173,7 +194,7 @@ if (*val < min || *val > max) return 0; } //----------------------------------------------------------------------------- -int SETTINGS::ParseModuleSettings(const DOTCONFDocumentNode * node, vector * params) +int SETTINGS_IMPL::ParseModuleSettings(const DOTCONFDocumentNode * node, vector * params) { const DOTCONFDocumentNode * childNode; PARAM_VALUE pv; @@ -212,14 +233,14 @@ while (childNode) return 0; } //----------------------------------------------------------------------------- -void SETTINGS::ErrorCallback(void * data, const char * buf) +void SETTINGS_IMPL::ErrorCallback(void * data, const char * buf) { printfd(__FILE__, buf); - SETTINGS * settings = static_cast(data); + SETTINGS_IMPL * settings = static_cast(data); settings->logger(buf); } //----------------------------------------------------------------------------- -int SETTINGS::ReadSettings() +int SETTINGS_IMPL::ReadSettings() { const char * requiredOptions[] = { "ModulesPath", @@ -240,7 +261,7 @@ int storeModulesCount = 0; modulesSettings.clear(); DOTCONFDocument conf(DOTCONFDocument::CASEINSENSITIVE); -conf.setErrorCallback(SETTINGS::ErrorCallback, this); +conf.setErrorCallback(SETTINGS_IMPL::ErrorCallback, this); conf.setRequiredOptionNames(requiredOptions); string confFile = confDir + "/stargazer.conf"; @@ -414,6 +435,7 @@ while (node) if (child) { const DOTCONFDocumentNode * dirNameNode; + dirName.reserve(DIR_NUM); for (int i = 0; i < DIR_NUM; i++) { char strDirName[12]; @@ -479,7 +501,7 @@ while (node) return 0; } //----------------------------------------------------------------------------- -int SETTINGS::ParseDetailStatWritePeriod(const string & detailStatPeriodStr) +int SETTINGS_IMPL::ParseDetailStatWritePeriod(const string & detailStatPeriodStr) { if (detailStatPeriodStr == "1") {