//-----------------------------------------------------------------------------
SETTINGS_IMPL::SETTINGS_IMPL()
- : strError(),
+ : SETTINGS(),
+ strError(),
modulesPath("/usr/lib/stg"),
dirName(DIR_NUM),
confDir("/etc/stargazer"),
showFeeInCash(true),
messageTimeout(0),
feeChargeType(0),
+ reconnectOnTariffChange(false),
modulesSettings(),
storeModuleSettings(),
logger(GetStgLogger())
}
//-----------------------------------------------------------------------------
SETTINGS_IMPL::SETTINGS_IMPL(const std::string & cd)
- : strError(),
+ : SETTINGS(),
+ strError(),
modulesPath("/usr/lib/stg"),
dirName(DIR_NUM),
confDir(cd),
showFeeInCash(true),
messageTimeout(0),
feeChargeType(0),
+ reconnectOnTariffChange(false),
modulesSettings(),
storeModuleSettings(),
logger(GetStgLogger())
}
//-----------------------------------------------------------------------------
SETTINGS_IMPL::SETTINGS_IMPL(const SETTINGS_IMPL & rval)
- : strError(),
+ : SETTINGS(),
+ strError(),
modulesPath(rval.modulesPath),
dirName(rval.dirName),
confDir(rval.confDir),
showFeeInCash(rval.showFeeInCash),
messageTimeout(rval.messageTimeout),
feeChargeType(rval.feeChargeType),
+ reconnectOnTariffChange(rval.reconnectOnTariffChange),
modulesSettings(rval.modulesSettings),
storeModuleSettings(rval.storeModuleSettings),
logger(GetStgLogger())
{
}
//-----------------------------------------------------------------------------
-int SETTINGS_IMPL::ParseYesNo(const string & value, bool * val)
-{
-if (0 == strcasecmp(value.c_str(), "yes"))
- {
- *val = true;
- return 0;
- }
-if (0 == strcasecmp(value.c_str(), "no"))
- {
- *val = false;
- return 0;
- }
-
-strError = "Incorrect value \'" + value + "\'.";
-return -1;
-}
-//-----------------------------------------------------------------------------
-int SETTINGS_IMPL::ParseInt(const string & value, int * val)
-{
-if (str2x<int>(value, *val))
- {
- strError = "Cannot convert \'" + value + "\' to integer.";
- return -1;
- }
-return 0;
-}
-//-----------------------------------------------------------------------------
-int SETTINGS_IMPL::ParseUnsigned(const string & value, unsigned * val)
-{
-if (str2x<unsigned>(value, *val))
- {
- strError = "Cannot convert \'" + value + "\' to unsigned integer.";
- return -1;
- }
-return 0;
-}
-//-----------------------------------------------------------------------------
-int SETTINGS_IMPL::ParseIntInRange(const string & value, int min, int max, int * val)
-{
-if (ParseInt(value, val) != 0)
- return -1;
-
-if (*val < min || *val > max)
- {
- strError = "Value \'" + value + "\' out of range.";
- return -1;
- }
-
-return 0;
-}
-//-----------------------------------------------------------------------------
-int SETTINGS_IMPL::ParseUnsignedInRange(const string & value, unsigned min, unsigned max, unsigned * val)
-{
-if (ParseUnsigned(value, val) != 0)
- return -1;
-
-if (*val < min || *val > max)
- {
- strError = "Value \'" + value + "\' out of range.";
- return -1;
- }
-
-return 0;
-}
-//-----------------------------------------------------------------------------
int SETTINGS_IMPL::ParseModuleSettings(const DOTCONFDocumentNode * node, vector<PARAM_VALUE> * params)
{
const DOTCONFDocumentNode * childNode;
if (strcasecmp(node->getName(), "FeeChargeType") == 0)
{
- if (ParseUnsignedInRange(node->getValue(0), 0, 2, &feeChargeType) != 0)
+ if (ParseUnsignedInRange(node->getValue(0), 0, 3, &feeChargeType) != 0)
{
strError = "Incorrect FeeChargeType value: \'" + string(node->getValue(0)) + "\'";
return -1;
}
}
+ if (strcasecmp(node->getName(), "ReconnectOnTariffChange") == 0)
+ {
+ if (ParseYesNo(node->getValue(0), &reconnectOnTariffChange) != 0)
+ {
+ strError = "Incorrect ReconnectOnTariffChange value: \'" + string(node->getValue(0)) + "\'";
+ return -1;
+ }
+ }
+
if (strcasecmp(node->getName(), "DirNames") == 0)
{
const DOTCONFDocumentNode * child = node->getChildNode();