]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/configuration/sgconfig/configproto.h
Added template specification.
[stg.git] / projects / stargazer / plugins / configuration / sgconfig / configproto.h
index b10cc938f6800ae15b840093614852f334347a2a..c464e95ee5c3b76481d0e50e37dfe9cc2f66f2cc 100644 (file)
 #ifndef CONFIGPROTO_H
 #define CONFIGPROTO_H
 
+#include "parser.h"
+
 #include "stg/module_settings.h"
 #include "stg/os_int.h"
 
 #include <string>
-#include <vector>
+#include <deque>
 
 #include <sys/select.h>
 #include <sys/types.h>
@@ -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 SetStore(STORE * store) { m_store = store; }
+    void SetServices(SERVICES * services) { m_services = services; }
+    void SetCorporations(CORPORATIONS * corporations) { m_corporations = corporations; }
+
+    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<STG::Conn *> m_conns;
+    BASE_PARSER::REGISTRY m_registry;
+    std::deque<STG::Conn *> 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