X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/b21e41a3a44b08e4460b66cd81953498742d43d3..078ab6852ff1674f99d03fd697018a96bdb12d81:/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 b10cc938..e18ae82e 100644 --- a/projects/stargazer/plugins/configuration/sgconfig/configproto.h +++ b/projects/stargazer/plugins/configuration/sgconfig/configproto.h @@ -22,11 +22,13 @@ #ifndef CONFIGPROTO_H #define CONFIGPROTO_H +#include "parser.h" + #include "stg/module_settings.h" #include "stg/os_int.h" #include -#include +#include #include #include @@ -36,6 +38,9 @@ class SETTINGS; class ADMINS; class TARIFFS; class USERS; +class SERVICES; +class CORPORATIONS; +class STORE; class PLUGIN_LOGGER; namespace STG @@ -48,17 +53,22 @@ class Conn; class CONFIGPROTO { public: CONFIGPROTO(PLUGIN_LOGGER & l); - - void SetPort(uint16_t port) { m_port = port; } - 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; } - - int Prepare(); - int Stop(); + ~CONFIGPROTO(); + + 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 SetServices(SERVICES * services) { m_services = services; } + void SetCorporations(CORPORATIONS * corporations) { m_corporations = corporations; } + void SetStore(STORE * store) { m_store = store; } + + int Prepare(); + int Stop(); const std::string & GetStrError() const { return m_errorStr; } - void Run(); + void Run(); private: CONFIGPROTO(const CONFIGPROTO & rvalue); @@ -68,8 +78,12 @@ private: ADMINS * m_admins; TARIFFS * m_tariffs; USERS * m_users; + SERVICES * m_services; + CORPORATIONS * m_corporations; + STORE * m_store; uint16_t m_port; + std::string m_bindAddress; bool m_running; bool m_stopped; PLUGIN_LOGGER & m_logger; @@ -77,15 +91,18 @@ private: std::string m_errorStr; - std::vector m_conns; + 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