X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/908dee0db9288bb455e9f1b68dd81ab50897a677..8c6fa3fbaccc22127280bf77a48fab5a3ee0716e:/stglibs/srvconf.lib/parsers/get_tariff.cpp diff --git a/stglibs/srvconf.lib/parsers/get_tariff.cpp b/stglibs/srvconf.lib/parsers/get_tariff.cpp index 0ffaabb6..a13205b3 100644 --- a/stglibs/srvconf.lib/parsers/get_tariff.cpp +++ b/stglibs/srvconf.lib/parsers/get_tariff.cpp @@ -55,11 +55,12 @@ void AddAOSParser(PROPERTY_PARSERS & parsers, const std::string & name, A & arra bool GetTimeSpan(const char ** attr, DIRPRICE_DATA & value, const std::string & attrName) { -int hb = 0; -int mb = 0; -int he = 0; -int me = 0; if (CheckValue(attr, attrName)) + { + int hb = 0; + int mb = 0; + int he = 0; + int me = 0; if (ParseTariffTimeStr(attr[1], hb, mb, he, me) == 0) { value.hDay = hb; @@ -68,6 +69,7 @@ if (CheckValue(attr, attrName)) value.mNight = me; return true; } + } return false; } @@ -76,17 +78,7 @@ bool GetTraffType(const char ** attr, T & value, const std::string & attrName) { if (!CheckValue(attr, attrName)) return false; -std::string type(attr[1]); -if (type == "up") - value = TRAFF_UP; -else if (type == "down") - value = TRAFF_DOWN; -else if (type == "up+down") - value = TRAFF_UP_DOWN; -else if (type == "max") - value = TRAFF_MAX; -else - return false; +value = TARIFF::StringToTraffType(attr[1]); return true; } @@ -105,6 +97,25 @@ else return true; } +template +bool GetChangePolicy(const char ** attr, T & value, const std::string & attrName) +{ +if (!CheckValue(attr, attrName)) + return false; +std::string type(attr[1]); +if (type == "allow") + value = TARIFF::ALLOW; +else if (type == "to_cheap") + value = TARIFF::TO_CHEAP; +else if (type == "to_expensive") + value = TARIFF::TO_EXPENSIVE; +else if (type == "deny") + value = TARIFF::DENY; +else + return false; +return true; +} + template bool GetSlashedValue(const char ** attr, A & array, T A::value_type:: * field) { @@ -139,6 +150,8 @@ GET_TARIFF::PARSER::PARSER(CALLBACK f, void * d, const std::string & e) AddParser(propertyParsers, "free", info.tariffConf.free); AddParser(propertyParsers, "traffType", info.tariffConf.traffType, GetTraffType); AddParser(propertyParsers, "period", info.tariffConf.period, GetPeriod); + AddParser(propertyParsers, "changePolicy", info.tariffConf.changePolicy, GetChangePolicy); + AddParser(propertyParsers, "changePolicyTimeout", info.tariffConf.changePolicyTimeout); for (size_t i = 0; i < DIR_NUM; ++i) AddParser(propertyParsers, "time" + unsigned2str(i), info.dirPrice[i], GetTimeSpan); AddAOSParser(propertyParsers, "priceDayA", info.dirPrice, &DIRPRICE_DATA::priceDayA, GetSlashedValue);