server-side ping management fixed
[brisk.git] / web / Obj / user.phh
index a4e6e10..a6f1b90 100644 (file)
@@ -186,6 +186,8 @@ class User {
   var $chat_dlt;      // Delta t for ban
   var $shm_sz;
 
+  const BASE = "";    // basepath for absolute web references
+
   function User() {
   }
 
@@ -635,7 +637,7 @@ class User {
 
   /* INDEX_RD_IFRA PORT */
 
-  static function blocking_error($is_unrecoverable)
+  protected function blocking_error($is_unrecoverable)
   {
       GLOBAL $is_page_streaming;
       
@@ -645,22 +647,23 @@ class User {
   }
   
   // FIXME TO SUPPORT iframe
-  static function page_sync($sess, $page, $table_idx, $table_token)
+  protected function page_sync($sess, $page, $table_idx, $table_token)
   {
       GLOBAL $is_page_streaming;
       
-      log_rd2("page_sync:".var_export(debug_backtrace()));
+      // log_rd2("page_sync:".var_export(debug_backtrace()));
       
       $is_page_streaming = TRUE;
       
       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); hstm.stop(); window.onunload = null; window.onbeforeunload = null; document.location.assign("%s");', $table_idx, $table_token, $page));
   }
 
 
 
 
-  function maincheck($cur_stat, $cur_subst, $cur_step, &$new_stat, &$new_subst, &$new_step, $splashdate)
+  protected function maincheck($cur_stat, $cur_subst, $cur_step, &$new_stat, &$new_subst, &$new_step, $splashdate, $table_idx, $table_token)
   {
       GLOBAL $G_lang, $mlang_indrd, $is_page_streaming;
       // GLOBAL $first_loop;
@@ -676,22 +679,22 @@ class User {
       $ret = FALSE;
       $curtime = time();
       
-      if ((($curtime - $this->lacc) >  STREAM_TIMEOUT) || Room::garbage_time_is_expired($curtime)) {
-          $S_load_stat['lL_laccgarb']++;
+      /* if ((($curtime - $this->lacc) >  STREAM_TIMEOUT) || Room::garbage_time_is_expired($curtime)) { */
+      /*     $S_load_stat['lL_laccgarb']++; */
           
-          if (($curtime - $this->lacc) >=  STREAM_TIMEOUT) {
-              $S_load_stat['wU_lacc_upd']++;
-              $this->lacc = $curtime;
-          }
+      /*     if (($curtime - $this->lacc) >=  STREAM_TIMEOUT) { */
+      /*         $S_load_stat['wU_lacc_upd']++; */
+      /*         $this->lacc = $curtime; */
+      /*     } */
           
-          if (Room::garbage_time_is_expired($curtime)) {
-              log_only("F");
+      /*     if (Room::garbage_time_is_expired($curtime)) { */
+      /*         log_only("F"); */
               
-              $S_load_stat['wR_garbage']++;
-              log_main("pre garbage_manager TRE");
-              $this->room->garbage_manager(FALSE);
-          }
-      }
+      /*         $S_load_stat['wR_garbage']++; */
+      /*         log_main("pre garbage_manager TRE"); */
+      /*         $this->room->garbage_manager(FALSE); */
+      /*     } */
+      /* } */
       
       /* Nothing changed, return. */
       if ($cur_step == $this->step) 
@@ -756,7 +759,9 @@ class User {
            ***************/
           else if ($this->stat == 'table') {
               log_load("RESYNC");
-              return (self::page_sync($this->sess, "briskin5/index.php", $this->table, $this->table_token));
+              printf("xXx USER::MAINCHECK1 [%s]\n", get_class($this));
+
+              return ($this->page_sync($this->sess, "briskin5/index.php", $this->table, $this->table_token));
           }
           log_rd2("NEWSTAT: ".$this->stat);
       } /* if ($cur_step == -1) { */
@@ -771,7 +776,8 @@ class User {
                           $to_stat = $this->stat;
                           /* Room::unlock_data($sem); */
                           log_load("RESYNC");
-                          return (self::page_sync($this->sess, ($to_stat == "table" ? "briskin5/index.php" : "index.php"), $this->table, $this->table_token));
+                          printf("xXx USER::MAINCHECK2 [%s]\n", get_class($this));
+                          return ($this->page_sync($this->sess, ($to_stat == "table" ? "briskin5/index.php" : "index.php"), $this->table, $this->table_token));
                       }
                       log_rd2("lost history, refresh from scratch");
                       $new_step = -1;
@@ -816,7 +822,7 @@ class User {
       return ($ret);
   }  //   function maincheck (...
 
-static function stream_fini($is_unrecoverable)
+public static function stream_fini($is_unrecoverable)
 {
     GLOBAL $G_four_rnd_string;
 
@@ -824,10 +830,10 @@ static function stream_fini($is_unrecoverable)
     $body = "";
     $body .= sprintf("<html>
 <head>
-<script type=\"text/javascript\" src=\"commons.js\"></script>
-<script type=\"text/javascript\" src=\"xynt-http-streaming-ifra.js\"></script>
+<script type=\"text/javascript\" src=\"%scommons.js\"></script>
+<script type=\"text/javascript\" src=\"%sxynt-http-streaming-ifra.js\"></script>
 <script type=\"text/javascript\">
-var http_streaming = \"ready\";");
+var http_streaming = \"ready\";", self::base_get(), self::base_get());
     $body .= sprintf("
 window.onload = function () { if (http_streaming != \"ready\") { http_streaming.reload(); } };
 </script>
@@ -859,6 +865,8 @@ function stream_init(&$header_out, &$body, $get, $post, $cookie)
 
     $curtime = time();
 
+    printf("CLASS: [%s] base: [%s]\n", get_class($this), self::base_get());
+
     $is_page_streaming = FALSE; // (webservers_exceeded() || stristr($HTTP_USER_AGENT, "Mozilla/5.0 (Windows NT 6.1; rv:5.0)") || stristr($HTTP_USER_AGENT, "MSIE") || stristr($HTTP_USER_AGENT, "CHROME") ? TRUE : FALSE);
 
     $header_out['Cache-Control'] = 'no-cache, must-revalidate';     // HTTP/1.1
@@ -877,13 +885,14 @@ function stream_init(&$header_out, &$body, $get, $post, $cookie)
         unset($step);
     
     $this->rd_data_set($curtime, $stat, $subst, $step, $from);
+    $cc = get_called_class();
 
     $body .= sprintf("<html>
 <head>
-<script type=\"text/javascript\" src=\"commons.js\"></script>
-<script type=\"text/javascript\" src=\"xynt-http-streaming-ifra.js\"></script>
+<script type=\"text/javascript\" src=\"%scommons.js\"></script>
+<script type=\"text/javascript\" src=\"%sxynt-http-streaming-ifra.js\"></script>
 <script type=\"text/javascript\">
-var http_streaming = \"ready\";");
+var http_streaming = \"ready\";", self::base_get(), self::base_get());
     if ($this->rd_scristp > 0)
         $body .= sprintf("last_clean = %d;\n", ($this->rd_scristp-1));
     $body .= sprintf("
@@ -905,6 +914,10 @@ function stream_main(&$body, $get, $post, $cookie)
     $CO_splashdate = "CO_splashdate".$G_splash_idx;
     if (($splashdate = gpcs_var("$CO_splashdate", $get, $post, $cookie)) === FALSE)
         $splashdate = ""; 
+    if (($table_idx = gpcs_var("table_idx", $get, $post, $cookie)) === FALSE)
+        $table_idx = ""; 
+    if (($table_token = gpcs_var("table_token", $get, $post, $cookie)) === FALSE)
+        $table_token = ""; 
 
     $is_page_streaming = FALSE;
     log_rd2("FROM OUTSIDE - STAT: ".$this->rd_stat." SUBST: ".$this->rd_subst." STEP: ".$this->rd_step." FROM: ".$this->rd_from. "IS_PAGE:" . $is_page_streaming);
@@ -915,7 +928,8 @@ function stream_main(&$body, $get, $post, $cookie)
     $old_stat  = $this->rd_stat;
     $old_subst = $this->rd_subst;
     $old_step  = $this->rd_step;
-    if (($ret = maincheck($this, $old_stat, $old_subst, $old_step, $this->rd_stat, $this->rd_subst, $this->rd_step, $splashdate)) != FALSE) {
+    printf("xXx PRE : rd_step %d\n", $this->rd_step);
+    if (($ret = $this->maincheck($old_stat, $old_subst, $old_step, $this->rd_stat, $this->rd_subst, $this->rd_step, $splashdate, $table_idx, $table_token)) != FALSE) {
         $body .= sprintf("<script id='hs%d' type='text/javascript'><!--
 push(\"%s\");
 // -->
@@ -925,48 +939,27 @@ push(\"%s\");
         if ($is_page_streaming) 
             return TRUE;
     }
-    
+    printf("xXx POST: rd_step %d\n", $this->rd_step);
+
     return TRUE;
 }
 
-function stream_keepalive()
+function stream_keepalive($with_ping)
 {
-    return (sprintf("<script id='hs%d' type='text/javascript'><!--
-push(null);
+    $ret =  (sprintf("<script id='hs%d' type='text/javascript'><!--
+push(%s);
 // -->
-</script>", $this->rd_scristp++));
-    
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+</script>", $this->rd_scristp++, ($with_ping ? "\"act_ping();\"" : "null")));
 
+    return ($ret);
+}
 
+static function base_get()
+{
+    $c = get_called_class();
+    printf("CALLED_CLASS: [%s]\n", $c);
+    return $c::BASE;
+}
 
 } // end class User