#include "stg/dotconfpp.h"
#include "settings_impl.h"
-using namespace std;
-
-//-----------------------------------------------------------------------------
-SETTINGS_IMPL::SETTINGS_IMPL()
- : SETTINGS(),
- 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),
- stgExecMsgKey(5555),
- executersNum(1),
- fullFee(false),
- dayFee(0),
- dayResetTraff(0),
- spreadFee(false),
- freeMbAllowInet(false),
- dayFeeIsLastDay(false),
- writeFreeMbTraffCost(false),
- showFeeInCash(true),
- messageTimeout(0),
- feeChargeType(0),
- reconnectOnTariffChange(false),
- modulesSettings(),
- storeModuleSettings(),
- logger(GetStgLogger())
-{
-}
//-----------------------------------------------------------------------------
SETTINGS_IMPL::SETTINGS_IMPL(const std::string & cd)
- : SETTINGS(),
- strError(),
- modulesPath("/usr/lib/stg"),
+ : modulesPath("/usr/lib/stg"),
dirName(DIR_NUM),
- confDir(cd),
- scriptsDir(cd),
- rules(cd + "/rules"),
+ confDir(cd.empty() ? "/etc/stargazer" : cd),
+ scriptsDir(confDir),
+ rules(confDir + "/rules"),
logFile("/var/log/stargazer.log"),
pidFile("/var/run/stargazer.pid"),
monitorDir("/var/stargazer/monitoring"),
spreadFee(false),
freeMbAllowInet(false),
dayFeeIsLastDay(false),
+ stopOnError(true),
writeFreeMbTraffCost(false),
showFeeInCash(true),
messageTimeout(0),
feeChargeType(0),
reconnectOnTariffChange(false),
- modulesSettings(),
- storeModuleSettings(),
logger(GetStgLogger())
{
}
//-----------------------------------------------------------------------------
SETTINGS_IMPL::SETTINGS_IMPL(const SETTINGS_IMPL & rval)
- : SETTINGS(),
- strError(),
- modulesPath(rval.modulesPath),
+ : modulesPath(rval.modulesPath),
dirName(rval.dirName),
confDir(rval.confDir),
scriptsDir(rval.scriptsDir),
spreadFee(rval.spreadFee),
freeMbAllowInet(rval.freeMbAllowInet),
dayFeeIsLastDay(rval.dayFeeIsLastDay),
+ stopOnError(rval.stopOnError),
writeFreeMbTraffCost(rval.writeFreeMbTraffCost),
showFeeInCash(rval.showFeeInCash),
messageTimeout(rval.messageTimeout),
{
}
//-----------------------------------------------------------------------------
-int SETTINGS_IMPL::ParseModuleSettings(const DOTCONFDocumentNode * node, vector<PARAM_VALUE> * params)
+SETTINGS_IMPL & SETTINGS_IMPL::operator=(const SETTINGS_IMPL & rhs)
+{
+ modulesPath = rhs.modulesPath;
+ dirName = rhs.dirName;
+ confDir = rhs.confDir;
+ scriptsDir = rhs.scriptsDir;
+ rules = rhs.rules;
+ logFile = rhs.logFile;
+ pidFile = rhs.pidFile;
+ monitorDir = rhs.monitorDir;
+ scriptParams = rhs.scriptParams;
+ monitoring = rhs.monitoring;
+ detailStatWritePeriod = rhs.detailStatWritePeriod;
+ statWritePeriod = rhs.statWritePeriod;
+ stgExecMsgKey = rhs.stgExecMsgKey;
+ executersNum = rhs.executersNum;
+ fullFee = rhs.fullFee;
+ dayFee = rhs.dayFee;
+ dayResetTraff = rhs.dayResetTraff;
+ spreadFee = rhs.spreadFee;
+ freeMbAllowInet = rhs.freeMbAllowInet;
+ dayFeeIsLastDay = rhs.dayFeeIsLastDay;
+ stopOnError = rhs.stopOnError;
+ writeFreeMbTraffCost = rhs.writeFreeMbTraffCost;
+ showFeeInCash = rhs.showFeeInCash;
+ messageTimeout = rhs.messageTimeout;
+ feeChargeType = rhs.feeChargeType;
+ reconnectOnTariffChange = rhs.reconnectOnTariffChange;
+
+ modulesSettings = rhs.modulesSettings;
+ storeModuleSettings = rhs.storeModuleSettings;
+ return *this;
+}
+//-----------------------------------------------------------------------------
+int SETTINGS_IMPL::ParseModuleSettings(const DOTCONFDocumentNode * node, std::vector<PARAM_VALUE> * params)
{
const DOTCONFDocumentNode * childNode;
PARAM_VALUE pv;
if (node->getValue(1))
{
- strError = "Unexpected value \'" + string(node->getValue(1)) + "\'.";
+ strError = "Unexpected value \'" + std::string(node->getValue(1)) + "\'.";
return -1;
}
DOTCONFDocument conf(DOTCONFDocument::CASEINSENSITIVE);
conf.setErrorCallback(SETTINGS_IMPL::ErrorCallback, this);
conf.setRequiredOptionNames(requiredOptions);
-string confFile = confDir + "/stargazer.conf";
+std::string confFile = confDir + "/stargazer.conf";
if(conf.setContent(confFile.c_str()) != 0)
{
{
if (ParseDetailStatWritePeriod(node->getValue(0)) != 0)
{
- strError = "Incorrect DetailStatWritePeriod value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect DetailStatWritePeriod value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (ParseUnsignedInRange(node->getValue(0), 1, 1440, &statWritePeriod) != 0)
{
- strError = "Incorrect StatWritePeriod value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect StatWritePeriod value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (ParseInt(node->getValue(0), &stgExecMsgKey) != 0)
{
- strError = "Incorrect ExecMsgKey value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect ExecMsgKey value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (ParseUnsignedInRange(node->getValue(0), 1, 1024, &executersNum) != 0)
{
- strError = "Incorrect ExecutersNum value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect ExecutersNum value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (ParseUnsignedInRange(node->getValue(0), 0, 31, &dayFee) != 0)
{
- strError = "Incorrect DayFee value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect DayFee value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (ParseYesNo(node->getValue(0), &fullFee) != 0)
{
- strError = "Incorrect FullFee value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect FullFee value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (ParseUnsignedInRange(node->getValue(0), 0, 31, &dayResetTraff) != 0)
{
- strError = "Incorrect DayResetTraff value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect DayResetTraff value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (ParseYesNo(node->getValue(0), &spreadFee) != 0)
{
- strError = "Incorrect SpreadFee value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect SpreadFee value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (ParseYesNo(node->getValue(0), &freeMbAllowInet) != 0)
{
- strError = "Incorrect FreeMbAllowInet value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect FreeMbAllowInet value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (ParseYesNo(node->getValue(0), &dayFeeIsLastDay) != 0)
{
- strError = "Incorrect DayFeeIsLastDay value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect DayFeeIsLastDay value: \'" + std::string(node->getValue(0)) + "\'";
+ return -1;
+ }
+ }
+
+ if (strcasecmp(node->getName(), "StopOnError") == 0)
+ {
+ if (ParseYesNo(node->getValue(0), &stopOnError) != 0)
+ {
+ strError = "Incorrect StopOnError value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (ParseYesNo(node->getValue(0), &writeFreeMbTraffCost) != 0)
{
- strError = "Incorrect WriteFreeMbTraffCost value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect WriteFreeMbTraffCost value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (ParseYesNo(node->getValue(0), &showFeeInCash) != 0)
{
- strError = "Incorrect ShowFeeInCash value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect ShowFeeInCash value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (ParseUnsigned(node->getValue(0), &messageTimeout) != 0)
{
- strError = "Incorrect MessageTimeout value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect MessageTimeout value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (ParseUnsignedInRange(node->getValue(0), 0, 3, &feeChargeType) != 0)
{
- strError = "Incorrect FeeChargeType value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect FeeChargeType value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (ParseYesNo(node->getValue(0), &reconnectOnTariffChange) != 0)
{
- strError = "Incorrect ReconnectOnTariffChange value: \'" + string(node->getValue(0)) + "\'";
+ strError = "Incorrect ReconnectOnTariffChange value: \'" + std::string(node->getValue(0)) + "\'";
return -1;
}
}
{
if (node->getValue(1))
{
- strError = "Unexpected \'" + string(node->getValue(1)) + "\'.";
+ strError = "Unexpected \'" + std::string(node->getValue(1)) + "\'.";
return -1;
}
{
if (node->getValue(0))
{
- strError = "Unexpected \'" + string(node->getValue(0)) + "\'.";
+ strError = "Unexpected \'" + std::string(node->getValue(0)) + "\'.";
return -1;
}
const DOTCONFDocumentNode * child = node->getChildNode();
}
}
+ if (strcasecmp(node->getName(), "ScriptParams") == 0)
+ {
+ for (int i = 0; node->getValue(i) != NULL; ++i)
+ {
+ scriptParams.push_back(node->getValue(i));
+ }
+ }
node = node->getNextNode();
}
return 0;
}
//-----------------------------------------------------------------------------
-int SETTINGS_IMPL::ParseDetailStatWritePeriod(const string & detailStatPeriodStr)
+int SETTINGS_IMPL::ParseDetailStatWritePeriod(const std::string & detailStatPeriodStr)
{
if (detailStatPeriodStr == "1")
{