X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/02d8ff35c9a854ffd15a701e46a118bc51be3b7d..e87b76d3a75c2833d2a646b38210584dc1a93624:/stglibs/srvconf.lib/parser_chg_user.cpp diff --git a/stglibs/srvconf.lib/parser_chg_user.cpp b/stglibs/srvconf.lib/parser_chg_user.cpp index bf48e648..53ce941d 100644 --- a/stglibs/srvconf.lib/parser_chg_user.cpp +++ b/stglibs/srvconf.lib/parser_chg_user.cpp @@ -19,3 +19,51 @@ * Author : Maxim Mamontov */ +#include "stg/parser_chg_user.h" + +#include + +#include + +PARSER_CHG_USER::PARSER_CHG_USER() + : callback(NULL), + data(NULL), + depth(0) +{ +} +//----------------------------------------------------------------------------- +int PARSER_CHG_USER::ParseStart(const char *el, const char **attr) +{ +depth++; +if (depth == 1) + { + if (strcasecmp(el, "SetUser") == 0) + ParseAnswer(el, attr); + else if (strcasecmp(el, "DelUser") == 0) + ParseAnswer(el, attr); + else if (strcasecmp(el, "AddUser") == 0) + ParseAnswer(el, attr); + } +return 0; +} +//----------------------------------------------------------------------------- +void PARSER_CHG_USER::ParseEnd(const char *) +{ +depth--; +} +//----------------------------------------------------------------------------- +void PARSER_CHG_USER::ParseAnswer(const char * /*el*/, const char ** attr) +{ +if (!callback) + return; +if (attr && attr[0] && attr[1]) + callback(strcasecmp(attr[1], "ok") == 0, attr[2] && attr[3] ? attr[3] : "", data); +else + callback(false, "Invalid response.", data); +} +//----------------------------------------------------------------------------- +void PARSER_CHG_USER::SetCallback(CALLBACK f, void * d) +{ +callback = f; +data = d; +}