X-Git-Url: https://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Fxhr.js;h=196ad1d837633e66c920e84a83a97c1ced5c3919;hb=dd16d683733bebd22757ec97dc7af1aa046e78e5;hp=ca1a2a0adb48ddbb0147b5a69a756f48e40fa04a;hpb=a7c111476a065b8b71bddd00965fc5c93a3836e8;p=brisk.git diff --git a/web/xhr.js b/web/xhr.js index ca1a2a0..196ad1d 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-2008 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 @@ -21,38 +24,82 @@ */ 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 (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) { + if (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 +107,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 +143,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 +158,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 +167,53 @@ 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 { + if (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,29 @@ 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 { + if (xhr_rd_watchdog != null) { + clearTimeout(xhr_rd_watchdog); + xhr_rd_watchdog = null; + } } return; };