X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/cdd6c43fceeb5a37867ae902bb71429abad7fa64..02d8ff35c9a854ffd15a701e46a118bc51be3b7d:/stglibs/srvconf.lib/servconf.cpp diff --git a/stglibs/srvconf.lib/servconf.cpp b/stglibs/srvconf.lib/servconf.cpp index 8061d7aa..7848787b 100644 --- a/stglibs/srvconf.lib/servconf.cpp +++ b/stglibs/srvconf.lib/servconf.cpp @@ -24,58 +24,49 @@ $Author: faust $ */ -#include -#include +#include +#include -#include "servconf.h" +#include "stg/common.h" +#include "stg/servconf.h" 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) { - snprintf(sc->errorMsg, MAX_ERR_STR_LEN, "XML parse error at line %d: %s", - static_cast(XML_GetCurrentLineNumber(sc->parser)), - XML_ErrorString(XML_GetErrorCode(sc->parser))); - printf(sc->errorMsg, "XML parse error at line %d: %s", - XML_GetCurrentLineNumber(sc->parser), - XML_ErrorString(XML_GetErrorCode(sc->parser))); + 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) @@ -93,9 +84,25 @@ sc->End(el); } //----------------------------------------------------------------------------- SERVCONF::SERVCONF() + : currParser(NULL), + parseDepth(0), + error(0), + getUsersCallback(NULL), + getUserCallback(NULL), + authByCallback(NULL), + serverInfoCallback(NULL), + RecvChgUserCb(NULL), + checkUserCallback(NULL), + RecvSendMessageCb(NULL), + getUsersData(NULL), + getUserData(NULL), + authByData(NULL), + serverInfoData(NULL), + chgUserDataCb(NULL), + checkUserData(NULL), + sendMessageDataCb(NULL) { parser = XML_ParserCreate(NULL); -parseDepth = 0; } //----------------------------------------------------------------------------- void SERVCONF::SetServer(const char * server) @@ -125,24 +132,55 @@ 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) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } if ((ret = nt.Transact(request)) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } if ((ret = nt.Disconnect()) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } @@ -155,24 +193,24 @@ 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); if ((ret = nt.Connect()) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } if ((ret = nt.Transact(request)) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } if ((ret = nt.Disconnect()) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } @@ -195,47 +233,47 @@ nt.SetRxCallback(this, AnsRecv); if ((ret = nt.Connect()) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } if ((ret = nt.Transact(request)) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } if ((ret = nt.Disconnect()) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } 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); if ((ret = nt.Connect()) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } if ((ret = nt.Transact(request)) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } if ((ret = nt.Disconnect()) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } @@ -254,20 +292,17 @@ nt.SetRxCallback(this, AnsRecv); if ((ret = nt.Connect()) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); - printfd(__FILE__, "Error on connect: '%s'\n", errorMsg); + errorMsg = nt.GetError(); return ret; } if ((ret = nt.Transact(request)) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); - printfd(__FILE__, "Error on transact: '%s'\n", errorMsg); + errorMsg = nt.GetError(); return ret; } if ((ret = nt.Disconnect()) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); - printfd(__FILE__, "Error on disconnect: '%s'\n", errorMsg); + errorMsg = nt.GetError(); return ret; } @@ -288,17 +323,17 @@ nt.SetRxCallback(this, AnsRecv); if ((ret = nt.Connect()) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } if ((ret = nt.Transact(request)) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } if ((ret = nt.Disconnect()) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } @@ -312,24 +347,24 @@ 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); if ((ret = nt.Connect()) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } if ((ret = nt.Transact(request)) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } if ((ret = nt.Disconnect()) != st_ok) { - strncpy(errorMsg, nt.GetError(), MAX_ERR_STR_LEN); + errorMsg = nt.GetError(); return ret; } @@ -347,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) @@ -371,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) @@ -383,7 +424,7 @@ RecvSendMessageCb = f; sendMessageDataCb = data; } //----------------------------------------------------------------------------- -char * SERVCONF::GetStrError() +const std::string & SERVCONF::GetStrError() const { return errorMsg; }