]> git.stg.codes - stg.git/blobdiff - projects/stargazer/users_impl.cpp
Implemented daily fee charge with backward compatibility.
[stg.git] / projects / stargazer / users_impl.cpp
index 6b87b5a96ae6dba91a24fe90e8e2918d58836d0d..dfcc556fbf87726ae1e1a20986e7b4d601b68928 100644 (file)
@@ -33,6 +33,7 @@
 #endif
 
 #include <pthread.h>
+
 #include <csignal>
 #include <cassert>
 #include <algorithm>
@@ -180,7 +181,6 @@ u.OnAdd();
 users.push_front(u);
 
 AddUserIntoIndexes(users.begin());
-SetUserNotifiers(users.begin());
 
     {
     // Fire all "on add" notifiers
@@ -260,7 +260,6 @@ if (!priv->userAddDel)
     utd.delTime = stgTime;
     usersToDelete.push_back(utd);
 
-    UnSetUserNotifiers(u);
     DelUserFromIndexes(u);
 
     WriteServLog("%s User \'%s\' deleted.",
@@ -342,7 +341,6 @@ for (unsigned int i = 0; i < usersList.size(); i++)
     ui = users.begin();
 
     AddUserIntoIndexes(ui);
-    SetUserNotifiers(ui);
 
     if (ui->ReadConf() < 0)
         return -1;
@@ -356,8 +354,12 @@ return 0;
 //-----------------------------------------------------------------------------
 void * USERS_IMPL::Run(void * d)
 {
+sigset_t signalSet;
+sigfillset(&signalSet);
+pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
+
 printfd(__FILE__, "=====================| pid: %d |===================== \n", getpid());
-USERS_IMPL * us = (USERS_IMPL*) d;
+USERS_IMPL * us = static_cast<USERS_IMPL *>(d);
 
 struct tm t;
 time_t tt = stgTime;
@@ -413,7 +415,6 @@ while (us->nonstop)
 user_iter ui = us->users.begin();
 while (ui != us->users.end())
     {
-    us->UnSetUserNotifiers(ui);
     us->DelUserFromIndexes(ui);
     ++ui;
     }
@@ -496,6 +497,8 @@ else
         }
     }
 
+std::for_each(users.begin(), users.end(), std::mem_fun_ref(&USER_IMPL::ProcessDailyFee));
+
 if (settings->GetDayFeeIsLastDay())
     {
     printfd(__FILE__, "DayResetTraff - 2 -\n");
@@ -803,54 +806,6 @@ WriteServLog("USERS. Incorrect search handle.");
 return -1;
 }
 //-----------------------------------------------------------------------------
-void USERS_IMPL::SetUserNotifiers(user_iter user)
-{
-STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-
-/*PROPERTY_NOTIFER_IP_BEFORE nb(*this, user);
-PROPERTY_NOTIFER_IP_AFTER  na(*this, user);
-
-userIPNotifiersBefore.push_front(nb);
-userIPNotifiersAfter.push_front(na);
-
-user->AddCurrIPBeforeNotifier(&(*userIPNotifiersBefore.begin()));
-user->AddCurrIPAfterNotifier(&(*userIPNotifiersAfter.begin()));*/
-}
-//-----------------------------------------------------------------------------
-void USERS_IMPL::UnSetUserNotifiers(user_iter user)
-{
-STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-
-/*list<PROPERTY_NOTIFER_IP_BEFORE>::iterator  bi;
-list<PROPERTY_NOTIFER_IP_AFTER>::iterator   ai;
-
-bi = userIPNotifiersBefore.begin();
-while (bi != userIPNotifiersBefore.end())
-    {
-    if (bi->GetUser() == user)
-        {
-        bi->GetUser()->DelCurrIPBeforeNotifier(&(*bi));
-        userIPNotifiersBefore.erase(bi);
-        //printfd(__FILE__, "Notifier Before removed. User %s\n", bi->GetUser()->GetLogin().c_str());
-        break;
-        }
-    ++bi;
-    }
-
-ai = userIPNotifiersAfter.begin();
-while (ai != userIPNotifiersAfter.end())
-    {
-    if (ai->GetUser() == user)
-        {
-        ai->GetUser()->DelCurrIPAfterNotifier(&(*ai));
-        userIPNotifiersAfter.erase(ai);
-        //printfd(__FILE__, "Notifier After removed. User %s\n", ai->GetUser()->GetLogin().c_str());
-        break;
-        }
-    ++ai;
-    }*/
-}
-//-----------------------------------------------------------------------------
 void USERS_IMPL::AddUserIntoIndexes(user_iter user)
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);