]> git.stg.codes - stg.git/blobdiff - projects/stargazer/settings_impl.h
Code deduplication (plugin creation via template PLUGIN_CREATOR)
[stg.git] / projects / stargazer / settings_impl.h
index 86262808afe191ba9fd3b6e1c3db3f77b0126568..4ab5f31e57f11741dac4631e73f13720ccb07819 100644 (file)
  */
 
 
  */
 
 
-#ifndef SETTINGS_H
-#define SETTINGS_H
+#ifndef SETTINGS_IMPL_H
+#define SETTINGS_IMPL_H
 
 #include <string>
 #include <vector>
 
 
 #include <string>
 #include <vector>
 
-#include "common.h"
-#include "stg_logger.h"
-#include "module_settings.h"
+#include "stg/settings.h"
+#include "stg/common.h"
+#include "stg/logger.h"
+#include "stg/module_settings.h"
 
 //-----------------------------------------------------------------------------
 enum DETAIL_STAT_PERIOD {
 
 //-----------------------------------------------------------------------------
 enum DETAIL_STAT_PERIOD {
@@ -55,12 +56,12 @@ dsPeriod_1_6,
 class STG_LOGGER;
 class DOTCONFDocumentNode;
 //-----------------------------------------------------------------------------
 class STG_LOGGER;
 class DOTCONFDocumentNode;
 //-----------------------------------------------------------------------------
-class SETTINGS {
+class SETTINGS_IMPL : public SETTINGS {
 public:
 public:
-    SETTINGS();
-    SETTINGS(const std::string &);
-    SETTINGS(const SETTINGS &);
-    virtual ~SETTINGS();
+    SETTINGS_IMPL();
+    SETTINGS_IMPL(const std::string &);
+    SETTINGS_IMPL(const SETTINGS_IMPL &);
+    virtual ~SETTINGS_IMPL() {}
     int Reload() { return ReadSettings(); }
     int ReadSettings();
 
     int Reload() { return ReadSettings(); }
     int ReadSettings();
 
@@ -68,14 +69,14 @@ public:
 
     int                 GetExecMsgKey() const { return stgExecMsgKey; }
     unsigned            GetExecutersNum() const { return executersNum; }
 
     int                 GetExecMsgKey() const { return stgExecMsgKey; }
     unsigned            GetExecutersNum() const { return executersNum; }
-    const std::string & GetDirName(int num) const { return dirName[num]; };
+    const std::string & GetDirName(size_t num) const { return dirName[num]; }
     const std::string & GetConfDir() const { return confDir; }
     const std::string & GetScriptsDir() const { return scriptsDir; }
     const std::string & GetRulesFileName() const { return rules; }
     const std::string & GetLogFileName() const { return logFile; }
     const std::string & GetPIDFileName() const { return pidFile; }
     unsigned            GetDetailStatWritePeriod() const 
     const std::string & GetConfDir() const { return confDir; }
     const std::string & GetScriptsDir() const { return scriptsDir; }
     const std::string & GetRulesFileName() const { return rules; }
     const std::string & GetLogFileName() const { return logFile; }
     const std::string & GetPIDFileName() const { return pidFile; }
     unsigned            GetDetailStatWritePeriod() const 
-        { return detailStatWritePeriod; };
+        { return detailStatWritePeriod; }
     unsigned            GetStatWritePeriod() const { return statWritePeriod * 60; }
     unsigned            GetDayFee() const { return dayFee; }
     bool                GetFullFee() const { return fullFee; }
     unsigned            GetStatWritePeriod() const { return statWritePeriod * 60; }
     unsigned            GetDayFee() const { return dayFee; }
     bool                GetFullFee() const { return fullFee; }
@@ -89,6 +90,8 @@ public:
     const std::string & GetMonitorDir() const { return monitorDir; }
     bool                GetMonitoring() const { return monitoring; }
     unsigned            GetMessageTimeout() const { return messageTimeout * 3600 * 24; }
     const std::string & GetMonitorDir() const { return monitorDir; }
     bool                GetMonitoring() const { return monitoring; }
     unsigned            GetMessageTimeout() const { return messageTimeout * 3600 * 24; }
+    unsigned            GetFeeChargeType() const { return feeChargeType; }
+    bool                GetReconnectOnTariffChange() const { return reconnectOnTariffChange; }
 
     const std::string & GetModulesPath() const { return modulesPath; }
     const MODULE_SETTINGS & GetStoreModuleSettings() const
 
     const std::string & GetModulesPath() const { return modulesPath; }
     const MODULE_SETTINGS & GetStoreModuleSettings() const
@@ -98,13 +101,7 @@ public:
 
 private:
 
 
 private:
 
-    int ParseInt(const std::string & value, int * val);
-    int ParseUnsigned(const std::string & value, unsigned * val);
-    int ParseIntInRange(const std::string & value, int min, int max, int * val);
-    int ParseUnsignedInRange(const std::string & value, unsigned min, unsigned max, unsigned * val);
-    int ParseYesNo(const std::string & value, bool * val);
-    int ParseDetailStatWritePeriod(const std::string & detailStatPeriodStr);
-
+    int ParseDetailStatWritePeriod(const std::string & str);
     int ParseModuleSettings(const DOTCONFDocumentNode * dirNameNode, std::vector<PARAM_VALUE> * params);
 
     static void ErrorCallback(void * data, const char * buf);
     int ParseModuleSettings(const DOTCONFDocumentNode * dirNameNode, std::vector<PARAM_VALUE> * params);
 
     static void ErrorCallback(void * data, const char * buf);
@@ -113,7 +110,7 @@ private:
 
     //////////settings
     std::string modulesPath;
 
     //////////settings
     std::string modulesPath;
-    std::string dirName[DIR_NUM];
+    std::vector<std::string> dirName;
     std::string confDir;
     std::string        scriptsDir;
     std::string rules;
     std::string confDir;
     std::string        scriptsDir;
     std::string rules;
@@ -134,6 +131,8 @@ private:
     bool        writeFreeMbTraffCost;
     bool        showFeeInCash;
     unsigned    messageTimeout;
     bool        writeFreeMbTraffCost;
     bool        showFeeInCash;
     unsigned    messageTimeout;
+    unsigned    feeChargeType;
+    bool        reconnectOnTariffChange;
 
     std::vector<MODULE_SETTINGS> modulesSettings;
     MODULE_SETTINGS storeModuleSettings;
 
     std::vector<MODULE_SETTINGS> modulesSettings;
     MODULE_SETTINGS storeModuleSettings;