X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/703ad5b9a14dc2a42849669d3618a8ba1136bb92..02d8ff35c9a854ffd15a701e46a118bc51be3b7d:/stglibs/srvconf.lib/servconf.cpp diff --git a/stglibs/srvconf.lib/servconf.cpp b/stglibs/srvconf.lib/servconf.cpp index ab386cf7..7848787b 100644 --- a/stglibs/srvconf.lib/servconf.cpp +++ b/stglibs/srvconf.lib/servconf.cpp @@ -35,31 +35,23 @@ using namespace std; //----------------------------------------------------------------------------- int AnsRecv(void * data, list * list1) { -//NODE * node; -SERVCONF * sc; -char ans[ENC_MSG_LEN + 1]; -int len, done = 0; - -sc = (SERVCONF*)data; +SERVCONF * sc = static_cast(data); XML_ParserReset(sc->parser, NULL); XML_SetElementHandler(sc->parser, Start, End); XML_SetUserData(sc->parser, data); +char ans[ENC_MSG_LEN + 1]; +int len, done = 0; + //loop parsing list::iterator node; node = list1->begin(); -if (node == list1->end()) - { - return st_ok; - } - while (node != list1->end()) { strncpy(ans, node->c_str(), ENC_MSG_LEN); ans[ENC_MSG_LEN] = 0; - //printf("---> %s\n", ans); len = strlen(ans); if (XML_Parse(sc->parser, ans, len, done) == XML_STATUS_ERROR) @@ -67,13 +59,14 @@ while (node != list1->end()) strprintf(&sc->errorMsg, "XML parse error at line %d: %s", static_cast(XML_GetCurrentLineNumber(sc->parser)), XML_ErrorString(XML_GetErrorCode(sc->parser))); + printf("%s\n", sc->errorMsg.c_str()); return st_xml_parse_error; } ++node; } -return 0; +return st_ok; } //----------------------------------------------------------------------------- void Start(void *data, const char *el, const char **attr) @@ -94,17 +87,19 @@ SERVCONF::SERVCONF() : currParser(NULL), parseDepth(0), error(0), - RecvUserDataCb(NULL), - RecvGetUserDataCb(NULL), - RecvServerInfoDataCb(NULL), + getUsersCallback(NULL), + getUserCallback(NULL), + authByCallback(NULL), + serverInfoCallback(NULL), RecvChgUserCb(NULL), - RecvCheckUserCb(NULL), + checkUserCallback(NULL), RecvSendMessageCb(NULL), - getUserDataDataCb(NULL), - getUsersDataDataCb(NULL), - getServerInfoDataCb(NULL), + getUsersData(NULL), + getUserData(NULL), + authByData(NULL), + serverInfoData(NULL), chgUserDataCb(NULL), - checkUserDataCb(NULL), + checkUserData(NULL), sendMessageDataCb(NULL) { parser = XML_ParserCreate(NULL); @@ -137,11 +132,42 @@ snprintf(request, 255, "", l); int ret; currParser = &parserGetUser; -((PARSER_GET_USER*)currParser)->SetUserDataRecvCb(RecvGetUserDataCb, getUserDataDataCb); +((PARSER_GET_USER*)currParser)->SetCallback(getUserCallback, getUserData); nt.Reset(); nt.SetRxCallback(this, AnsRecv); +if ((ret = nt.Connect()) != st_ok) + { + errorMsg = nt.GetError(); + return ret; + } +if ((ret = nt.Transact(request)) != st_ok) + { + errorMsg = nt.GetError(); + return ret; + } +if ((ret = nt.Disconnect()) != st_ok) + { + errorMsg = nt.GetError(); + return ret; + } + +return st_ok; +} +//----------------------------------------------------------------------------- +int SERVCONF::AuthBy(const char * l) +{ +char request[255]; +snprintf(request, 255, "", l); + +currParser = &parserAuthBy; +((PARSER_AUTH_BY*)currParser)->SetCallback(authByCallback, authByData); + +nt.Reset(); +nt.SetRxCallback(this, AnsRecv); + +int ret; if ((ret = nt.Connect()) != st_ok) { errorMsg = nt.GetError(); @@ -167,7 +193,7 @@ char request[] = ""; int ret; currParser = &parserGetUsers; -((PARSER_GET_USERS*)currParser)->SetUserDataRecvCb(RecvUserDataCb, getUsersDataDataCb); +((PARSER_GET_USERS*)currParser)->SetCallback(getUsersCallback, getUsersData); nt.Reset(); nt.SetRxCallback(this, AnsRecv); @@ -224,13 +250,13 @@ if ((ret = nt.Disconnect()) != st_ok) return st_ok; } //----------------------------------------------------------------------------- -int SERVCONF::GetServerInfo() +int SERVCONF::ServerInfo() { char request[] = ""; int ret; currParser = &parserServerInfo; -((PARSER_GET_SERVER_INFO*)currParser)->SetServerInfoRecvCb(RecvServerInfoDataCb, getServerInfoDataCb); +((PARSER_SERVER_INFO*)currParser)->SetCallback(serverInfoCallback, serverInfoData); nt.Reset(); nt.SetRxCallback(this, AnsRecv); @@ -321,7 +347,7 @@ snprintf(request, 255, "", login, passw int ret; currParser = &parserCheckUser; -((PARSER_CHECK_USER*)currParser)->SetCheckUserRecvCb(RecvCheckUserCb, checkUserDataCb); +((PARSER_CHECK_USER*)currParser)->SetCallback(checkUserCallback, checkUserData); nt.Reset(); nt.SetRxCallback(this, AnsRecv); @@ -356,22 +382,28 @@ void SERVCONF::End(const char *el) currParser->ParseEnd(el); } //----------------------------------------------------------------------------- -void SERVCONF::SetUserDataRecvCb(RecvUserDataCb_t f, void * data) +void SERVCONF::SetGetUsersCallback(PARSER_GET_USERS::CALLBACK f, void * data) +{ +getUsersCallback = f; +getUsersData = data; +} +//----------------------------------------------------------------------------- +void SERVCONF::SetGetUserCallback(PARSER_GET_USER::CALLBACK f, void * data) { -RecvUserDataCb = f; -getUsersDataDataCb = data; +getUserCallback = f; +getUserData = data; } //----------------------------------------------------------------------------- -void SERVCONF::SetGetUserDataRecvCb(RecvUserDataCb_t f, void * data) +void SERVCONF::SetAuthByCallback(PARSER_AUTH_BY::CALLBACK f, void * data) { -RecvGetUserDataCb = f; //GET_USER -getUserDataDataCb = data; +authByCallback = f; +authByData = data; } //----------------------------------------------------------------------------- -void SERVCONF::SetServerInfoRecvCb(RecvServerInfoDataCb_t f, void * data) +void SERVCONF::SetServerInfoCallback(PARSER_SERVER_INFO::CALLBACK f, void * data) { -RecvServerInfoDataCb = f; -getServerInfoDataCb = data; +serverInfoCallback = f; +serverInfoData = data; } //----------------------------------------------------------------------------- void SERVCONF::SetChgUserCb(RecvChgUserCb_t f, void * data) @@ -380,10 +412,10 @@ RecvChgUserCb = f; chgUserDataCb = data; } //----------------------------------------------------------------------------- -void SERVCONF::SetCheckUserCb(RecvCheckUserCb_t f, void * data) +void SERVCONF::SetCheckUserCallback(PARSER_CHECK_USER::CALLBACK f, void * data) { -RecvCheckUserCb = f; -checkUserDataCb = data; +checkUserCallback = f; +checkUserData = data; } //----------------------------------------------------------------------------- void SERVCONF::SetSendMessageCb(RecvSendMessageCb_t f, void * data)