From: Maxim Mamontov <faust.madf@gmail.com>
Date: Tue, 8 Oct 2013 12:58:48 +0000 (+0300)
Subject: Use simple parser fro CHG_ADMIN.
X-Git-Url: https://git.stg.codes/stg.git/commitdiff_plain/9f529554bd6dfa4cba4027f51753db42326ab4d9?ds=inline

Use simple parser fro CHG_ADMIN.
---

diff --git a/stglibs/srvconf.lib/parsers/chg_admin.cpp b/stglibs/srvconf.lib/parsers/chg_admin.cpp
index de918514..445ea280 100644
--- a/stglibs/srvconf.lib/parsers/chg_admin.cpp
+++ b/stglibs/srvconf.lib/parsers/chg_admin.cpp
@@ -27,37 +27,6 @@
 
 using namespace STG;
 
-CHG_ADMIN::PARSER::PARSER(SIMPLE::CALLBACK f, void * d)
-    : callback(f),
-      data(d),
-      depth(0)
-{
-}
-//-----------------------------------------------------------------------------
-int CHG_ADMIN::PARSER::ParseStart(const char *el, const char **attr)
-{
-depth++;
-if (depth == 1)
-    if (strcasecmp(el, "SetAdmin") == 0)
-        ParseAnswer(el, attr);
-return 0;
-}
-//-----------------------------------------------------------------------------
-void CHG_ADMIN::PARSER::ParseEnd(const char *)
-{
-depth--;
-}
-//-----------------------------------------------------------------------------
-void CHG_ADMIN::PARSER::ParseAnswer(const char * /*el*/, const char ** attr)
-{
-if (!callback)
-    return;
-if (attr && attr[0] && attr[1])
-    callback(strcasecmp(attr[1], "ok") == 0, attr[1], data);
-else
-    callback(false, "Invalid response.", data);
-}
-
 std::string CHG_ADMIN::Serialize(const ADMIN_CONF_RES & conf)
 {
 std::string params;
diff --git a/stglibs/srvconf.lib/parsers/chg_admin.h b/stglibs/srvconf.lib/parsers/chg_admin.h
index 9fd38104..c10332cd 100644
--- a/stglibs/srvconf.lib/parsers/chg_admin.h
+++ b/stglibs/srvconf.lib/parsers/chg_admin.h
@@ -34,21 +34,6 @@ namespace STG
 namespace CHG_ADMIN
 {
 
-class PARSER: public STG::PARSER
-{
-public:
-    PARSER(SIMPLE::CALLBACK f, void * data);
-    int  ParseStart(const char * el, const char ** attr);
-    void ParseEnd(const char * el);
-
-private:
-    SIMPLE::CALLBACK callback;
-    void * data;
-    int depth;
-
-    void ParseAnswer(const char * el, const char ** attr);
-};
-
 std::string Serialize(const ADMIN_CONF_RES & conf);
 
 } // namespace CHG_ADMIN
diff --git a/stglibs/srvconf.lib/servconf.cpp b/stglibs/srvconf.lib/servconf.cpp
index e8e07e10..d885fae6 100644
--- a/stglibs/srvconf.lib/servconf.cpp
+++ b/stglibs/srvconf.lib/servconf.cpp
@@ -126,7 +126,7 @@ return pImpl->Exec<GET_ADMIN::PARSER>("<GetAdmin login=\"" + login + "\"/>", f,
 
 int SERVCONF::ChgAdmin(const ADMIN_CONF_RES & conf, SIMPLE::CALLBACK f, void * data)
 {
-return pImpl->Exec<CHG_ADMIN::PARSER>("<ChgAdmin" + CHG_ADMIN::Serialize(conf) + "/>", f, data);
+return pImpl->Exec<SIMPLE::PARSER>("ChgAdmin", "<ChgAdmin" + CHG_ADMIN::Serialize(conf) + "/>", f, data);
 }
 
 int SERVCONF::AddAdmin(const std::string & login, const ADMIN_CONF & conf, SIMPLE::CALLBACK f, void * data)
@@ -134,7 +134,7 @@ int SERVCONF::AddAdmin(const std::string & login, const ADMIN_CONF & conf, SIMPL
 int res = pImpl->Exec<SIMPLE::PARSER>("AddAdmin", "<AddAdmin login=\"" + login + "\"/>", f, data);
 if (res != st_ok)
     return res;
-return pImpl->Exec<CHG_ADMIN::PARSER>("<ChgAdmin" + CHG_ADMIN::Serialize(conf) + "/>", f, data);
+return pImpl->Exec<SIMPLE::PARSER>("ChgAdmin", "<ChgAdmin" + CHG_ADMIN::Serialize(conf) + "/>", f, data);
 }
 
 int SERVCONF::DelAdmin(const std::string & login, SIMPLE::CALLBACK f, void * data)