X-Git-Url: https://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Fxhr.js;h=a72599ce06b627a4d8f60aa3f0513256491a9aee;hb=54faeacf123066d257566a533da7107c8425785f;hp=d023eb39e6b20789951147b6f1bb59622167ada6;hpb=d52a529435d849a22efec8892c9600584567ffd0;p=brisk.git diff --git a/web/xhr.js b/web/xhr.js index d023eb3..a72599c 100644 --- a/web/xhr.js +++ b/web/xhr.js @@ -19,23 +19,22 @@ * not, write to the Free Software Foundation, Inc, 59 Temple Place - * Suite 330, Boston, MA 02111-1307, USA. * + * TODO: + * + * MANDATORY + * + * NOT MANDATORY + * - gst management + * - sandbox management + * - myfrom into the constructor + * - target page into the constructor + * - type of streaming into the constructor + * - all iframe related streaming add + * - xhr_rd prefix remove from inner class attrs + * - substitute fixed "eval" with a generic command hunks processor + * */ -var xhr_rd_cookiepath = "/brisk/"; -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) { @@ -46,273 +45,308 @@ function hbit(symb) $("heartbit").innerHTML += symb; } // $("heartbit").innerHTML = $("heartbit").innerHTML.substring(20,20); // DA METTERE APPOSTO!!!! + // console.log($("heartbit").innerHTML); } -function xhr_rd_cb(xhr_rd) +function http_streaming() { - var ret; - - // console.log(xhr_rd.readyState); + this.xhr_rd = createXMLHttpRequest(); +} - 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; - } +http_streaming.prototype = { + xhr_rd_cookiepath: "/brisk/", - // console.log("SS: "+safestatus(xhr_rd)); + xhr_rd: null, + xhr_rd_watchdog: null, + xhr_rd_delay: 0, + xhr_rd_delayed: null, + xhr_rd_stopped: true, + the_end: false, + xhr_rd_oldctx: "", + xhr_rd_newctx: "", + xhr_rd_cur_n: -1, + xhr_rd_old_n: -1, + xhr_rd_checkedlen: 0, + watchdog: 0, + ct: 0, - try { - if ((ret = safestatus(xhr_rd)) == 200) { - xhr_rd_delay = 0; - // console.log("del a null "+xhr_rd_delayed); - } else if (ret != -1) { - xhr_rd_delay = 5000; - hbit('X'); - // alert('There was a problem with the request.' + ret); - } - } catch(b) {}; + hbit: function () { + }, - xhr_rd_delayed = null; - xhr_rd_stopped = true; - } -}; + hbit_set: function (hbit) { + this.hbit = hbit; + }, -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) { - //x alert("the_end1"); - if (typeof xhr_rd_watchdog != 'undefined' && xhr_rd_watchdog != null) { - hbit('C'); - clearTimeout(xhr_rd_watchdog); - xhr_rd_watchdog = null; + xhr_rd_cb: function () { + var ret; + + if (this.xhr_rd.readyState == 4) { + if (this.xhr_rd_watchdog != null) { + this.hbit('C'); + clearTimeout(this.xhr_rd_watchdog); + this.xhr_rd_watchdog = null; + } + + // console.log("SS: "+safestatus(xhr_rd)); + + try { + if ((ret = safestatus(this.xhr_rd)) == 200) { + this.xhr_rd_delay = 0; + // console.log("del a null "+this.xhr_rd_delayed); + } else if (ret != -1) { + this.xhr_rd_delay = 5000; + this.hbit('X'); + // alert('There was a problem with the request.' + ret); + } + } catch(b) {}; + + this.xhr_rd_delayed = null; + this.xhr_rd_stopped = true; } - return; - } - createCookie("sess", sess, 24*365, xhr_rd_cookiepath); + }, - // NOTE: *ctx = "" to prevent konqueror stream commands duplication. - xhr_rd_oldctx = ""; - xhr_rd_newctx = ""; + xhr_rd_abort: function() + { + this.hbit('A'); + if (this.xhr_rd != null) + this.xhr_rd.abort(); + // alert("de che"); + }, - /* NOTE document.uniqueID exists only under IE */ - // 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) {} -}; - -function xhr_rd_poll(sess) -{ - var tout = 100; - var again; - var xhrrestart; - ct++; - - /* - if (watchdog >= 50) { - watchdog = 0; - // alert("ABORT XHR_RD"); - xhr_rd_stopped = true; - xhr_rd.abort(); - } - */ - var zug = "XHR_RD_POLL sess = "+sess+" stat = "+stat+" subst = "+subst+" step = "+gst.st+" step_loc = "+gst.st_loc+" step_loc_new = "+gst.st_loc_new+" STOP: "+xhr_rd_stopped; - - if (zug != $("sandbox").innerHTML) - $("sandbox").innerHTML = zug; + xhr_rd_start: function(sess, stat, subst, step) + { + if (this.the_end) { + //x alert("the_end1"); + if (this.xhr_rd_watchdog != null) { + this.hbit('C'); + clearTimeout(this.xhr_rd_watchdog); + this.xhr_rd_watchdog = null; + } + return; + } + createCookie("sess", sess, 24*365, this.xhr_rd_cookiepath); + + // NOTE: *ctx = "" to prevent konqueror stream commands duplication. + this.xhr_rd_oldctx = ""; + this.xhr_rd_newctx = ""; + + /* NOTE document.uniqueID exists only under IE */ + // if (g_is_spawn == 1) + // alert("di qui3: "+(g_is_spawn == 1 ? "&table_idx="+g_table_idx : "")); + this.xhr_rd.open('GET', 'index_rd.php?sess='+sess+"&stat="+stat+"&subst="+subst+"&step="+step+"&onlyone="+(document.uniqueID ? "TRUE" : "FALSE")+"&myfrom="+myfrom, true); + // try { - /* heartbit log */ - hbit("_"); + var self = this; + this.xhr_rd.onreadystatechange = function () { self.xhr_rd_cb(); }; + this.xhr_rd.send(null); + // + // TODO: qui avvio del timer per riavviare xhr + // + this.xhr_rd_watchdog = setTimeout(function(obj){ obj.xhr_rd_abort(); }, 60000, this); + this.xhr_rd_cur_n++; + this.xhr_rd_stopped = false; + // } catch (e) {} + }, - do { - again = 0; - xhrrestart = 0; - if (gst.st_loc < gst.st_loc_new) { - // there is some slow actions running - break; - } - else if (gst.comms.length > 0) { - var singlecomm; - - singlecomm = gst.comms.shift(); - // alert("EXE"+gugu); - // $("xhrdeltalog").innerHTML = "EVALL: "+singlecomm.replace("<", "<", "g"); +"
"; - hbit("+"); - - eval(singlecomm); - again = 1; - } - else { - xhrrestart = 1; - try { - if (xhr_rd == null) - throw "restart"; - if (xhr_rd.responseText != null) - xhr_rd_newctx = xhr_rd.responseText; + /* WORK HERE TO RUN WIN OR LIN STREAM */ + + xhr_rd_poll: function(sess) + { + var tout = 100; + var again; + var xhrrestart; + + this.ct++; + + /* + if (this.watchdog >= 50) { + this.watchdog = 0; + // alert("ABORT XHR_RD"); + this.xhr_rd_stopped = true; + this.xhr_rd.abort(); + } + */ + var zug = "XHR_RD_POLL sess = "+sess+" stat = "+stat+" subst = "+subst+" step = "+gst.st+" step_loc = "+gst.st_loc+" step_loc_new = "+gst.st_loc_new+" STOP: "+this.xhr_rd_stopped; + + if (zug != $("sandbox").innerHTML) + $("sandbox").innerHTML = zug; + + /* heartbit log */ + this.hbit("_"); + do { + again = 0; + xhrrestart = 0; + if (gst.st_loc < gst.st_loc_new) { + // there is some slow actions running + break; + } + else if (gst.comms.length > 0) { + var singlecomm; + + singlecomm = gst.comms.shift(); + // alert("EXE"+gugu); + // $("xhrdeltalog").innerHTML = "EVALL: "+singlecomm.replace("<", "<", "g"); +"
"; + this.hbit("+"); + + eval(singlecomm); + again = 1; } - catch (e) { - if (xhr_rd_stopped == true) { - xhr_rd_stopped = false; - // XX $("xhrstart").innerHTML += "XHRSTART: da catch
"; - 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 { + xhrrestart = 1; + try { + if (this.xhr_rd == null) + throw "restart"; + if (this.xhr_rd.responseText != null) + this.xhr_rd_newctx = this.xhr_rd.responseText; + } + catch (e) { + if (this.xhr_rd_stopped == true) { + this.xhr_rd_stopped = false; + // XX $("xhrstart").innerHTML += "XHRSTART: da catch
"; + if (this.xhr_rd_delay > 0) { + if (this.xhr_rd_delayed == null) { + // console.log("XXX DI QUI "+this.xhr_rd_delay); + + this.xhr_rd_delayed = setTimeout( + function(f_obj, f_sess, f_stat, f_subst, f_step){ f_obj.xhr_rd_start(f_sess, f_stat, f_subst, f_step); }, + this.xhr_rd_delay, this, sess, stat, subst, gst.st); + // console.log("XXX DI QUI post"+this.xhr_rd_delayed); + } + } + else { + // console.log("yyy DI QUI "+this.xhr_rd_delay); + this.xhr_rd_start(sess, stat, subst, gst.st); } - } + } + + + // $("sandbox").innerHTML += "return 1
"; + if (this.the_end != true) { + this.watchdog = 0; + setTimeout(function(obj, sess){ obj.xhr_rd_poll(sess); }, tout, this, sess); + + // this.hbit("."); + + } else { - // console.log("yyy DI QUI "+xhr_rd_delay); - xhr_rd_start(sess, stat, subst, gst.st); - } - } + //x alert("the_end2"); + if (this.xhr_rd_watchdog != null) { + clearTimeout(this.xhr_rd_watchdog); + this.xhr_rd_watchdog = null; + } + } + return; + } + - - // $("sandbox").innerHTML += "return 1
"; - if (the_end != true) { - watchdog = 0; - setTimeout(xhr_rd_poll, tout, sess); + // no new char from the last loop, break + if (this.xhr_rd_old_n == this.xhr_rd_cur_n && + this.xhr_rd_newctx.length == this.xhr_rd_checkedlen) { + this.watchdog++; + break; + } + else { + // $("sandbox").innerHTML += "BIG IF
"; + var comm_match; + var comm_clean; + var comm_len; + var comm_newpart; + var comm_arr; + var i; + var delta = 0; + var match_lines = /^_*$/; + + this.watchdog = 0; + this.hbit("/\\"); + + // check for the same command group + if (this.xhr_rd_old_n != this.xhr_rd_cur_n) { + this.xhr_rd_old_n = this.xhr_rd_cur_n; + this.xhr_rd_checkedlen = 0; + this.xhr_rd_oldctx = ""; + } + else + delta = this.xhr_rd_oldctx.length; + + // $("xhrlog").innerHTML += "EVERY SEC
"; + for (i = delta ; i < this.xhr_rd_newctx.length ; i++) { + if (this.xhr_rd_newctx[i] != '_') + break; + } + if (i == this.xhr_rd_newctx.length) { + this.xhr_rd_checkedlen = i; + break; + } + + // $("xhrlog").innerHTML += "CHECK COM
"; + // extracts the new part of the command string + comm_newpart = this.xhr_rd_newctx.substr(delta); - // hbit("."); + // XX $("xhrlog").innerHTML = xhr_rd_newctx.replace("<", "<", "g"); + + // $("response").innerHTML = comm_newpart; + comm_match = /_*@BEGIN@(.*?)@END@/g; + comm_clean = /_*@BEGIN@(.*?)@END@/; + comm_len = 0; + comm_arr = comm_newpart.match(comm_match); - } - 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; - var comm_clean; - var comm_len; - var comm_newpart; - var comm_arr; - var i; - 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; - xhr_rd_checkedlen = 0; - xhr_rd_oldctx = ""; - } - else - delta = xhr_rd_oldctx.length; - - // $("xhrlog").innerHTML += "EVERY SEC
"; - for (i = delta ; i < xhr_rd_newctx.length ; i++) { - if (xhr_rd_newctx[i] != '_') - break; - } - if (i == xhr_rd_newctx.length) { - xhr_rd_checkedlen = i; - break; - } - - // $("xhrlog").innerHTML += "CHECK COM
"; - // extracts the new part of the command string - comm_newpart = xhr_rd_newctx.substr(delta); - - // XX $("xhrlog").innerHTML = xhr_rd_newctx.replace("<", "<", "g"); - - // $("response").innerHTML = comm_newpart; - comm_match = /_*@BEGIN@(.*?)@END@/g; - comm_clean = /_*@BEGIN@(.*?)@END@/; - comm_len = 0; - comm_arr = comm_newpart.match(comm_match); - - // $("sandbox").innerHTML += "PRE COMMARR
"; - if (comm_arr) { - // XX $("xhrdeltalog").innerHTML += "DELTA: "+delta +"
"; - // XX alert("xhr_rd_newctx: "+xhr_rd_newctx); - // $("sandbox").innerHTML += "POST COMMARR
"; - for (i = 0 ; i < comm_arr.length ; i++) { - var temp = comm_arr[i].replace(comm_clean,"$1").split("|"); - gst.comms = gst.comms.concat(temp); - // XX alert("COMM_ARR["+i+"]: "+comm_arr[i]+" LEN:"+comm_arr[i].length); - comm_len += comm_arr[i].length; + // $("sandbox").innerHTML += "PRE COMMARR
"; + if (comm_arr) { + // XX $("xhrdeltalog").innerHTML += "DELTA: "+delta +"
"; + // XX alert("xhr_rd_newctx: "+this.xhr_rd_newctx); + // $("sandbox").innerHTML += "POST COMMARR
"; + for (i = 0 ; i < comm_arr.length ; i++) { + var temp = comm_arr[i].replace(comm_clean,"$1").split("|"); + gst.comms = gst.comms.concat(temp); + // XX alert("COMM_ARR["+i+"]: "+comm_arr[i]+" LEN:"+comm_arr[i].length); + comm_len += comm_arr[i].length; + } + tout = 0; + this.xhr_rd_oldctx += comm_newpart.substr(0,comm_len); + // XX alert("XHR_RD_OLDCTX: "+this.xhr_rd_oldctx); + again = 1; } - tout = 0; - xhr_rd_oldctx += comm_newpart.substr(0,comm_len); - // XX alert("XHR_RD_OLDCTX: "+xhr_rd_oldctx); - again = 1; - } - xhr_rd_checkedlen = xhr_rd_oldctx.length; + this.xhr_rd_checkedlen = this.xhr_rd_oldctx.length; + } } - } - } while (again); + } while (again); - if (xhrrestart == 1 && xhr_rd_stopped == true) { - // $("sandbox").innerHTML += "LITTLE IF
"; - // alert("di qui"); - // XX $("xhrstart").innerHTML += "XHRSTART: da end poll
"; - - 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); + if (xhrrestart == 1 && this.xhr_rd_stopped == true) { + // $("sandbox").innerHTML += "LITTLE IF
"; + // alert("di qui"); + // XX $("xhrstart").innerHTML += "XHRSTART: da end poll
"; + if (this.xhr_rd_delay > 0) { + if (this.xhr_rd_delayed == null) { + // console.log("XXX DI QUO "+this.xhr_rd_delay); + + this.xhr_rd_delayed = setTimeout( + function(obj, sess, stat, subst, step){ obj.xhr_rd_start(sess, stat, subst, step); }, + this.xhr_rd_delay, this, sess, stat, subst, gst.st); + // console.log("XXX DI QUO post"+this.xhr_rd_delayed); + } } - } - else { - // console.log("yyy DI QUO "+xhr_rd_delay); - xhr_rd_start(sess, stat, subst, gst.st); + else { + // console.log("yyy DI QUO "+this.xhr_rd_delay); + this.xhr_rd_start(sess, stat, subst, gst.st); + } + } - } - - if (the_end != true) { - setTimeout(xhr_rd_poll, tout, sess); - } - else { - //x alert("the_end3"); - if (typeof(xhr_rd_watchdog) != 'undefined') { - if (xhr_rd_watchdog != null) { - clearTimeout(xhr_rd_watchdog); - xhr_rd_watchdog = null; + if (this.the_end != true) { + setTimeout(function(obj, sess){ obj.xhr_rd_poll(sess); }, tout, this, sess); + } + else { + //x alert("the_end3"); + if (this.xhr_rd_watchdog != null) { + clearTimeout(this.xhr_rd_watchdog); + this.xhr_rd_watchdog = null; } } + return; } - return; -}; - +} + /* window.onload = function () { xhr_rd = createXMLHttpRequest();