Implemented 'activeclients' result element for cmd_stat. Put check in test1 client for
authorSebastian Hammer <quinn@indexdata.com>
Thu, 4 Jan 2007 02:53:37 +0000 (02:53 +0000)
committerSebastian Hammer <quinn@indexdata.com>
Thu, 4 Jan 2007 02:53:37 +0000 (02:53 +0000)
show, stat, and termlist handlers, so browser now produces no unnecessary HTML traffic.

PROTOCOL
src/http_command.c
www/test1/search.js

index 272d9c6..5e3ad07 100644 (file)
--- a/PROTOCOL
+++ b/PROTOCOL
@@ -66,6 +66,7 @@ search.pz2?session=2044502273&command=stat
 Output:
 
 <stat>
+  <activeclients>3</activeclients>
   <hits>7</hits>                   -- Total hitcount
   <records>7</records>             -- Total number of records fetched
   <clients>1</clients>             -- Total number of associated clients
index c5dcf0f..c4837a6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: http_command.c,v 1.4 2007-01-04 02:35:42 quinn Exp $
+ * $Id: http_command.c,v 1.5 2007-01-04 02:53:37 quinn Exp $
  */
 
 #include <stdio.h>
@@ -364,6 +364,7 @@ static void cmd_stat(struct http_channel *c)
     struct http_response *rs = c->response;
     struct http_session *s = locate_session(rq, rs);
     struct statistics stat;
+    int clients = session_active_clients(s->psession);
 
     if (!s)
         return;
@@ -372,6 +373,7 @@ static void cmd_stat(struct http_channel *c)
 
     wrbuf_rewind(c->wrbuf);
     wrbuf_puts(c->wrbuf, "<stat>");
+    wrbuf_printf(c->wrbuf, "<activeclients>%d</activeclients>\n", clients);
     wrbuf_printf(c->wrbuf, "<hits>%d</hits>\n", stat.num_hits);
     wrbuf_printf(c->wrbuf, "<records>%d</records>\n", stat.num_records);
     wrbuf_printf(c->wrbuf, "<clients>%d</clients>\n", stat.num_clients);
index 60de378..d9c6af3 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: search.js,v 1.3 2007-01-02 11:02:50 sondberg Exp $
+/* $Id: search.js,v 1.4 2007-01-04 02:53:37 quinn Exp $
  * ---------------------------------------------------
  * Javascript container
  */
@@ -130,6 +130,7 @@ function show_records()
        var merged = Number(xml.getElementsByTagName('merged')[0].childNodes[0].nodeValue);
        var start = Number(xml.getElementsByTagName('start')[0].childNodes[0].nodeValue);
        var num = Number(xml.getElementsByTagName('num')[0].childNodes[0].nodeValue);
+       var clients = Number(xml.getElementsByTagName("activeclients")[0].childNodes[0].nodeValue);
        body.innerHTML = '<b>Records : ';
        body.innerHTML += (start + 1) + ' to ' + (start + num) +
                ' of ' + merged + ' (total hits: ' + total + ')</b>';
@@ -157,10 +158,13 @@ function show_records()
            body.innerHTML += '</p>';
        }
        shown++;
-       if (shown < 5)
-           searchtimer = setTimeout(check_search, 1000);
-       else
-           searchtimer = setTimeout(check_search, 2000);
+       if (clients > 0)
+       {
+           if (shown < 5)
+               searchtimer = setTimeout(check_search, 1000);
+           else
+               searchtimer = setTimeout(check_search, 2000);
+       }
     }
     if (!termtimer)
        termtimer = setTimeout(check_termlist, 1000);
@@ -200,6 +204,8 @@ function show_termlist()
     var xml = xtermlist.responseXML;
     var body = document.getElementById("termlist");
     var hits = xml.getElementsByTagName("term");
+    var clients =
+       Number(xml.getElementsByTagName("activeclients")[0].childNodes[0].nodeValue);
     if (!hits[0])
     {
        termtimer = setTimeout(check_termlist, 1000);
@@ -217,7 +223,8 @@ function show_termlist()
                                   '</a>';
            body.innerHTML += '<br>';
        }
-       termtimer = setTimeout(check_termlist, 2000);
+       if (clients > 0)
+           termtimer = setTimeout(check_termlist, 2000);
     }
 }
 
@@ -241,6 +248,8 @@ function show_stat()
     var xml = xstat.responseXML;
     var body = document.getElementById("stat");
     var nodes = xml.childNodes[0].childNodes;
+    var clients =
+       Number(xml.getElementsByTagName("activeclients")[0].childNodes[0].nodeValue);
     if (!nodes[0])
     {
        stattimer  = setTimeout(check_stat, 500);
@@ -259,7 +268,8 @@ function show_stat()
            body.innerHTML += ' ' + name + '=' + value;
        }
        body.innerHTML += ')';
-       stattimer = setTimeout(check_stat, 2000);
+       if (clients > 0)
+           stattimer = setTimeout(check_stat, 2000);
     }
 }