all rd stuff to manage fwrite fail, rd_keepalive and rd_endstream
[brisk.git] / web / index_rd_ifra.php
index 7d4f493..7546c2c 100644 (file)
@@ -130,6 +130,7 @@ function blocking_error($is_unrecoverable)
   return (sprintf(($is_unrecoverable ? 'hstm.stop(); ' : '').'window.onbeforeunload = null; window.onunload = null; document.location.assign("index.php");'));
 }
 
+// FIXME TO SUPPORT iframe
 function page_sync($sess, $page, $table_idx, $table_token)
 {
   GLOBAL $is_page_streaming;
@@ -491,6 +492,33 @@ function maincheck(&$room, &$user, $cur_stat, $cur_subst, $cur_step, &$new_stat,
     return ($ret);
 }
 
+function index_rd_ifra_fini($is_unrecoverable)
+{
+    GLOBAL $G_four_rnd_string;
+
+    // IF IFRAME THEN:
+    $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\">
+var http_streaming = \"ready\";");
+    $body .= sprintf("
+window.onload = function () { if (http_streaming != \"ready\") { http_streaming.reload(); } };
+</script>
+</head>
+<body>");
+    $body .= sprintf("<!-- \n%s -->\n", $G_four_rnd_string);
+    $body .= sprintf("<script id='hs%d' type='text/javascript'><!--
+push(\"%s\");
+// -->
+</script>", 0, escpush(blocking_error($is_unrecoverable)) );
+    // ELSE IF XHR THEN:
+    // return (blocking_error($is_unrecoverable));
+    return ($body);
+}
+
 /*
  *  MAIN
  */
@@ -505,6 +533,8 @@ function index_rd_ifra_init(&$room, &$user, &$header_out, &$body, $get, $post, $
 {
     GLOBAL $G_four_rnd_string;
 
+    $curtime = time();
+
     $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
@@ -522,7 +552,7 @@ function index_rd_ifra_init(&$room, &$user, &$header_out, &$body, $get, $post, $
     if (($step  = gpcs_var('step', $get, $post, $cookie)) === FALSE) 
         unset($step);
     
-    $user->rd_data_set(time() + STREAM_TIMEOUT, $stat, $subst, $step, $from);
+    $user->rd_data_set($curtime, $stat, $subst, $step, $from);
 
     $body .= sprintf("<html>
 <head>
@@ -614,4 +644,13 @@ push(\"%s\");
 
     return TRUE;
 }
+
+function index_rd_ifra_keepalive(&$user)
+{
+    return (sprintf("<script id='hs%d' type='text/javascript'><!--
+push(null);
+// -->
+</script>", $user->rd_scristp++));
+
+}
 ?>