X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;ds=inline;f=web%2Fxhr.js;h=d023eb39e6b20789951147b6f1bb59622167ada6;hb=6ac8408a6b3a7baa1e832aac4c9eb79961cd2e1c;hp=ca1a2a0adb48ddbb0147b5a69a756f48e40fa04a;hpb=a7c111476a065b8b71bddd00965fc5c93a3836e8;p=brisk.git
diff --git a/web/xhr.js b/web/xhr.js
index ca1a2a0..d023eb3 100644
--- a/web/xhr.js
+++ b/web/xhr.js
@@ -1,7 +1,10 @@
/*
* brisk - xhr.js
*
- * Copyright (C) 2006 matteo.nastasi@milug.org
+ * Copyright (C) 2006-2011 Matteo Nastasi
+ * mailto: nastasi@alternativeoutput.it
+ * matteo.nastasi@milug.org
+ * web: http://www.alternativeoutput.it
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,43 +19,86 @@
* not, write to the Free Software Foundation, Inc, 59 Temple Place -
* Suite 330, Boston, MA 02111-1307, USA.
*
- * $Id$
- *
*/
var xhr_rd_cookiepath = "/brisk/";
-var xhr_rd = false;
+var xhr_rd = null;
var xhr_rd_stopped = true;
var xhr_rd_oldctx = "";
var xhr_rd_newctx = "";
-
+var xhr_rd_delay = 0;
+var xhr_rd_delayed = null;
var xhr_rd_cur_n = -1;
var xhr_rd_old_n = -1;
var xhr_rd_checkedlen = 0;
+var xhr_rd_watchdog = null;
var the_end = false;
var ct = 0;
var watchdog = 0;
+function hbit(symb)
+{
+ if ($("heartbit").innerHTML.length >= 120) {
+ $("heartbit").innerHTML = $("heartbit").innerHTML.substring(10);
+ $("heartbit").innerHTML += symb;
+ }
+ else {
+ $("heartbit").innerHTML += symb;
+ }
+ // $("heartbit").innerHTML = $("heartbit").innerHTML.substring(20,20); // DA METTERE APPOSTO!!!!
+
+}
+
function xhr_rd_cb(xhr_rd)
{
var ret;
+ // console.log(xhr_rd.readyState);
+
if (xhr_rd.readyState == 4) {
+ if (typeof xhr_rd_watchdog != 'undefined' && xhr_rd_watchdog != null) {
+ hbit('C');
+ clearTimeout(xhr_rd_watchdog);
+ xhr_rd_watchdog = null;
+ }
+
+ // console.log("SS: "+safestatus(xhr_rd));
+
try {
if ((ret = safestatus(xhr_rd)) == 200) {
+ xhr_rd_delay = 0;
+ // console.log("del a null "+xhr_rd_delayed);
} else if (ret != -1) {
- alert('There was a problem with the request.' + ret);
+ xhr_rd_delay = 5000;
+ hbit('X');
+ // alert('There was a problem with the request.' + ret);
}
} catch(b) {};
+ xhr_rd_delayed = null;
xhr_rd_stopped = true;
}
};
+function xhr_rd_abort(xhr)
+{
+ hbit('A');
+ if (xhr != null)
+ xhr.abort();
+ // alert("de che");
+}
+
function xhr_rd_start(sess,stat,subst,step)
{
- if (the_end)
+ if (the_end) {
+ //x alert("the_end1");
+ if (typeof xhr_rd_watchdog != 'undefined' && xhr_rd_watchdog != null) {
+ hbit('C');
+ clearTimeout(xhr_rd_watchdog);
+ xhr_rd_watchdog = null;
+ }
return;
+ }
createCookie("sess", sess, 24*365, xhr_rd_cookiepath);
// NOTE: *ctx = "" to prevent konqueror stream commands duplication.
@@ -60,11 +106,16 @@ function xhr_rd_start(sess,stat,subst,step)
xhr_rd_newctx = "";
/* NOTE document.uniqueID exists only under IE */
- // alert("di qui3");
+ // if (g_is_spawn == 1)
+ // alert("di qui3: "+(g_is_spawn == 1 ? "&table_idx="+g_table_idx : ""));
xhr_rd.open('GET', 'index_rd.php?sess='+sess+"&stat="+stat+"&subst="+subst+"&step="+step+"&onlyone="+(document.uniqueID ? "TRUE" : "FALSE")+"&myfrom="+myfrom, true);
// try {
xhr_rd.onreadystatechange = function() { xhr_rd_cb(xhr_rd); }
xhr_rd.send(null);
+ //
+ // TODO: qui avvio del timer per riavviare xhr
+ //
+ xhr_rd_watchdog = setTimeout(xhr_rd_abort, 60000, xhr_rd);
xhr_rd_cur_n++;
xhr_rd_stopped = false;
// } catch (e) {}
@@ -91,9 +142,7 @@ function xhr_rd_poll(sess)
$("sandbox").innerHTML = zug;
/* heartbit log */
- $("heartbit").innerHTML += "_";
- if ($("heartbit").innerHTML.length == 20)
- $("heartbit").innerHTML = "_";
+ hbit("_");
do {
again = 0;
@@ -108,6 +157,8 @@ function xhr_rd_poll(sess)
singlecomm = gst.comms.shift();
// alert("EXE"+gugu);
// $("xhrdeltalog").innerHTML = "EVALL: "+singlecomm.replace("<", "<", "g"); +"
";
+ hbit("+");
+
eval(singlecomm);
again = 1;
}
@@ -115,39 +166,54 @@ function xhr_rd_poll(sess)
xhrrestart = 1;
try {
if (xhr_rd == null)
- throw "restart";
+ throw "restart";
if (xhr_rd.responseText != null)
- xhr_rd_newctx = xhr_rd.responseText;
+ xhr_rd_newctx = xhr_rd.responseText;
}
catch (e) {
if (xhr_rd_stopped == true) {
xhr_rd_stopped = false;
// XX $("xhrstart").innerHTML += "XHRSTART: da catch
";
- xhr_rd_start(sess, stat, subst, gst.st);
+ if (xhr_rd_delay > 0) {
+ if (xhr_rd_delayed == null) {
+ // console.log("XXX DI QUI "+xhr_rd_delay);
+ xhr_rd_delayed = setTimeout(xhr_rd_start, xhr_rd_delay, sess, stat, subst, gst.st);
+ // console.log("XXX DI QUI post"+xhr_rd_delayed);
+ }
+ }
+ else {
+ // console.log("yyy DI QUI "+xhr_rd_delay);
+ xhr_rd_start(sess, stat, subst, gst.st);
+ }
}
-
+
// $("sandbox").innerHTML += "return 1
";
if (the_end != true) {
watchdog = 0;
setTimeout(xhr_rd_poll, tout, sess);
- $("heartbit").innerHTML += "-";
- if ($("heartbit").innerHTML.length == 20)
- $("heartbit").innerHTML = "-";
+ // hbit(".");
}
- return;
- }
-
-
- // no new char from the last loop, break
- if (xhr_rd_old_n == xhr_rd_cur_n &&
- xhr_rd_newctx.length == xhr_rd_checkedlen) {
- watchdog++;
- break;
- }
- else {
+ else {
+ //x alert("the_end2");
+ if (typeof xhr_rd_watchdog != 'undefined' && xhr_rd_watchdog != null) {
+ clearTimeout(xhr_rd_watchdog);
+ xhr_rd_watchdog = null;
+ }
+ }
+ return;
+ }
+
+
+ // no new char from the last loop, break
+ if (xhr_rd_old_n == xhr_rd_cur_n &&
+ xhr_rd_newctx.length == xhr_rd_checkedlen) {
+ watchdog++;
+ break;
+ }
+ else {
watchdog = 0;
// $("sandbox").innerHTML += "BIG IF
";
var comm_match;
@@ -159,6 +225,8 @@ function xhr_rd_poll(sess)
var delta = 0;
var match_lines = /^_*$/;
+ hbit("/\\");
+
// check for the same command group
if (xhr_rd_old_n != xhr_rd_cur_n) {
xhr_rd_old_n = xhr_rd_cur_n;
@@ -215,18 +283,32 @@ function xhr_rd_poll(sess)
// $("sandbox").innerHTML += "LITTLE IF
";
// alert("di qui");
// XX $("xhrstart").innerHTML += "XHRSTART: da end poll
";
- xhr_rd_start(sess, stat, subst, gst.st);
- // $("sandbox").innerHTML += "return 2
";
+
+ if (xhr_rd_delay > 0) {
+ if (xhr_rd_delayed == null) {
+ // console.log("XXX DI QUO "+xhr_rd_delay);
+ xhr_rd_delayed = setTimeout(xhr_rd_start, xhr_rd_delay, sess, stat, subst, gst.st);
+ // console.log("XXX DI QUO post"+xhr_rd_delayed);
+ }
+ }
+ else {
+ // console.log("yyy DI QUO "+xhr_rd_delay);
+ xhr_rd_start(sess, stat, subst, gst.st);
+ }
+
}
-
- // $("sandbox").innerHTML += "return 3
";
+
if (the_end != true) {
setTimeout(xhr_rd_poll, tout, sess);
-
- $("heartbit").innerHTML += "-";
- if ($("heartbit").innerHTML.length == 20)
- $("heartbit").innerHTML = "-";
-
+ }
+ else {
+ //x alert("the_end3");
+ if (typeof(xhr_rd_watchdog) != 'undefined') {
+ if (xhr_rd_watchdog != null) {
+ clearTimeout(xhr_rd_watchdog);
+ xhr_rd_watchdog = null;
+ }
+ }
}
return;
};