}
}
- function load_data()
- {
- GLOBAL $sess;
-
- do {
- if (($tok = @ftok(FTOK_PATH."/main", "C")) == -1) {
- log_main("ftok failed");
- break;
- }
-
- if (($shm_sz = sharedmem_sz($tok)) == -1) {
- log_main("shmop_open failed");
- }
-
- if ($shm_sz == -1)
- $shm_sz = SHM_DIMS_MIN;
-
- if ($shm = shm_attach($tok, $shm_sz)) {
- $brisk = @shm_get_var($shm, $tok); // CHECKED BELOW
-
- log_only("bri == ".($brisk == FALSE ? "FALSE" : "TRUE")." bri === ".($brisk === FALSE ? "FALSE" : "TRUE")." bri isset ".(isset($brisk) ? "TRUE" : "FALSE"));
- if (isset($brisk))
- log_only("bri count ".count($brisk));
-
- if ($brisk == FALSE) {
- log_only("INIT MAIN DATA");
- shm_detach($shm);
-
- $brisk = Brisk::create();
-
- log_shme("Brisk::create");
-
- if (Brisk::save_data($brisk) == FALSE)
- return FALSE;
-
- return $brisk;
- }
- $brisk->shm_sz = $shm_sz;
-
- shm_detach($shm);
-
- for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
- if (($brisk->user[$i] = User::load_data($i, FALSE)) == FALSE) {
- log_crit("User::load_data failed");
- break;
- }
- }
- if ($i < MAX_PLAYERS) {
- break;
- }
- }
-
- //
- // SHSPLIT: load users from the shared memory
- //
- return ($brisk);
- } while (0);
-
- return (FALSE);
- }
-
-
- function save_data_orig($brisk)
- {
- GLOBAL $sess;
-
- $shm = FALSE;
-
- // var_dump($brisk);
-
- if (($tok = @ftok(FTOK_PATH."/main", "C")) == -1)
- return (FALSE);
-
- while ($brisk->shm_sz < SHM_DIMS_MAX) {
- if (($shm = shm_attach($tok, $brisk->shm_sz)) == FALSE)
- break;
-
- // log_only("PUT_VAR DI ".strlen(serialize($brisk)));
- if (@shm_put_var($shm, $tok, $brisk) != FALSE) {
- shm_detach($shm);
- return (TRUE);
- }
- if (shm_remove($shm) === FALSE) {
- log_only("REMOVE FALLITA");
- break;
- }
- shm_detach($shm);
- $brisk->shm_sz += SHM_DIMS_DLT;
- }
-
- if ($shm)
- shm_detach($shm);
-
- return (FALSE);
- }
function dump_data()
{
$brisk_ser = serialize($this);
return (FALSE);
}
- function save_data($brisk)
- {
- GLOBAL $sess;
-
- $ret = FALSE;
- $shm = FALSE;
-
- if (($tok = @ftok(FTOK_PATH."/main", "C")) == -1)
- return (FALSE);
-
- // SHSPLIT: before save the $brisk you must save users,
- // detach from main struct and (then) reattach
- $user_park = array();
- for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
- $user_park[$i] = $brisk->user[$i];
- $brisk->user[$i] = FALSE;
- }
-
- while ($brisk->shm_sz < SHM_DIMS_MAX) {
- if (($shm = shm_attach($tok, $brisk->shm_sz)) == FALSE)
- break;
-
- // log_only("PUT_VAR DI ".strlen(serialize($brisk)));
- if (@shm_put_var($shm, $tok, $brisk) != FALSE) {
- log_shme("Brisk::save_data");
- $ret = TRUE;
- break;
- }
- if (shm_remove($shm) === FALSE) {
- log_only("REMOVE FALLITA");
- break;
- }
- shm_detach($shm);
- $brisk->shm_sz += SHM_DIMS_DLT;
- }
-
- if ($shm)
- shm_detach($shm);
-
- // SHSPLIT: reattach users to the room class
- for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
- User::save_data($user_park[$i], $i);
- $brisk->user[$i] = $user_park[$i];
- }
- log_load("FINISH: ".($ret == TRUE ? "TRUE" : "FALSE"));
-
- return ($ret);
- }
-
static function lock_data($is_exclusive)
{
if (($res = file_lock(FTOK_PATH."/main", $is_exclusive)) != FALSE) {