X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/bcd21b6aaa556a95a9d0b84b5f8328aadb5c3d3d..2607f626b5577426438d6d53a93603bb6c27f7bd:/projects/stargazer/plugins/configuration/sgconfig/configproto.h diff --git a/projects/stargazer/plugins/configuration/sgconfig/configproto.h b/projects/stargazer/plugins/configuration/sgconfig/configproto.h index 206e543b..2119bc67 100644 --- a/projects/stargazer/plugins/configuration/sgconfig/configproto.h +++ b/projects/stargazer/plugins/configuration/sgconfig/configproto.h @@ -16,106 +16,89 @@ /* * Author : Boris Mikhailenko + * Author : Maxim Mamontov */ - /* - $Revision: 1.14 $ - $Date: 2010/10/04 20:24:14 $ - $Author: faust $ - */ - - #ifndef CONFIGPROTO_H #define CONFIGPROTO_H -#include -#include -#include +#include "parser.h" #include "stg/module_settings.h" #include "stg/os_int.h" -#include -#include +#include +#include -#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" +#include +#include +#include -class BASE_PARSER; -class USERS; +class SETTINGS; class ADMINS; -class ADMIN; class TARIFFS; -class PLUGIN_LOGGER; +class USERS; class STORE; -class SETTINGS; +class PLUGIN_LOGGER; + +namespace STG +{ + +class Conn; + +} -//----------------------------------------------------------------------------- class CONFIGPROTO { public: CONFIGPROTO(PLUGIN_LOGGER & l); ~CONFIGPROTO(); - void SetPort(uint16_t port); - void SetAdmins(ADMINS * a); - void SetUsers(USERS * u); - void SetTariffs(TARIFFS * t); - void SetStore(STORE * s); - void SetStgSettings(const SETTINGS * s); - uint32_t GetAdminIP() const { return adminIP; } + void SetPort(uint16_t port) { m_port = port; } + void SetBindAddress(const std::string & address) { m_bindAddress = address; } + void SetSettings(const SETTINGS * settings) { m_settings = settings; } + void SetAdmins(ADMINS * admins) { m_admins = admins; } + void SetTariffs(TARIFFS * tariffs) { m_tariffs = tariffs; } + void SetUsers(USERS * users) { m_users = users; } + void SetStore(STORE * store) { m_store = store; } + int Prepare(); int Stop(); - const std::string & GetStrError() const { return errorStr; } + const std::string & GetStrError() const { return m_errorStr; } void Run(); private: CONFIGPROTO(const CONFIGPROTO & rvalue); CONFIGPROTO & operator=(const CONFIGPROTO & rvalue); - int RecvHdr(int sock); - int RecvLogin(int sock); - int SendLoginAnswer(int sock); - int SendHdrAnswer(int sock, int err); - int RecvLoginS(int sock); - int SendLoginSAnswer(int sock, int err); - int RecvData(int sock); - int SendDataAnswer(int sock, const std::string & answer); - int SendError(int sock, const std::string & text); - void WriteLogAccessFailed(uint32_t ip); - const std::string & GetDataAnswer() const { return dataAnswer; } - - int ParseCommand(); - - std::list requestList; - uint32_t adminIP; - std::string adminLogin; - std::string adminPassword; - uint16_t port; - pthread_t thrReciveSendConf; - bool nonstop; - int state; - ADMIN * currAdmin; - PLUGIN_LOGGER & logger; - std::string dataAnswer; - - int listenSocket; - - ADMINS * admins; - - BASE_PARSER * currParser; - std::vector dataParser; - - XML_Parser xmlParser; - - std::string errorStr; - - friend void ParseXMLStart(void *data, const char *el, const char **attr); - friend void ParseXMLEnd(void *data, const char *el); + const SETTINGS * m_settings; + ADMINS * m_admins; + TARIFFS * m_tariffs; + USERS * m_users; + STORE * m_store; + + uint16_t m_port; + std::string m_bindAddress; + bool m_running; + bool m_stopped; + PLUGIN_LOGGER & m_logger; + int m_listenSocket; + + std::string m_errorStr; + + BASE_PARSER::REGISTRY m_registry; + std::deque m_conns; + + bool Bind(); + + void RegisterParsers(); + + int MaxFD() const; + void BuildFDSet(fd_set & fds) const; + void CleanupConns(); + void HandleEvents(const fd_set & fds); + void AcceptConnection(); + + //void WriteLogAccessFailed(uint32_t ip); }; -//----------------------------------------------------------------------------- + #endif //CONFIGPROTO_H