]> git.stg.codes - stg.git/blobdiff - projects/stargazer/settings_impl.cpp
Fee charge rule selector added with 3 different charge rules
[stg.git] / projects / stargazer / settings_impl.cpp
index b547c4a78225cec6d8de56e9e17d448c6f069a9e..33b3e840c2ac7437de49bbe81b048848d2fdc768 100644 (file)
@@ -32,9 +32,9 @@ $Author: faust $
 #include <cerrno>
 #include <string>
 
+#include "stg/logger.h"
+#include "stg/dotconfpp.h"
 #include "settings_impl.h"
-#include "stg_logger.h"
-#include "dotconfpp.h"
 
 using namespace std;
 
@@ -42,6 +42,7 @@ using namespace std;
 SETTINGS_IMPL::SETTINGS_IMPL()
     : strError(),
       modulesPath("/usr/lib/stg"),
+      dirName(DIR_NUM),
       confDir("/etc/stargazer"),
       scriptsDir("/etc/stargazer"),
       rules("/etc/stargazer/rules"),
@@ -62,6 +63,7 @@ SETTINGS_IMPL::SETTINGS_IMPL()
       writeFreeMbTraffCost(false),
       showFeeInCash(true),
       messageTimeout(0),
+      feeChargeType(0),
       modulesSettings(),
       storeModuleSettings(),
       logger(GetStgLogger())
@@ -92,6 +94,7 @@ SETTINGS_IMPL::SETTINGS_IMPL(const std::string & cd)
       writeFreeMbTraffCost(false),
       showFeeInCash(true),
       messageTimeout(0),
+      feeChargeType(0),
       modulesSettings(),
       storeModuleSettings(),
       logger(GetStgLogger())
@@ -122,6 +125,7 @@ SETTINGS_IMPL::SETTINGS_IMPL(const SETTINGS_IMPL & rval)
       writeFreeMbTraffCost(rval.writeFreeMbTraffCost),
       showFeeInCash(rval.showFeeInCash),
       messageTimeout(rval.messageTimeout),
+      feeChargeType(rval.feeChargeType),
       modulesSettings(rval.modulesSettings),
       storeModuleSettings(rval.storeModuleSettings),
       logger(GetStgLogger())
@@ -234,9 +238,9 @@ return 0;
 //-----------------------------------------------------------------------------
 void SETTINGS_IMPL::ErrorCallback(void * data, const char * buf)
 {
-    printfd(__FILE__, buf);
+    printfd(__FILE__, "SETTINGS_IMPL::ErrorCallback() - %s\n", buf);
     SETTINGS_IMPL * settings = static_cast<SETTINGS_IMPL *>(data);
-    settings->logger(buf);
+    settings->logger("%s", buf);
 }
 //-----------------------------------------------------------------------------
 int SETTINGS_IMPL::ReadSettings()
@@ -428,6 +432,15 @@ while (node)
             }
         }
 
+    if (strcasecmp(node->getName(), "FeeChargeType") == 0)
+        {
+        if (ParseUnsignedInRange(node->getValue(0), 0, 2, &feeChargeType) != 0)
+            {
+            strError = "Incorrect FeeChargeType value: \'" + string(node->getValue(0)) + "\'";
+            return -1;
+            }
+        }
+
     if (strcasecmp(node->getName(), "DirNames") == 0)
         {
         const DOTCONFDocumentNode * child = node->getChildNode();