]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/store/files/file_store.cpp
Ticket 37. The stgTime argument added in TariffChangeIsAllowed()
[stg.git] / projects / stargazer / plugins / store / files / file_store.cpp
index a8b3990ffed700132ee3f5f0670894ba0cb04736..51c3707910c34bbd3bf087c638c341f5060fd5f0 100644 (file)
@@ -80,11 +80,6 @@ return fsc.GetPlugin();
 //-----------------------------------------------------------------------------
 FILES_STORE_SETTINGS::FILES_STORE_SETTINGS()
     : settings(NULL),
 //-----------------------------------------------------------------------------
 FILES_STORE_SETTINGS::FILES_STORE_SETTINGS()
     : settings(NULL),
-      errorStr(),
-      workDir(),
-      usersDir(),
-      adminsDir(),
-      tariffsDir(),
       statMode(0),
       statUID(0),
       statGID(0),
       statMode(0),
       statUID(0),
       statGID(0),
@@ -105,7 +100,7 @@ PARAM_VALUE pv;
 pv.param = owner;
 std::vector<PARAM_VALUE>::const_iterator pvi;
 pvi = find(moduleParams.begin(), moduleParams.end(), pv);
 pv.param = owner;
 std::vector<PARAM_VALUE>::const_iterator pvi;
 pvi = find(moduleParams.begin(), moduleParams.end(), pv);
-if (pvi == moduleParams.end())
+if (pvi == moduleParams.end() || pvi->value.empty())
     {
     errorStr = "Parameter \'" + owner + "\' not found.";
     printfd(__FILE__, "%s\n", errorStr.c_str());
     {
     errorStr = "Parameter \'" + owner + "\' not found.";
     printfd(__FILE__, "%s\n", errorStr.c_str());
@@ -126,7 +121,7 @@ PARAM_VALUE pv;
 pv.param = group;
 std::vector<PARAM_VALUE>::const_iterator pvi;
 pvi = find(moduleParams.begin(), moduleParams.end(), pv);
 pv.param = group;
 std::vector<PARAM_VALUE>::const_iterator pvi;
 pvi = find(moduleParams.begin(), moduleParams.end(), pv);
-if (pvi == moduleParams.end())
+if (pvi == moduleParams.end() || pvi->value.empty())
     {
     errorStr = "Parameter \'" + group + "\' not found.";
     printfd(__FILE__, "%s\n", errorStr.c_str());
     {
     errorStr = "Parameter \'" + group + "\' not found.";
     printfd(__FILE__, "%s\n", errorStr.c_str());
@@ -164,7 +159,7 @@ PARAM_VALUE pv;
 pv.param = modeStr;
 std::vector<PARAM_VALUE>::const_iterator pvi;
 pvi = find(moduleParams.begin(), moduleParams.end(), pv);
 pv.param = modeStr;
 std::vector<PARAM_VALUE>::const_iterator pvi;
 pvi = find(moduleParams.begin(), moduleParams.end(), pv);
-if (pvi == moduleParams.end())
+if (pvi == moduleParams.end() || pvi->value.empty())
     {
     errorStr = "Parameter \'" + modeStr + "\' not found.";
     printfd(__FILE__, "%s\n", errorStr.c_str());
     {
     errorStr = "Parameter \'" + modeStr + "\' not found.";
     printfd(__FILE__, "%s\n", errorStr.c_str());
@@ -206,7 +201,7 @@ std::vector<PARAM_VALUE>::const_iterator pvi;
 PARAM_VALUE pv;
 pv.param = "RemoveBak";
 pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
 PARAM_VALUE pv;
 pv.param = "RemoveBak";
 pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
-if (pvi == s.moduleParams.end())
+if (pvi == s.moduleParams.end() || pvi->value.empty())
     {
     removeBak = true;
     }
     {
     removeBak = true;
     }
@@ -221,7 +216,7 @@ else
 
 pv.param = "ReadBak";
 pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
 
 pv.param = "ReadBak";
 pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
-if (pvi == s.moduleParams.end())
+if (pvi == s.moduleParams.end() || pvi->value.empty())
     {
     readBak = false;
     }
     {
     readBak = false;
     }
@@ -236,7 +231,7 @@ else
 
 pv.param = "WorkDir";
 pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
 
 pv.param = "WorkDir";
 pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
-if (pvi == s.moduleParams.end())
+if (pvi == s.moduleParams.end() || pvi->value.empty())
     {
     errorStr = "Parameter \'WorkDir\' not found.";
     printfd(__FILE__, "Parameter 'WorkDir' not found\n");
     {
     errorStr = "Parameter \'WorkDir\' not found.";
     printfd(__FILE__, "Parameter 'WorkDir' not found\n");
@@ -1470,6 +1465,19 @@ if (conf.ReadString("Period", &str, "month") < 0)
     td->tariffConf.period = TARIFF::MONTH;
 else
     td->tariffConf.period = TARIFF::StringToPeriod(str);
     td->tariffConf.period = TARIFF::MONTH;
 else
     td->tariffConf.period = TARIFF::StringToPeriod(str);
+
+if (conf.ReadString("ChangePolicy", &str, "allow") < 0)
+    td->tariffConf.changePolicy = TARIFF::ALLOW;
+else
+    td->tariffConf.changePolicy = TARIFF::StringToChangePolicy(str);
+
+if (conf.ReadTime("ChangePolicyTimeout", &td->tariffConf.changePolicyTimeout, 0) < 0)
+    {
+    STG_LOCKER lock(&mutex);
+    errorStr = "Cannot read tariff " + tariffName + ". Parameter ChangePolicyTimeout";
+    printfd(__FILE__, "FILES_STORE::RestoreTariff - changepolicytimeout read failed for tariff '%s'\n", tariffName.c_str());
+    return -1;
+    }
 return 0;
 }
 //-----------------------------------------------------------------------------
 return 0;
 }
 //-----------------------------------------------------------------------------
@@ -1531,6 +1539,8 @@ std::string fileName = storeSettings.GetTariffsDir() + "/" + tariffName + ".tf";
     cf.WriteDouble("Free", td.tariffConf.free);
     cf.WriteString("TraffType", TARIFF::TraffTypeToString(td.tariffConf.traffType));
     cf.WriteString("Period", TARIFF::PeriodToString(td.tariffConf.period));
     cf.WriteDouble("Free", td.tariffConf.free);
     cf.WriteString("TraffType", TARIFF::TraffTypeToString(td.tariffConf.traffType));
     cf.WriteString("Period", TARIFF::PeriodToString(td.tariffConf.period));
+    cf.WriteString("ChangePolicy", TARIFF::ChangePolicyToString(td.tariffConf.changePolicy));
+    cf.WriteTime("ChangePolicyTimeout", td.tariffConf.changePolicyTimeout);
     }
 
 return 0;
     }
 
 return 0;