X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2FObj%2Fbrisk.phh;h=8663ca29a59a01101a9fee7758b51e039807fc56;hb=dcbd9de538dd8a20069475b22c5201279ac4e95b;hp=38bc1cf5f51c89176737599b83993c71a8440cd2;hpb=aff81ded58cbc8ce9678a56b634448b35e2ea804;p=brisk.git diff --git a/web/Obj/brisk.phh b/web/Obj/brisk.phh index 38bc1cf..8663ca2 100644 --- a/web/Obj/brisk.phh +++ b/web/Obj/brisk.phh @@ -57,6 +57,7 @@ define(BAN_TIME, 3600); define(GARBAGE_TIMEOUT, 10); define(NICKSERV, "BriskServ"); +define(LOCK_SHARE_MAX, 10000); define(DBG_ONL2, 0x0001); define(DBG_ONLY, 0x0002); @@ -135,10 +136,10 @@ $mlang_brisk = array( 'btn_backstand'=> array( 'it' => 'torna in piedi', $G_lng = langtolng($G_lang); $G_all_points = array( 11,10,4,3,2, 0,0,0,0,0 ); -$G_brisk_version = "3.5.3"; +$G_brisk_version = "3.5.5"; /* MLANG: ALL THE INFO STRINGS IN brisk.phh */ -$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NOVITA\': terza versione di test per la nuova gestione dei dati volatili, rivista gestione del ticker.', +$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NOVITA\': quinta versione di test per la nuova gestione dei dati volatili, rivista gestione del ticker.', 'Se vuoi iscriverti alla Mailing List, cliccala!' ), 'en' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NEWS: third test version for the new volatile data management, ticker management refactored.', 'If you want to subscribe our Mailing List, click it!' ) ); @@ -893,13 +894,20 @@ class User { return (FALSE); } + static function unproxy_step($sess) { + log_rd2("UNPROXY: ".PROXY_PATH."/".$sess.".step"); + if (file_exists(PROXY_PATH) == FALSE) + return; + @unlink(PROXY_PATH."/".$sess.".step"); + } + function reset() { $curtime = time(); log_legal($curtime, $this, "STAT:LOGOUT", ''); $tmp_sess = $this->sess; $this->sess = ""; - step_unproxy($tmp_sess); + self::unproxy_step($tmp_sess); $this->name = ""; // OK here while (array_pop($this->comm) != NULL); $this->step = 0; @@ -1019,13 +1027,6 @@ class User { } // end class User -function step_unproxy($sess) { - log_rd2("UNPROXY: ".PROXY_PATH."/".$sess.".step"); - if (file_exists(PROXY_PATH) == FALSE) - mkdir(PROXY_PATH); - @unlink(PROXY_PATH."/".$sess.".step"); -} - class Room { static $delta_t; @@ -1079,7 +1080,9 @@ class Room { $curtime = time(); // externalized if ($force || $this->garbage_timeout < $curtime) { - if ($force || Room::garbage_time_is_expired($curtime)) { + if (!$force && !Room::garbage_time_is_expired($curtime)) { + return ($ismod); + } // FIXME BRISK4: include for each kind of table require_once("${G_base}briskin5/Obj/briskin5.phh"); @@ -1092,7 +1095,7 @@ class Room { if ($table_cur->player_n == PLAYERS_N) { log_main("PLAYERS == N TABLE ".$table_idx); - if (($sem = Bin5::lock_data($table_idx)) != FALSE) { + if (($sem = Bin5::lock_data(TRUE, $table_idx)) != FALSE) { log_main("bin5 lock data success"); $no_recovery = FALSE; @@ -1143,7 +1146,8 @@ class Room { $this->room_join_wakeup($user_cur, FALSE, 0); $table_cur->table_token = ""; $table_cur->wakeup_time = $curtime + WAKEUP_TIME; - Bin5::destroy_data($table_idx); + + $bri->destroy_data($table_idx); } else { log_main("gm:: save_data"); @@ -1231,7 +1235,6 @@ class Room { // externalized $this->garbage_timeout = time() + GARBAGE_TIMEOUT; Room::garbage_time_expire_set($curtime + GARBAGE_TIMEOUT); $ismod = TRUE; - } return ($ismod); } @@ -1931,7 +1934,7 @@ class Room { if ($table_cur->player_n == PLAYERS_N) { log_main("PLAYERS == N TABLE ".$table_idx); - if (($sem = Bin5::lock_data($table_idx)) != FALSE) { + if (($sem = Bin5::lock_data(TRUE, $table_idx)) != FALSE) { log_main("bin5 lock data success"); $no_recovery = FALSE; @@ -2110,7 +2113,7 @@ class Room { if ($ghost_user->stat == "table" && $this->table[$table_idx]->player_n == PLAYERS_N) { // FIXME BRISK4: include for each kind of table require_once("${G_base}briskin5/Obj/briskin5.phh"); - if (($brisem = Bin5::lock_data($table_idx)) != FALSE) { + if (($brisem = Bin5::lock_data(TRUE, $table_idx)) != FALSE) { if (($bri = Bin5::load_data($table_idx)) != FALSE) { if ($bri->the_end != TRUE) { $bri->user[$ghost_user->table_pos]->step_inc(); @@ -2401,7 +2404,7 @@ class Room { return ($ret); } - static function lock_data() + static function lock_data($is_exclusive) { GLOBAL $sess; @@ -2411,7 +2414,7 @@ class Room { return (FALSE); } // echo "FTOK ".$tok."
"; - if (($res = sem_get($tok)) == FALSE) { + if (($res = sem_get($tok, ($is_exclusive ? 1 : LOCK_SHARE_MAX) )) == FALSE) { return (FALSE); } if (sem_acquire($res)) { @@ -2576,6 +2579,16 @@ function btrace_line($ar) return ($ret); } +function trace_ftok($id, $add) +{ + // NOTE: without space to use sed to substitute "= @ftok(" with "= @ftok(" + $tok=@ftok($id, $add); + + log_shme($tok.": ".$id." + ".$add); + + return ($tok); +} + function log_mop($step, $log) { GLOBAL $sess, $PHP_SELF; @@ -3035,7 +3048,7 @@ function sharedmem_sz($tok) class Warrant { static $delta_t; - function lock_data() + static function lock_data($is_exclusive) { GLOBAL $sess; @@ -3043,7 +3056,7 @@ class Warrant { return (FALSE); } // echo "FTOK ".$tok."
"; - if (($res = sem_get($tok)) == FALSE) { + if (($res = sem_get($tok, ($is_exclusive ? 1 : LOCK_SHARE_MAX) )) == FALSE) { return (FALSE); } if (sem_acquire($res)) { @@ -3055,7 +3068,7 @@ class Warrant { return (FALSE); } - function unlock_data($res) + static function unlock_data($res) { GLOBAL $sess; @@ -3068,7 +3081,7 @@ class Warrant { class Poll { static $delta_t; - function lock_data() + static function lock_data($is_exclusive) { GLOBAL $sess; @@ -3076,7 +3089,7 @@ class Poll { return (FALSE); } // echo "FTOK ".$tok."
"; - if (($res = sem_get($tok)) == FALSE) { + if (($res = sem_get($tok, ($is_exclusive ? 1 : LOCK_SHARE_MAX) )) == FALSE) { return (FALSE); } if (sem_acquire($res)) { @@ -3089,7 +3102,7 @@ class Poll { return (FALSE); } - function unlock_data($res) + static function unlock_data($res) { GLOBAL $sess;