X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/703ad5b9a14dc2a42849669d3618a8ba1136bb92..6d5f129aad1a6cbaf4d1441c68398e00fa949185:/stglibs/srvconf.lib/servconf.cpp diff --git a/stglibs/srvconf.lib/servconf.cpp b/stglibs/srvconf.lib/servconf.cpp index ab386cf7..b8507098 100644 --- a/stglibs/srvconf.lib/servconf.cpp +++ b/stglibs/srvconf.lib/servconf.cpp @@ -24,42 +24,35 @@ $Author: faust $ */ -#include -#include +#include "stg/servconf.h" #include "stg/common.h" -#include "stg/servconf.h" + +#include +#include 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 +60,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) @@ -92,22 +86,11 @@ sc->End(el); //----------------------------------------------------------------------------- SERVCONF::SERVCONF() : currParser(NULL), - parseDepth(0), - error(0), - RecvUserDataCb(NULL), - RecvGetUserDataCb(NULL), - RecvServerInfoDataCb(NULL), - RecvChgUserCb(NULL), - RecvCheckUserCb(NULL), RecvSendMessageCb(NULL), - getUserDataDataCb(NULL), - getUsersDataDataCb(NULL), - getServerInfoDataCb(NULL), - chgUserDataCb(NULL), - checkUserDataCb(NULL), sendMessageDataCb(NULL) { parser = XML_ParserCreate(NULL); +nt.SetRxCallback(this, AnsRecv); } //----------------------------------------------------------------------------- void SERVCONF::SetServer(const char * server) @@ -134,61 +117,29 @@ int SERVCONF::GetUser(const char * l) { char request[255]; snprintf(request, 255, "", l); -int ret; currParser = &parserGetUser; -((PARSER_GET_USER*)currParser)->SetUserDataRecvCb(RecvGetUserDataCb, getUserDataDataCb); -nt.Reset(); -nt.SetRxCallback(this, AnsRecv); +return Exec(request); +} +//----------------------------------------------------------------------------- +int SERVCONF::AuthBy(const char * l) +{ +char request[255]; +snprintf(request, 255, "", l); -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; - } +currParser = &parserAuthBy; -return st_ok; +return Exec(request); } //----------------------------------------------------------------------------- int SERVCONF::GetUsers() { char request[] = ""; -int ret; currParser = &parserGetUsers; -((PARSER_GET_USERS*)currParser)->SetUserDataRecvCb(RecvUserDataCb, getUsersDataDataCb); - -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; +return Exec(request); } //----------------------------------------------------------------------------- int SERVCONF::SendMessage(const char * login, const char * message, int prio) @@ -197,152 +148,47 @@ char request[1000]; char msg[500]; Encode12(msg, message, strlen(message)); snprintf(request, 1000, "", login, prio, msg); -int ret; currParser = &parserSendMessage; parserSendMessage.SetSendMessageRecvCb(RecvSendMessageCb, sendMessageDataCb); -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; +return Exec(request); } //----------------------------------------------------------------------------- -int SERVCONF::GetServerInfo() +int SERVCONF::ServerInfo() { char request[] = ""; -int ret; currParser = &parserServerInfo; -((PARSER_GET_SERVER_INFO*)currParser)->SetServerInfoRecvCb(RecvServerInfoDataCb, getServerInfoDataCb); - -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; +return Exec(request); } //----------------------------------------------------------------------------- int SERVCONF::ChgUser(const char * request) { -int ret; - currParser = &parserChgUser; -((PARSER_CHG_USER*)currParser)->SetChgUserRecvCb(RecvChgUserCb, chgUserDataCb); - -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; +return Exec(request); } //----------------------------------------------------------------------------- // TODO: remove this shit! //----------------------------------------------------------------------------- int SERVCONF::MsgUser(const char * request) { -int ret; - currParser = &parserSendMessage; parserSendMessage.SetSendMessageRecvCb(RecvSendMessageCb, sendMessageDataCb); -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; +return Exec(request); } //----------------------------------------------------------------------------- int SERVCONF::CheckUser(const char * login, const char * password) { char request[255]; snprintf(request, 255, "", login, password); -int ret; currParser = &parserCheckUser; -((PARSER_CHECK_USER*)currParser)->SetCheckUserRecvCb(RecvCheckUserCb, checkUserDataCb); - -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; +return Exec(request); } //----------------------------------------------------------------------------- int SERVCONF::Start(const char *el, const char **attr) @@ -356,34 +202,34 @@ 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) { -RecvUserDataCb = f; -getUsersDataDataCb = data; +parserGetUsers.SetCallback(f, data); } //----------------------------------------------------------------------------- -void SERVCONF::SetGetUserDataRecvCb(RecvUserDataCb_t f, void * data) +void SERVCONF::SetGetUserCallback(PARSER_GET_USER::CALLBACK f, void * data) { -RecvGetUserDataCb = f; //GET_USER -getUserDataDataCb = data; +parserGetUser.SetCallback(f, data); } //----------------------------------------------------------------------------- -void SERVCONF::SetServerInfoRecvCb(RecvServerInfoDataCb_t f, void * data) +void SERVCONF::SetAuthByCallback(PARSER_AUTH_BY::CALLBACK f, void * data) { -RecvServerInfoDataCb = f; -getServerInfoDataCb = data; +parserAuthBy.SetCallback(f, data); } //----------------------------------------------------------------------------- -void SERVCONF::SetChgUserCb(RecvChgUserCb_t f, void * data) +void SERVCONF::SetServerInfoCallback(PARSER_SERVER_INFO::CALLBACK f, void * data) { -RecvChgUserCb = f; -chgUserDataCb = data; +parserServerInfo.SetCallback(f, data); } //----------------------------------------------------------------------------- -void SERVCONF::SetCheckUserCb(RecvCheckUserCb_t f, void * data) +void SERVCONF::SetChgUserCallback(PARSER_CHG_USER::CALLBACK f, void * data) { -RecvCheckUserCb = f; -checkUserDataCb = data; +parserChgUser.SetCallback(f, data); +} +//----------------------------------------------------------------------------- +void SERVCONF::SetCheckUserCallback(PARSER_CHECK_USER::CALLBACK f, void * data) +{ +parserCheckUser.SetCallback(f, data); } //----------------------------------------------------------------------------- void SERVCONF::SetSendMessageCb(RecvSendMessageCb_t f, void * data) @@ -397,10 +243,26 @@ const std::string & SERVCONF::GetStrError() const return errorMsg; } //----------------------------------------------------------------------------- -int SERVCONF::GetError() +int SERVCONF::Exec(const char * request) { -int e = error; -error = 0; -return e; +nt.Reset(); + +int ret = 0; +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; } -//-----------------------------------------------------------------------------