- From: John Philip Anderson <jpanderson_215@hotmail.com>
- Date: Thu, 08 Mar 2001 20:39:20 -0000
- To: www-jigsaw@w3.org
Dear Gentlemen, I have spent the entire week try to implement Request timeouts in Client-Side Jigsaw (only to find out that my problem is not with Jigsaw, but rather some third-party advertisement server that takes up to five minutes to deliver a puny GIF file). However, while working on my problem, I did find a solution to implementing Request timeouts on the Client-Side without modifying the Jigsaw source code. Basically, one can construct HttpManagerThreads to run Requests that have been created by an HttpExecutiveManager. Once the HttpExecutiveManager starts a HttpManagerThread, it calls wait(timeout milliseconds) on itself until either (1) the HttpManagerThread notifies it with a Reply or (2) it times out, destroys that HttpManagerThread, and then starts a new HttpManagerThread to try running the request again. This scheme appears to be clean and it works well (of course the real solution lies in finishing the Client-Side Jigsaw source code). Below I have posted outlines of the two classes that I have used to implemented Request timeouts on the Client-Side. Truly yours, John Philip Anderson jpanderson_215@hotmail.com ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public class HttpManagerThread extends Thread{ Reply reply; Request request; HttpManager manager; HttpExecutiveManager executivemanager; HttpManagerThread (Request request, HttpExecutiveManager executivemanager){ this.request = request; this.executivemanager = executivemanager; manager = HttpManager.getManager(); try{cookiefilter.initialize(manager); } catch(PropRequestFilterException prfexcpt) { System.out.println("PropRequestFilterException : " + prfexcpt); } } public void run(){ try{ reply = manager.runRequest(request); }catch(HttpException httpexcpt){ System.out.println("HttpException: httpexcpt); } this.returnReply(reply); } protected void returnReply(Reply reply){ executivemanager.takeReply(reply); } } public class HttpExecutiveManager{ int timeout; boolean replytaken; Request request; HttpManager manager; HttpExecutiveManager(int timeout){ this.timeout = timeout; manager = HttpManager.getManager(); request = manager.createRequest(); } public synchronized void read(){ replytaken = false; while(!replytaken){ HttpManagerThread httpmanagerthread = new HttpManagerThread(request, this); httpmanagerthread.start(); try{ this.wait(timeout); } catch(InterruptedException intrpexcpt) { System.out.println("InterruptedException: " + intrpexcpt); } httpmanagerthread.stop(); httpmanagerthread = null; } } public synchronized void takeReply(Reply reply){ this.reply = reply; replytaken = true; this.notify(); } } _________________________________________________________________ Get your FREE download of MSN Explorer at http://explorer.msn.com
Received on Thursday, 8 March 2001 15:39:55 UTC