G_btrace_pref_sup var added with prefix to remove in backtrace log functions
[brisk.git] / web / Obj / brisk.phh
index 87185da..1893940 100644 (file)
@@ -951,6 +951,7 @@ class User {
       // log_only("PUT_VAR DI ".strlen(serialize($user)));
       if (shm_put_var($shm, $tok, $user) != FALSE) {
        shm_detach($shm);
+       log_main("User[".$id."] saved.");
        return (TRUE);
       }
       if (shm_remove($shm) === FALSE) {
@@ -1014,7 +1015,7 @@ class Room {
   var $table;
   var $comm; // commands for many people
   var $step; // current step of the comm array
-  var $garbage_timeout;
+  // externalized var $garbage_timeout;
   var $shm_sz;
 
   function Room () {
@@ -1042,7 +1043,8 @@ class Room {
       else
         $this->table[$i]->auth_only = FALSE;
     }
-    $this->garbage_timeout = 0;
+    // externalized $this->garbage_timeout = 0;
+    Room::garbage_time_expire_set(0);
     $this->shm_sz = SHM_DIMS_MIN;
   }
 
@@ -1056,7 +1058,9 @@ class Room {
 
     /* Garbage collector degli utenti in timeout */
     $curtime = time();
-    if ($force || $this->garbage_timeout < $curtime) {
+
+    // externalized if ($force || $this->garbage_timeout < $curtime) {
+    if ($force || Room::garbage_time_is_expired($curtime)) {
       
       // FIXME BRISK4: include for each kind of table
       require_once("${G_base}briskin5/Obj/briskin5.phh");
@@ -1205,7 +1209,8 @@ class Room {
       }
       log_rd2("GARBAGE UPDATED!");
       
-      $this->garbage_timeout = time() + GARBAGE_TIMEOUT;
+      // externalized $this->garbage_timeout = time() + GARBAGE_TIMEOUT;
+      Room::garbage_time_expire_set(time() + GARBAGE_TIMEOUT);
       $ismod = TRUE;
     }
 
@@ -2278,7 +2283,7 @@ class Room {
           shm_detach($shm);
 
           for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
-              $room->user[$i] = User::load_data($i);
+              $room->user[$i] = User::load_data($i, FALSE);
           }
       }
       
@@ -2376,32 +2381,33 @@ class Room {
           User::save_data($user_park[$i], $i);
           $room->user[$i] = $user_park[$i];
       }
+      log_load("FINISH: ".($ret == TRUE ? "TRUE" : "FALSE"));
 
       return ($ret);
   }
 
-  function lock_data()
+  static function lock_data()
   {
-    GLOBAL $sess; 
-    
-    //  echo "LOCK: ".FTOK_PATH."/main";
-    //  exit;
-    if (($tok = @ftok(FTOK_PATH."/main", "B")) == -1) {
-      return (FALSE);
-    }
-    // echo "FTOK ".$tok."<br>";
-    if (($res = sem_get($tok)) == FALSE) {
-      return (FALSE);
-    }
-    if (sem_acquire($res)) {   
-      log_lock("LOCK room");
-      return ($res);
-    }
-    else
-      return (FALSE);
+      GLOBAL $sess; 
+      
+      //  echo "LOCK: ".FTOK_PATH."/main";
+      //  exit;
+      if (($tok = @ftok(FTOK_PATH."/main", "B")) == -1) {
+          return (FALSE);
+      }
+      // echo "FTOK ".$tok."<br>";
+      if (($res = sem_get($tok)) == FALSE) {
+          return (FALSE);
+      }
+      if (sem_acquire($res)) {   
+          log_lock("LOCK room");
+          return ($res);
+      }
+      else
+          return (FALSE);
   }
   
-  function unlock_data($res)
+  static function unlock_data($res)
   {
     GLOBAL $sess; 
     
@@ -2485,6 +2491,49 @@ class Room {
     return ($ret);
   }
 
+  static function garbage_time_is_expired($tm) 
+  {
+      $ret = TRUE;
+      $fp = FALSE;
+      do {
+          if (file_exists(PROXY_PATH) == FALSE)
+              mkdir(PROXY_PATH);
+          if (($fp = @fopen(PROXY_PATH."/room_garbage_time.expired", 'rb')) == FALSE)
+              break;
+          if (($s = fread($fp, 4)) == FALSE)
+              break;
+          if (strlen($s) != 4)
+              break;
+          $arr = unpack('Le', $s);
+          if ($arr['e'] > $tm)
+              $ret = FALSE;
+      } while (0);
+      
+      if ($fp != FALSE)
+          fclose($fp);
+      
+      log_rd2("END: return ".($ret ? "TRUE" : "FALSE"));
+      
+      return ($ret);
+  }
+
+  static function garbage_time_expire_set($tm) 
+  {
+      do {
+          if (file_exists(PROXY_PATH) == FALSE)
+              mkdir(PROXY_PATH);
+          if (($fp = @fopen(PROXY_PATH."/room_garbage_time.expired", 'wb')) == FALSE)
+              break;
+          fwrite($fp, pack("L",$tm));
+          fclose($fp);
+          
+          return (TRUE);
+      } while (0);
+      
+      return (FALSE);
+  }
+
+
 } // end class Room
 
 function make_seed()