* brisk - Obj/user.phh
*
* Copyright (C) 2012-2015 Matteo Nastasi
- * mailto: nastasi@alternativeoutput.it
+ * mailto: nastasi@alternativeoutput.it
* matteo.nastasi@milug.org
* web: http://www.alternativeoutput.it
*
var $laccwr; // last access (for the cleanup)
var $bantime; // timeout to temporary ban
var $stat; // status (outdoor, room, table, game, ...)
- var $subst; // substatus for each status
+ var $subst; // substatus for each status
var $step; // step of the current status
var $trans_step; // step to enable transition between pages (disable == -1)
var $cl_step; // current step returned by client
var $rd_subst; // actual substatus of push stream
var $rd_step; // actual step of push stream
var $rd_from; // referer
- var $rd_scristp; // current script step (for each session)
+ var $rd_scristp; // current script step (for each session)
var $rd_kalive; // if no message are sent after RD_KEEPALIVE_TOUT secs we send a keepalive from server
var $rd_cache; // place where store failed fwrite data
var $rd_toflush; // bool to inform about unfflushed socket
var $rd_is_chunked; // is the transport chunked or not ?
var $comm; // commands array
- // var $asta_card; //
+ // var $asta_card; //
// var $asta_pnt; //
// var $handpt; // Total card points at the beginning of the current hand.
// var $exitislock; // Player can exit from the table ?
var $table_orig; // id of the current table when you aren't in game
var $table_pos; // idx on the table
var $table_token;// token that identify a game on a table
- var $flags; // Bitfield with: AUTHENTICATE: 0x02
+ var $flags; // Bitfield with: AUTHENTICATE: 0x02
var $rec; // field with user db record or FALSE
var $the_end; // Flag to change the end of the session
$this->pend_async = $from->pend_async;
$this->comm = array();
- $i_start = (1 > ($from->step - COMM_N) ? 1 : ($from->step - COMM_N));
+ $i_start = (1 > ($from->step - COMM_N) ? 1 : ($from->step - COMM_N));
for ($i = $i_start ; $i < $from->step ; $i++) {
$ii = $i % COMM_N;
if (isset($from->comm[$ii])) {
{
if (($thiz = new User()) == FALSE)
return (FALSE);
-
+
$thiz->copy($from);
return ($thiz);
}
-
+
static function spawn($from, $table, $table_pos)
{
if (($thiz = new User()) == FALSE)
return (FALSE);
-
+
$thiz->idx = $from->idx;
$thiz->idx_orig = $from->idx;
$thiz->code = $from->code;
$thiz->comm = array();
/*
- $i_start = (1 > ($from->step - COMM_N) ? 1 : ($from->step - COMM_N));
+ $i_start = (1 > ($from->step - COMM_N) ? 1 : ($from->step - COMM_N));
for ($i = $i_start ; $i < $from->step ; $i++) {
log_wr("TRY PUSH:".$i);
$ii = $i % COMM_N;
function code_get() {
return ($this->code);
}
-
+
function stat_set($stat) {
- log_main("sess: [".$this->sess. "] NEW STAT: [".$stat."]");
+ log_main("sess: [".$this->sess. "] NEW STAT: [".$stat."]");
$this->stat = "$stat";
-
+
/*
if (validate_sess($this->sess)) {
if (file_exists(PROXY_PATH) == FALSE)
*/
}
- function step_set($step)
+ function step_set($step)
{
$this->step = $step & 0x7fffffff;
-
+
return (TRUE);
}
$this->step += $delta;
/* modularization because unpack() not manage unsigned 32bit int correctly */
$this->step &= 0x7fffffff;
-
+
return TRUE;
}
- function save_step()
+ function save_step()
{
do {
if (validate_sess($this->sess) == FALSE)
break;
fwrite($fp, pack("LL",$this->step, $this->idx));
fclose($fp);
-
- log_main("step_set [".$this->sess. "] [".$this->step."]");
-
+
+ log_main("step_set [".$this->sess. "] [".$this->step."]");
+
return (TRUE);
} while (0);
-
+
return (FALSE);
}
-
- static function load_step($sess)
+
+ static function load_step($sess)
{
$fp = FALSE;
do {
if (validate_sess($sess) == FALSE)
break;
-
+
if (file_exists(PROXY_PATH) == FALSE)
mkdir(PROXY_PATH, 0775, TRUE);
if (($fp = @fopen(PROXY_PATH."/".$sess.".step", 'rb')) == FALSE)
break;
$arr = unpack('Ls/Li', $s);
fclose($fp);
-
+
// log_rd2("A0: ".$arr[0]." A1: ".$arr[1]);
return ($arr);
} while (0);
-
+
if ($fp != FALSE)
fclose($fp);
-
+
log_rd2("STEP_GET [".$sess."]: return false ");
-
+
return (FALSE);
}
log_crit("BLOCKING_ERROR UNREC: ".($is_unrecoverable ? "TRUE" : "FALSE"));
return (sprintf(($is_unrecoverable ? 'xstm.stop(); ' : '').'window.onbeforeunload = null; window.onunload = null; document.location.assign("index.php");'));
}
-
+
// FIXME TO SUPPORT iframe
protected function page_sync($sess, $page, $table_idx, $table_token)
{
// log_rd2("page_sync:".var_export(debug_backtrace()));
-
+
log_rd2("PAGE_SYNC");
printf("xXx USER::PAGE_SYNC [%s]\n", get_class($this));
return (sprintf('createCookie("table_idx", %d, 24*365, cookiepath); createCookie("table_token", "%s", 24*365, cookiepath); xstm.stop(); window.onunload = null; window.onbeforeunload = null; document.location.assign("%s");', $table_idx, $table_token, $page));
GLOBAL $G_tos_vers, $G_tos_fname, $G_tos_dthard, $G_tos_dtsoft, $G_tos_idx;
GLOBAL $S_load_stat;
-
+
$CO_splashdate = "CO_splashdate".$G_splash_idx;
if (($splashdate = gpcs_var("$CO_splashdate", $get, $post, $cookie)) === FALSE)
$splashdate = "";
log_rd("maincheck begin");
-
+
$ret = "";
$curtime = time();
/* Nothing changed, return. */
if ($this->rd_step == $this->step)
return (FALSE);
-
+
log_rd2("do other cur_stat[".$this->rd_stat."] user->stat[".$this->stat."] cur_step[".$this->rd_step."] user_step[".$this->step."]");
-
+
fprintf(STDERR, "ASYNC: %d %d\n", $this->rd_step, $this->pend_async);
if ($this->rd_step == -1 && $this->pend_async == 0) {
/* if $this->rd_step == -1 load the current state from the main struct */
log_rd2("TRANS NON ATTIVATO");
}
}
-
+
if ($this->pend_async > 0) {
return (FALSE);
}
/* this part I suppose is read only on $this->room structure */
if ($this->rd_step == -1) {
log_rd2("PRE-NEWSTAT: ".$this->stat);
-
+
if ($this->stat == 'room') {
log_rd("roomma ".$this->step);
if ($this->rec !== FALSE) {
}
$this->room->standup_update($this);
$ret .= $this->room->show_room($this->step, $this);
-
+
// TODO uncomment and test
/* NOTE the sets went common */
$this->rd_stat = $this->stat;
} /* if ($this->rd_step == -1) { */
else {
$S_load_stat['rU_heavy']++;
-
+
if ($this->rd_step < $this->step) {
do {
if ($this->rd_step + COMM_N < $this->step) {
log_rd2("lost history, refresh from scratch");
$this->rd_step = -1;
break;
- }
+ }
for ($i = $this->rd_step ; $i < $this->step ; $i++) {
$ii = $i % COMM_N;
log_rd2("ADDED TO THE STREAM: ".$this->comm[$ii]);
$this->rd_subst = $this->subst;
$this->rd_step = $this->step;
} while (0);
-
+
log_rd2($this->step, 'index_rd.php: after ret set');
// if ($this->the_end == TRUE) { management is moved
if ($ret == "")
$ret = FALSE;
-
+
return ($ret);
} // function maincheck(...
*/
/*
- FROM THE EXTERN
+ FROM THE EXTERN
sess
stat
step
function stream_init($init_string, $enc, $header, &$header_out, &$body, $get, $post, $cookie)
{
$curtime = time();
-
+
printf("CLASS: [%s] base: [%s]\n", get_class($this), self::base_get());
log_load("index_rd_init.php");
-
+
if (($from = gpcs_var('from', $get, $post, $cookie)) === FALSE)
$from = "";
- if (($stat = gpcs_var('stat', $get, $post, $cookie)) === FALSE)
+ if (($stat = gpcs_var('stat', $get, $post, $cookie)) === FALSE)
$stat = "";
- if (($subst = gpcs_var('subst', $get, $post, $cookie)) === FALSE)
+ if (($subst = gpcs_var('subst', $get, $post, $cookie)) === FALSE)
$subst = "";
- if (($step = gpcs_var('step', $get, $post, $cookie)) === FALSE)
+ if (($step = gpcs_var('step', $get, $post, $cookie)) === FALSE)
unset($step);
if (($transp = gpcs_var('transp', $get, $post, $cookie)) === FALSE)
$transp = "iframe";
-
+
$this->rd_data_set($curtime, $transp, $enc, $stat, $subst, $step, $from);
-
+
$ret = $this->rd_transp->init($enc, $header, &$header_out, $init_string, self::base_get(), $this->rd_scristp);
if ($ret === FALSE) {
function stream_main(&$body, $get, $post, $cookie)
{
log_rd2("FROM OUTSIDE - STAT: ".$this->rd_stat." SUBST: ".$this->rd_subst." STEP: ".$this->rd_step." FROM: ".$this->rd_from);
-
-
+
+
$pre_main = gettimeofday(TRUE);
-
+
printf("xXx PRE : rd_step %d\n", $this->rd_step);
if (($ret = $this->maincheck($get, $post, $cookie)) != FALSE) {
$body .= $this->rd_transp->chunk( $this->rd_scristp++, $ret);