X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/02d8ff35c9a854ffd15a701e46a118bc51be3b7d..f384309c9c663a4b381d2e1a8545693514835395:/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..b5f4eb73 100644 --- a/stglibs/srvconf.lib/parser_chg_user.cpp +++ b/stglibs/srvconf.lib/parser_chg_user.cpp @@ -19,3 +19,53 @@ * Author : Maxim Mamontov */ +#include "parser_chg_user.h" + +#include + +#include + +using namespace STG; + +CHG_USER::PARSER::PARSER() + : callback(NULL), + data(NULL), + depth(0) +{ +} +//----------------------------------------------------------------------------- +int CHG_USER::PARSER::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 CHG_USER::PARSER::ParseEnd(const char *) +{ +depth--; +} +//----------------------------------------------------------------------------- +void CHG_USER::PARSER::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 CHG_USER::PARSER::SetCallback(CALLBACK f, void * d) +{ +callback = f; +data = d; +}