]> git.stg.codes - stg.git/blobdiff - projects/stargazer/users.cpp
Усунуто проблему race conditions у rscriptd
[stg.git] / projects / stargazer / users.cpp
index 1b710baa9773fe16f0c5ff1e293055a026da11f5..f97a029fe85b5f0c5fcd334195f9395d564fc8d9 100644 (file)
@@ -352,9 +352,6 @@ return NULL;
 //-----------------------------------------------------------------------------
 void USERS::NewMinute(const struct tm * t)
 {
-int usersCnt = 0;
-list<USER>::iterator usr;
-
 //Write traff, reset session traff. Fake disconnect-connect
 if (t->tm_hour == 23 && t->tm_min == 59)
     {
@@ -365,11 +362,10 @@ if (t->tm_hour == 23 && t->tm_min == 59)
 if (TimeToWriteDetailStat(t))
     {
     //printfd(__FILE__, "USER::WriteInetStat\n");
-    for_each(users.begin(), users.end(), mem_fun_ref(&USER::SwapDetailStat));
-    usersCnt = 0;
+    int usersCnt = 0;
 
     // ðÉÛÅÍ ÀÚÅÒÏ× ÞÁÓÔÑÍÉ. ÷ ÐÅÒÅÒÙ×ÁÈ ×ÙÚÙ×ÁÅÍ USER::Run
-    usr = users.begin();
+    list<USER>::iterator usr = users.begin();
     while (usr != users.end())
         {
         usersCnt++;
@@ -378,8 +374,6 @@ if (TimeToWriteDetailStat(t))
         if (usersCnt % 10 == 0)
             for_each(users.begin(), users.end(), mem_fun_ref(&USER::Run));
         }
-
-    for_each(users.begin(), users.end(), mem_fun_ref(&USER::ResetDetailStat));
     }
 
 RealDelUser();
@@ -495,8 +489,13 @@ if (isRunning)
 
 printfd(__FILE__, "Before USERS::Run()\n");
 for_each(users.begin(), users.end(), mem_fun_ref(&USER::Run));
-for_each(users.begin(), users.end(), mem_fun_ref(&USER::SwapDetailStat));
-for_each(users.begin(), users.end(), mem_fun_ref(&USER::WriteDetailStat));
+
+// 'cause bind2st accepts only constant first param
+for (list<USER>::iterator it = users.begin();
+     it != users.end();
+     ++it)
+    it->WriteDetailStat(true);
+
 for_each(users.begin(), users.end(), mem_fun_ref(&USER::WriteStat));
 for_each(users.begin(), users.end(), mem_fun_ref(&USER::WriteConf));
 
@@ -753,16 +752,3 @@ switch (statTime)
     }
 return false;
 }
-//-----------------------------------------------------------------------------
-/*int USERS::SendMessage(const string & login,
-                       time_t sndTtime,
-                       time_t showTime,
-                       char type,
-                       const string & text) const
-{
-return 0;
-}*/
-//-----------------------------------------------------------------------------
-
-
-