]> git.stg.codes - stg.git/blobdiff - stglibs/srvconf.lib/include/stg/netunit.h
Ticket 37. The time_t currentTime parameter added in
[stg.git] / stglibs / srvconf.lib / include / stg / netunit.h
index 4d3bcfb09e72337e8c09471b7d1caca1b51b6d0b..664eee633328978d5ff304129d03e6a32b3c1dfc 100644 (file)
 #ifndef NetUnitH
 #define NetUnitH
 
-#include "stg/os_int.h"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
 
+#include <list>
 #include <string>
 
-typedef bool (* RxCallback_t)(void *, const std::string &, bool);
+#include "stg/blowfish.h"
 
+#define  STG_HEADER     "SG04"
+#define  OK_HEADER      "OKHD"
+#define  ERR_HEADER     "ERHD"
+#define  OK_LOGIN       "OKLG"
+#define  ERR_LOGIN      "ERLG"
+#define  OK_LOGINS      "OKLS"
+#define  ERR_LOGINS     "ERLS"
+
+// äÌÉÎÎÁ ÛÉÆÒÕÅÍÏÇÏ É ÐÅÒÅÄÁ×ÁÅÍÏÇ ÚÁ ÏÄÉΠÒÁÚ ÂÌÏËÁ ÉÎÆÏÒÍÁÃÉÉ
+#define  ENC_MSG_LEN    (8)
+
+#define MAX_ERR_STR_LEN (64)
+
+typedef int(*RxCallback_t)(void *, std::list<std::string> *);
+
+enum status
+{
+st_ok = 0,
+st_conn_fail,
+st_send_fail,
+st_recv_fail,
+st_header_err,
+st_login_err,
+st_logins_err,
+st_data_err,
+st_unknown_err,
+st_dns_err,
+st_xml_parse_error,
+st_data_error
+};
+
+enum CONF_STATE
+{
+confHdr = 0,
+confLogin,
+confLoginCipher,
+confData
+};
 //---------------------------------------------------------------------------
 class NETTRANSACT
 {
 public:
-    NETTRANSACT(const std::string & server, uint16_t port,
-                const std::string & login, const std::string & password);
+    NETTRANSACT();
     int     Transact(const char * data);
     const std::string & GetError() const;
 
     void    SetRxCallback(void * data, RxCallback_t);
 
+    void    SetServer(const char * serverName);
+    void    SetServerPort(short unsigned p);
+
+    void    SetLogin(const char * l);
+    void    SetPassword(const char * p);
+    ////////////////////////////////////////////
     int     Connect();
     int     Disconnect();
+    void    Reset();
 private:
     int     TxHeader();
     int     RxHeaderAnswer();
@@ -57,14 +104,14 @@ private:
     int     RxLoginSAnswer();
 
     int     TxData(const char * text);
-    int     TxData(char * data);
     int     RxDataAnswer();
 
     std::string server;
-    uint16_t  port;
+    short unsigned  port;
     std::string login;
     std::string password;
     int     outerSocket;
+    std::list<std::string>   answerList;
     RxCallback_t RxCallBack;
     void *  dataRxCallBack;
     std::string errorMsg;