]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/configuration/sgconfig/configproto.h
Do not flush indexes on stop (fixes #44).
[stg.git] / projects / stargazer / plugins / configuration / sgconfig / configproto.h
index b10cc938f6800ae15b840093614852f334347a2a..2119bc675214c22aae0eb2f1c3589f659e592c81 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,7 @@ class SETTINGS;
 class ADMINS;
 class TARIFFS;
 class USERS;
+class STORE;
 class PLUGIN_LOGGER;
 
 namespace STG
@@ -48,12 +51,15 @@ class Conn;
 class CONFIGPROTO {
 public:
     CONFIGPROTO(PLUGIN_LOGGER & l);
+    ~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; }
 
     int             Prepare();
     int             Stop();
@@ -68,8 +74,10 @@ private:
     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;
@@ -77,7 +85,12 @@ 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;