]> git.stg.codes - stg.git/commitdiff
Fixed compilation issues.
authorMaxim Mamontov <faust.madf@gmail.com>
Sat, 10 Aug 2013 20:35:00 +0000 (23:35 +0300)
committerMaxim Mamontov <faust.madf@gmail.com>
Sat, 10 Aug 2013 20:35:00 +0000 (23:35 +0300)
12 files changed:
projects/sgconf/common_sg.cpp
projects/sgconf/common_sg.h
projects/sgconf/main.cpp
stglibs/crypto.lib/include/stg/blowfish.h
stglibs/srvconf.lib/Makefile
stglibs/srvconf.lib/include/stg/netunit.h
stglibs/srvconf.lib/include/stg/parser_chg_user.h
stglibs/srvconf.lib/include/stg/parser_server_info.h
stglibs/srvconf.lib/include/stg/servconf.h
stglibs/srvconf.lib/parser.cpp
stglibs/srvconf.lib/parser_chg_user.cpp
stglibs/srvconf.lib/servconf.cpp

index 2901832ad0db0e03ae79fc2a09330ca58a929c11..ca1aa50c0b5f5aabda5374478949dbb0ec0574d2 100644 (file)
@@ -419,13 +419,10 @@ int ProcessSetUser(const std::string &server,
                    const std::string &admLogin,
                    const std::string &admPasswd,
                    const std::string &str,
                    const std::string &admLogin,
                    const std::string &admPasswd,
                    const std::string &str,
-                   void * data,
                    bool isMessage)
 {
 SERVCONF sc;
 
                    bool isMessage)
 {
 SERVCONF sc;
 
-bool result = false;
-
 sc.SetServer(server.c_str());
 sc.SetPort(port);
 sc.SetAdmLogin(admLogin.c_str());
 sc.SetServer(server.c_str());
 sc.SetPort(port);
 sc.SetAdmLogin(admLogin.c_str());
@@ -434,18 +431,19 @@ sc.SetAdmPassword(admPasswd.c_str());
 REQUEST request;
 GetUserData cbdata(request, false);
 
 REQUEST request;
 GetUserData cbdata(request, false);
 
+int res = 0;
 if (isMessage)
     {
     sc.SetSendMessageCb(RecvSetUserAnswer, &cbdata);
 if (isMessage)
     {
     sc.SetSendMessageCb(RecvSetUserAnswer, &cbdata);
-    sc.MsgUser(str.c_str());
+    res = sc.MsgUser(str.c_str());
     }
 else
     {
     }
 else
     {
-    sc.SetChgUserCb(RecvSetUserAnswer, &cbdata);
-    sc.ChgUser(str.c_str());
+    sc.SetChgUserCallback(RecvSetUserAnswer, &cbdata);
+    res = sc.ChgUser(str.c_str());
     }
 
     }
 
-if (result)
+if (res && cbdata.result)
     {
     printf("Ok\n");
     return 0;
     {
     printf("Ok\n");
     return 0;
@@ -477,9 +475,9 @@ sc.SetAdmPassword(admPasswd.c_str());
 GetUserData data(request, false);
 
 sc.SetGetUserCallback(GetUserCallback, &data);
 GetUserData data(request, false);
 
 sc.SetGetUserCallback(GetUserCallback, &data);
-sc.GetUser(login.c_str());
+bool res = (sc.GetUser(login.c_str()) == st_ok);
 
 
-if (data.result)
+if (res && data.result)
     {
     printf("Ok\n");
     return 0;
     {
     printf("Ok\n");
     return 0;
@@ -497,8 +495,7 @@ int ProcessAuthBy(const std::string &server,
                   int port,
                   const std::string &admLogin,
                   const std::string &admPasswd,
                   int port,
                   const std::string &admLogin,
                   const std::string &admPasswd,
-                  const std::string &login,
-                  REQUEST & request)
+                  const std::string &login)
 {
 SERVCONF sc;
 
 {
 SERVCONF sc;
 
@@ -508,9 +505,9 @@ sc.SetAdmLogin(admLogin.c_str());
 sc.SetAdmPassword(admPasswd.c_str());
 
 sc.SetAuthByCallback(RecvAuthByData, NULL);
 sc.SetAdmPassword(admPasswd.c_str());
 
 sc.SetAuthByCallback(RecvAuthByData, NULL);
-sc.AuthBy(login.c_str());
+bool res = (sc.AuthBy(login.c_str()) == st_ok);
 
 
-if (sc.GetError())
+if (!res)
     {
     printf("Error\n");
     return -1;
     {
     printf("Error\n");
     return -1;
index 47069eae08d95640fdcb3b05b504b26243395848..ca7eb36ccdc87e2cddc5c75feebe1eefdf3e4731 100644 (file)
@@ -56,15 +56,13 @@ int ProcessAuthBy(const std::string &server,
                   int port,
                   const std::string &admLogin,
                   const std::string &admPasswd,
                   int port,
                   const std::string &admLogin,
                   const std::string &admPasswd,
-                  const std::string &login,
-                  REQUEST & request);
+                  const std::string &login);
 
 int ProcessSetUser(const std::string &server,
                    int port,
                    const std::string &admLogin,
                    const std::string &admPasswd,
                    const std::string &str,
 
 int ProcessSetUser(const std::string &server,
                    int port,
                    const std::string &admLogin,
                    const std::string &admPasswd,
                    const std::string &str,
-                   void * data,
                    bool isMessage = false);
 
 #endif
                    bool isMessage = false);
 
 #endif
index 507abaa53a75fdff60c003845256e43508dbca0f..f8a394d41b591f3526a8292b056ede5660642c48 100644 (file)
@@ -885,7 +885,7 @@ if (missedOptionArg || !CheckParametersGet(&req))
     }
 
 if (req.authBy)
     }
 
 if (req.authBy)
-    return ProcessAuthBy(req.server, req.port, req.admLogin, req.admPasswd, req.login, req);
+    return ProcessAuthBy(req.server, req.port, req.admLogin, req.admPasswd, req.login);
 else
     return ProcessGetUser(req.server, req.port, req.admLogin, req.admPasswd, req.login, req);
 }
 else
     return ProcessGetUser(req.server, req.port, req.admLogin, req.admPasswd, req.login, req);
 }
@@ -1087,7 +1087,7 @@ char rstr[rLen];
 memset(rstr, 0, rLen);
 
 CreateRequestSet(&req, rstr);
 memset(rstr, 0, rLen);
 
 CreateRequestSet(&req, rstr);
-return ProcessSetUser(req.server, req.port, req.admLogin, req.admPasswd, rstr, NULL, isMessage);
+return ProcessSetUser(req.server, req.port, req.admLogin, req.admPasswd, rstr, isMessage);
 }
 //-----------------------------------------------------------------------------
 int main(int argc, char **argv)
 }
 //-----------------------------------------------------------------------------
 int main(int argc, char **argv)
index a8800d7533201b6fe8ac195bd43d7d612544f362..c99833403e23d893ed32c8920ec4d226f6775afb 100644 (file)
 #define MAXKEYBYTES 56          /* 448 bits */
 
 #ifdef __cplusplus
 #define MAXKEYBYTES 56          /* 448 bits */
 
 #ifdef __cplusplus
+#include <cstddef> // size_t
 extern "C" {
 extern "C" {
+#else
+#include <stddef.h> // size_t
 #endif
 
 typedef struct {
 #endif
 
 typedef struct {
index 7e9d90e00cc00582186a4a6c9feec9655c673a83..45f3899db0a4eb46cc6783d5f72ca68a4885cd3b 100644 (file)
@@ -15,6 +15,7 @@ SRCS =  netunit.cpp \
         parser_check_user.cpp \
         parser_get_user.cpp \
         parser_get_users.cpp \
         parser_check_user.cpp \
         parser_get_user.cpp \
         parser_get_users.cpp \
+        parser_chg_user.cpp \
         servconf.cpp
 
 INCS = servconf.h \
         servconf.cpp
 
 INCS = servconf.h \
index e288df86595e272e4aabcc6b597fe70b60459e5c..d40b4c6ac2585f08db94036605b59dc0f250edea 100644 (file)
 #ifndef NetUnitH
 #define NetUnitH
 
 #ifndef NetUnitH
 #define NetUnitH
 
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
+#include "stg/blowfish.h"
 
 #include <list>
 #include <string>
 
 
 #include <list>
 #include <string>
 
-#include "stg/blowfish.h"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
 
 #define  STG_HEADER     "SG04"
 #define  OK_HEADER      "OKHD"
 
 #define  STG_HEADER     "SG04"
 #define  OK_HEADER      "OKHD"
index 3191f37083b18628ab40c420c16cce050b9629e2..d8920cde7e051bc54643e7128d9b8fe8696ec26f 100644 (file)
 class PARSER_CHG_USER: public PARSER
 {
 public:
 class PARSER_CHG_USER: public PARSER
 {
 public:
+    typedef int (* CALLBACK)(const char * asnwer, void * data);
+
     PARSER_CHG_USER();
     PARSER_CHG_USER();
-    int  ParseStart(const char *el, const char **attr);
-    void ParseEnd(const char *el);
-    void ParseAnswer(const char *el, const char **attr);
-    void SetChgUserRecvCb(RecvChgUserCb_t, void * data);
+    int  ParseStart(const char * el, const char ** attr);
+    void ParseEnd(const char * el);
+    void SetCallback(CALLBACK f, void * data);
 private:
 private:
-    RecvChgUserCb_t RecvChgUserCb;
-    void * chgUserCbData;
+    CALLBACK callback;
+    void * data;
     int depth;
     int depth;
-    bool error;
+
+    void ParseAnswer(const char * el, const char ** attr);
 };
 
 #endif
 };
 
 #endif
index ce7a70ae946bb76884979c72f065f0ca20b8a52f..5adb2abb8729e474679b02d04f25fd1337db6313 100644 (file)
@@ -22,7 +22,7 @@
 #ifndef __STG_STGLIBS_SRVCONF_PARSER_SERVER_INFO_H__
 #define __STG_STGLIBS_SRVCONF_PARSER_SERVER_INFO_H__
 
 #ifndef __STG_STGLIBS_SRVCONF_PARSER_SERVER_INFO_H__
 #define __STG_STGLIBS_SRVCONF_PARSER_SERVER_INFO_H__
 
-#include "/parser.h"
+#include "parser.h"
 
 #include "stg/const.h"
 
 
 #include "stg/const.h"
 
index fddbcf7a32629f4ec3cf0820a69bbab3ba330efd..c62161be2853a70834f4ab9f735cf6a67282ee19 100644 (file)
@@ -34,6 +34,7 @@
 #include "stg/parser_check_user.h"
 #include "stg/parser_get_user.h"
 #include "stg/parser_get_users.h"
 #include "stg/parser_check_user.h"
 #include "stg/parser_get_user.h"
 #include "stg/parser_get_users.h"
+#include "stg/parser_chg_user.h"
 
 #include "stg/os_int.h"
 #include "stg/const.h"
 
 #include "stg/os_int.h"
 #include "stg/const.h"
 
 #include <expat.h>
 
 
 #include <expat.h>
 
-void Start(void *data, const char *el, const char **attr);
-void End(void *data, const char *el);
+void Start(void * data, const char * el, const char ** attr);
+void End(void * data, const char * el);
 
 #define MAX_ERR_STR_LEN (64)
 #define IP_STRING_LEN   (255)
 //-----------------------------------------------------------------------------
 
 #define MAX_ERR_STR_LEN (64)
 #define IP_STRING_LEN   (255)
 //-----------------------------------------------------------------------------
-typedef int(*RecvChgUserCb_t)(const char * asnwer, void * data);
-typedef int(*RecvSendMessageCb_t)(const char * answer, void * data);
+typedef int (* RecvSendMessageCb_t)(const char * answer, void * data);
 //-----------------------------------------------------------------------------
 struct ADMINDATA
 {
 //-----------------------------------------------------------------------------
 struct ADMINDATA
 {
@@ -62,15 +62,14 @@ class PARSER_SEND_MESSAGE: public PARSER
 {
 public:
     PARSER_SEND_MESSAGE();
 {
 public:
     PARSER_SEND_MESSAGE();
-    int  ParseStart(const char *el, const char **attr);
-    void ParseEnd(const char *el);
-    void ParseAnswer(const char *el, const char **attr);
+    int  ParseStart(const char * el, const char ** attr);
+    void ParseEnd(const char * el);
+    void ParseAnswer(const char * el, const char ** attr);
     void SetSendMessageRecvCb(RecvSendMessageCb_t, void * data);
 private:
     RecvSendMessageCb_t RecvSendMessageCb;
     void * sendMessageCbData;
     int depth;
     void SetSendMessageRecvCb(RecvSendMessageCb_t, void * data);
 private:
     RecvSendMessageCb_t RecvSendMessageCb;
     void * sendMessageCbData;
     int depth;
-    bool error;
 };
 //-----------------------------------------------------------------------------
 class SERVCONF
 };
 //-----------------------------------------------------------------------------
 class SERVCONF
@@ -86,7 +85,7 @@ public:
     void SetGetUsersCallback(PARSER_GET_USERS::CALLBACK f, void * data);
     void SetAuthByCallback(PARSER_AUTH_BY::CALLBACK f, void * data);
     void SetServerInfoCallback(PARSER_SERVER_INFO::CALLBACK f, void * data);
     void SetGetUsersCallback(PARSER_GET_USERS::CALLBACK f, void * data);
     void SetAuthByCallback(PARSER_AUTH_BY::CALLBACK f, void * data);
     void SetServerInfoCallback(PARSER_SERVER_INFO::CALLBACK f, void * data);
-    void SetChgUserCb(RecvChgUserCb_t, void * data);
+    void SetChgUserCallback(PARSER_CHG_USER::CALLBACK f, void * data);
     void SetCheckUserCallback(PARSER_CHECK_USER::CALLBACK f, void * data);
     void SetGetUserCallback(PARSER_GET_USER::CALLBACK f, void * data);
     void SetSendMessageCb(RecvSendMessageCb_t, void * data);
     void SetCheckUserCallback(PARSER_CHECK_USER::CALLBACK f, void * data);
     void SetGetUserCallback(PARSER_GET_USER::CALLBACK f, void * data);
     void SetSendMessageCb(RecvSendMessageCb_t, void * data);
@@ -102,9 +101,8 @@ public:
     int CheckUser(const char * login, const char * password);
 
     const std::string & GetStrError() const;
     int CheckUser(const char * login, const char * password);
 
     const std::string & GetStrError() const;
-    int GetError();
-    int Start(const char *el, const char **attr);
-    void End(const char *el);
+    int Start(const char * el, const char ** attr);
+    void End(const char * el);
 
 private:
     PARSER * currParser;
 
 private:
     PARSER * currParser;
@@ -118,28 +116,16 @@ private:
     PARSER_SEND_MESSAGE parserSendMessage;
 
     NETTRANSACT nt;
     PARSER_SEND_MESSAGE parserSendMessage;
 
     NETTRANSACT nt;
-    int parseDepth;
 
     std::string errorMsg;
 
     std::string errorMsg;
-    int error;
     XML_Parser parser;
 
     XML_Parser parser;
 
-    PARSER_GET_USERS::CALLBACK getUsersCallback;
-    PARSER_GET_USER::CALLBACK getUserCallback;
-    PARSER_AUTH_BY::CALLBACK authByCallback;
-    PARSER_SERVER_INFO::CALLBACK serverInfoCallback;
-    RecvChgUserCb_t RecvChgUserCb;
-    PARSER_CHECK_USER::CALLBACK checkUserCallback;
     RecvSendMessageCb_t RecvSendMessageCb;
 
     RecvSendMessageCb_t RecvSendMessageCb;
 
-    void * getUsersData;
-    void * getUserData;
-    void * authByData;
-    void * serverInfoData;
-    void * chgUserDataCb;
-    void * checkUserData;
     void * sendMessageDataCb;
 
     void * sendMessageDataCb;
 
+    int Exec(const char * request);
+
     friend int AnsRecv(void * data, std::list<std::string> * list);
 };
 //-----------------------------------------------------------------------------
     friend int AnsRecv(void * data, std::list<std::string> * list);
 };
 //-----------------------------------------------------------------------------
index f259f5818abd1e6182115c4074f929cdf85a9e2e..78247f481839f3f2793a70fd59a20ba7348f94cd 100644 (file)
 
 using namespace std;
 
 
 using namespace std;
 
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-PARSER_CHG_USER::PARSER_CHG_USER()
-    : RecvChgUserCb(NULL),
-      chgUserCbData(NULL),
-      depth(0),
-      error(false)
-{
-}
-//-----------------------------------------------------------------------------
-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 *, const char **attr)
-{
-if (RecvChgUserCb)
-    {
-    RecvChgUserCb(attr[1], chgUserCbData);
-    }
-}
-//-----------------------------------------------------------------------------
-void PARSER_CHG_USER::SetChgUserRecvCb(RecvChgUserCb_t f, void * data)
-{
-RecvChgUserCb = f;
-chgUserCbData = data;
-}
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 PARSER_SEND_MESSAGE::PARSER_SEND_MESSAGE()
     : RecvSendMessageCb(NULL),
       sendMessageCbData(NULL),
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 PARSER_SEND_MESSAGE::PARSER_SEND_MESSAGE()
     : RecvSendMessageCb(NULL),
       sendMessageCbData(NULL),
-      depth(0),
-      error(false)
+      depth(0)
 {
 }
 //-----------------------------------------------------------------------------
 {
 }
 //-----------------------------------------------------------------------------
index bf48e648bc7dd83b66726468f052608c97d6c738..90d78f6cff17a5dad70612e016036aa5a3edba4c 100644 (file)
  *    Author : Maxim Mamontov <faust@stargazer.dp.ua>
  */
 
  *    Author : Maxim Mamontov <faust@stargazer.dp.ua>
  */
 
+#include "stg/parser_chg_user.h"
+
+#include <cstddef>
+
+#include <strings.h>
+
+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 (attr && attr[0] && attr[1])
+    if (callback)
+        callback(attr[1], data);
+}
+//-----------------------------------------------------------------------------
+void PARSER_CHG_USER::SetCallback(CALLBACK f, void * d)
+{
+callback = f;
+data = d;
+}
index 7848787b61d5769cac85ff67f18c20a1107beeda..b8507098e2790425cfdfc7470c458d6a1facebd6 100644 (file)
  $Author: faust $
  */
 
  $Author: faust $
  */
 
-#include <cstdio>
-#include <cstring>
+#include "stg/servconf.h"
 
 #include "stg/common.h"
 
 #include "stg/common.h"
-#include "stg/servconf.h"
+
+#include <cstdio>
+#include <cstring>
 
 using namespace std;
 
 
 using namespace std;
 
@@ -85,24 +86,11 @@ sc->End(el);
 //-----------------------------------------------------------------------------
 SERVCONF::SERVCONF()
     : currParser(NULL),
 //-----------------------------------------------------------------------------
 SERVCONF::SERVCONF()
     : currParser(NULL),
-      parseDepth(0),
-      error(0),
-      getUsersCallback(NULL),
-      getUserCallback(NULL),
-      authByCallback(NULL),
-      serverInfoCallback(NULL),
-      RecvChgUserCb(NULL),
-      checkUserCallback(NULL),
       RecvSendMessageCb(NULL),
       RecvSendMessageCb(NULL),
-      getUsersData(NULL),
-      getUserData(NULL),
-      authByData(NULL),
-      serverInfoData(NULL),
-      chgUserDataCb(NULL),
-      checkUserData(NULL),
       sendMessageDataCb(NULL)
 {
 parser = XML_ParserCreate(NULL);
       sendMessageDataCb(NULL)
 {
 parser = XML_ParserCreate(NULL);
+nt.SetRxCallback(this, AnsRecv);
 }
 //-----------------------------------------------------------------------------
 void SERVCONF::SetServer(const char * server)
 }
 //-----------------------------------------------------------------------------
 void SERVCONF::SetServer(const char * server)
@@ -129,31 +117,10 @@ int SERVCONF::GetUser(const char * l)
 {
 char request[255];
 snprintf(request, 255, "<GetUser login=\"%s\"/>", l);
 {
 char request[255];
 snprintf(request, 255, "<GetUser login=\"%s\"/>", l);
-int ret;
 
 currParser = &parserGetUser;
 
 currParser = &parserGetUser;
-((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;
+return Exec(request);
 }
 //-----------------------------------------------------------------------------
 int SERVCONF::AuthBy(const char * l)
 }
 //-----------------------------------------------------------------------------
 int SERVCONF::AuthBy(const char * l)
@@ -162,59 +129,17 @@ char request[255];
 snprintf(request, 255, "<GetUserAuthBy login=\"%s\"/>", l);
 
 currParser = &parserAuthBy;
 snprintf(request, 255, "<GetUserAuthBy login=\"%s\"/>", 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();
-    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::GetUsers()
 {
 char request[] = "<GetUsers/>";
 }
 //-----------------------------------------------------------------------------
 int SERVCONF::GetUsers()
 {
 char request[] = "<GetUsers/>";
-int ret;
 
 currParser = &parserGetUsers;
 
 currParser = &parserGetUsers;
-((PARSER_GET_USERS*)currParser)->SetCallback(getUsersCallback, getUsersData);
 
 
-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)
 }
 //-----------------------------------------------------------------------------
 int SERVCONF::SendMessage(const char * login, const char * message, int prio)
@@ -223,152 +148,47 @@ char request[1000];
 char msg[500];
 Encode12(msg, message, strlen(message));
 snprintf(request, 1000, "<Message login=\"%s\" priority=\"%d\" text=\"%s\"/>", login, prio, msg);
 char msg[500];
 Encode12(msg, message, strlen(message));
 snprintf(request, 1000, "<Message login=\"%s\" priority=\"%d\" text=\"%s\"/>", login, prio, msg);
-int ret;
 
 currParser = &parserSendMessage;
 parserSendMessage.SetSendMessageRecvCb(RecvSendMessageCb, sendMessageDataCb);
 
 
 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::ServerInfo()
 {
 char request[] = "<GetServerInfo/>";
 }
 //-----------------------------------------------------------------------------
 int SERVCONF::ServerInfo()
 {
 char request[] = "<GetServerInfo/>";
-int ret;
 
 currParser = &parserServerInfo;
 
 currParser = &parserServerInfo;
-((PARSER_SERVER_INFO*)currParser)->SetCallback(serverInfoCallback, serverInfoData);
-
-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 SERVCONF::ChgUser(const char * request)
 {
-int ret;
-
 currParser = &parserChgUser;
 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)
 {
 }
 //-----------------------------------------------------------------------------
 //  TODO: remove this shit!
 //-----------------------------------------------------------------------------
 int SERVCONF::MsgUser(const char * request)
 {
-int ret;
-
 currParser = &parserSendMessage;
 parserSendMessage.SetSendMessageRecvCb(RecvSendMessageCb, sendMessageDataCb);
 
 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, "<CheckUser login=\"%s\" password=\"%s\"/>", login, password);
 }
 //-----------------------------------------------------------------------------
 int SERVCONF::CheckUser(const char * login, const char * password)
 {
 char request[255];
 snprintf(request, 255, "<CheckUser login=\"%s\" password=\"%s\"/>", login, password);
-int ret;
 
 currParser = &parserCheckUser;
 
 currParser = &parserCheckUser;
-((PARSER_CHECK_USER*)currParser)->SetCallback(checkUserCallback, checkUserData);
-
-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)
 }
 //-----------------------------------------------------------------------------
 int SERVCONF::Start(const char *el, const char **attr)
@@ -384,38 +204,32 @@ currParser->ParseEnd(el);
 //-----------------------------------------------------------------------------
 void SERVCONF::SetGetUsersCallback(PARSER_GET_USERS::CALLBACK f, void * data)
 {
 //-----------------------------------------------------------------------------
 void SERVCONF::SetGetUsersCallback(PARSER_GET_USERS::CALLBACK f, void * data)
 {
-getUsersCallback = f;
-getUsersData = data;
+parserGetUsers.SetCallback(f, data);
 }
 //-----------------------------------------------------------------------------
 void SERVCONF::SetGetUserCallback(PARSER_GET_USER::CALLBACK f, void * data)
 {
 }
 //-----------------------------------------------------------------------------
 void SERVCONF::SetGetUserCallback(PARSER_GET_USER::CALLBACK f, void * data)
 {
-getUserCallback = f;
-getUserData = data;
+parserGetUser.SetCallback(f, data);
 }
 //-----------------------------------------------------------------------------
 void SERVCONF::SetAuthByCallback(PARSER_AUTH_BY::CALLBACK f, void * data)
 {
 }
 //-----------------------------------------------------------------------------
 void SERVCONF::SetAuthByCallback(PARSER_AUTH_BY::CALLBACK f, void * data)
 {
-authByCallback = f;
-authByData = data;
+parserAuthBy.SetCallback(f, data);
 }
 //-----------------------------------------------------------------------------
 void SERVCONF::SetServerInfoCallback(PARSER_SERVER_INFO::CALLBACK f, void * data)
 {
 }
 //-----------------------------------------------------------------------------
 void SERVCONF::SetServerInfoCallback(PARSER_SERVER_INFO::CALLBACK f, void * data)
 {
-serverInfoCallback = f;
-serverInfoData = data;
+parserServerInfo.SetCallback(f, data);
 }
 //-----------------------------------------------------------------------------
 }
 //-----------------------------------------------------------------------------
-void SERVCONF::SetChgUserCb(RecvChgUserCb_t f, void * data)
+void SERVCONF::SetChgUserCallback(PARSER_CHG_USER::CALLBACK f, void * data)
 {
 {
-RecvChgUserCb = f;
-chgUserDataCb = data;
+parserChgUser.SetCallback(f, data);
 }
 //-----------------------------------------------------------------------------
 void SERVCONF::SetCheckUserCallback(PARSER_CHECK_USER::CALLBACK f, void * data)
 {
 }
 //-----------------------------------------------------------------------------
 void SERVCONF::SetCheckUserCallback(PARSER_CHECK_USER::CALLBACK f, void * data)
 {
-checkUserCallback = f;
-checkUserData = data;
+parserCheckUser.SetCallback(f, data);
 }
 //-----------------------------------------------------------------------------
 void SERVCONF::SetSendMessageCb(RecvSendMessageCb_t f, void * data)
 }
 //-----------------------------------------------------------------------------
 void SERVCONF::SetSendMessageCb(RecvSendMessageCb_t f, void * data)
@@ -429,10 +243,26 @@ const std::string & SERVCONF::GetStrError() const
 return errorMsg;
 }
 //-----------------------------------------------------------------------------
 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;
 }
 }
-//-----------------------------------------------------------------------------