X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/56d1a7c8820bd8913b68eafb8566a4185dd188b1..1cd2b12bd4e4d86f6cd099240795f3ebeb3852b3:/projects/stargazer/plugins/configuration/sgconfig/parser_services.cpp diff --git a/projects/stargazer/plugins/configuration/sgconfig/parser_services.cpp b/projects/stargazer/plugins/configuration/sgconfig/parser_services.cpp index 59e7f03c..2ccddd38 100644 --- a/projects/stargazer/plugins/configuration/sgconfig/parser_services.cpp +++ b/projects/stargazer/plugins/configuration/sgconfig/parser_services.cpp @@ -34,7 +34,7 @@ const char * GET_SERVICES::tag = "GetServices"; const char * GET_SERVICE::tag = "AddService"; const char * ADD_SERVICE::tag = "AddService"; const char * DEL_SERVICE::tag = "DelService"; -const char * CHG_SERVICE::tag = "ChgService"; +const char * CHG_SERVICE::tag = "SetService"; void GET_SERVICES::CreateAnswer() { @@ -47,14 +47,14 @@ void GET_SERVICES::CreateAnswer() }*/ m_answer = ""; - SERVICE_CONF conf; + ServiceConf conf; int h = m_services.OpenSearch(); while (m_services.SearchNext(h, &conf) == 0) { m_answer += ""; + "\" cost=\"" + std::to_string(conf.cost) + + "\" payDay=\"" + std::to_string(conf.payDay) + "\"/>"; } m_services.CloseSearch(h); m_answer += ""; @@ -80,14 +80,14 @@ void GET_SERVICE::CreateAnswer() return; }*/ - SERVICE_CONF conf; + ServiceConf conf; if (!m_services.Find(m_name, &conf)) m_answer = ""; else m_answer += "<" + m_tag + " name=\"" + conf.name + "\" comment=\"" + Encode12str(conf.comment) + - "\" cost=\"" + x2str(conf.cost) + - "\" payDay=\"" + x2str(conf.payDay) + "\"/>"; + "\" cost=\"" + std::to_string(conf.cost) + + "\" payDay=\"" + std::to_string(conf.payDay) + "\"/>"; } int ADD_SERVICE::Start(void *, const char * el, const char ** attr) @@ -102,11 +102,11 @@ int ADD_SERVICE::Start(void *, const char * el, const char ** attr) void ADD_SERVICE::CreateAnswer() { - SERVICE_CONF conf(m_name); + ServiceConf conf(m_name); if (m_services.Add(conf, &m_currAdmin) == 0) m_answer = "<" + m_tag + " result=\"Ok\"/>"; else - m_answer = "<" + m_tag + " result=\"Error. " + m_services.GetStrError() + "\"/>"; + m_answer = "<" + m_tag + " result=\"" + m_services.GetStrError() + "\"/>"; } int DEL_SERVICE::Start(void *, const char * el, const char ** attr) @@ -124,7 +124,7 @@ void DEL_SERVICE::CreateAnswer() if (m_services.Del(m_name, &m_currAdmin) == 0) m_answer = "<" + m_tag + " result=\"Ok\"/>"; else - m_answer = "<" + m_tag + " result=\"Error. " + m_services.GetStrError() + "\"/>"; + m_answer = "<" + m_tag + " result=\"" + m_services.GetStrError() + "\"/>"; } int CHG_SERVICE::Start(void *, const char * el, const char ** attr) @@ -133,7 +133,6 @@ int CHG_SERVICE::Start(void *, const char * el, const char ** attr) { for (size_t i = 0; i < 8; i += 2) { - printfd(__FILE__, "PARSER_CHG_SERVICE::attr[%d] = %s\n", i, attr[i]); if (attr[i] == NULL) break; @@ -154,6 +153,8 @@ int CHG_SERVICE::Start(void *, const char * el, const char ** attr) double cost = 0; if (str2x(attr[i + 1], cost) == 0) m_service.cost = cost; + else + printfd(__FILE__, "Bad cast from '%s' to double\n", attr[i + 1]); // TODO: log it continue; } @@ -163,6 +164,8 @@ int CHG_SERVICE::Start(void *, const char * el, const char ** attr) unsigned payDay; if (str2x(attr[i + 1], payDay) == 0) m_service.payDay = payDay; + else + printfd(__FILE__, "Bad cast from '%s' to unsigned\n", attr[i + 1]); // TODO: log it continue; } @@ -175,24 +178,25 @@ int CHG_SERVICE::Start(void *, const char * el, const char ** attr) void CHG_SERVICE::CreateAnswer() { - if (m_service.name.empty()) + if (!m_service.name) { m_answer = "<" + m_tag + " result=\"Empty service name.\"/>"; return; } - if (!m_services.Exists(m_service.name.const_data())) + if (!m_services.Exists(m_service.name.value())) { - m_answer = "<" + m_tag + " result = \"Service '" + m_service.name.const_data() + "' does not exist.\"/>"; + m_answer = "<" + m_tag + " result = \"Service '" + m_service.name.value() + "' does not exist.\"/>"; return; } - SERVICE_CONF orig; - m_services.Find(m_service.name.const_data(), &orig); + ServiceConf orig; + m_services.Find(m_service.name.value(), &orig); - m_service.Splice(orig); + ServiceConfOpt conf(orig); + conf.splice(m_service); - if (m_services.Change(m_service.GetData(), &m_currAdmin) != 0) + if (m_services.Change(conf.get({}), &m_currAdmin) != 0) m_answer = "<" + m_tag + " result = \"" + m_services.GetStrError() + "\"/>"; else m_answer = "<" + m_tag + " result = \"Ok\"/>";