[ http://issues.apache.org/jira/browse/XMLRPC-56?page=all ]
     
Jochen Wiedmann closed XMLRPC-56:
---------------------------------

    Resolution: Fixed

Added to version 2 and version 3.


> An asynchronous callback object that manages timeouts
> -----------------------------------------------------
>
>          Key: XMLRPC-56
>          URL: http://issues.apache.org/jira/browse/XMLRPC-56
>      Project: XML-RPC
>         Type: New Feature

>     Reporter: Ken Weiner
>     Assignee: Jochen Wiedmann
>  Attachments: TimingOutAsyncCallback.java
>
> I have created an object that helps clients to XmlRpcClient impose a timeout 
> value onto a call to send an XML-RPC message.
> I want to propose that this callback object be added to the XML-RPC codebase. 
>  Feel free to change the name of the class or any of its variables or methods.
> Here is example client code for the class:
> TimingOutAsyncCallback callback = new TimingOutAsyncCallback(10000);
> XmlRpcClient client = new XmlRpcClient(url);            
> client.executeAsync(methodName, aVector, callback);
> callback.waitForResponse();
> if (callback.getException() != null) {
>     throw callback.getException();
> }
> Object result = callback.getResult();
> Here is the code for TimingOutAsyncCallback:
> /**
>  * A callback object that can wait up to a specified amount
>  * of time for the XML-RPC response.
>  */
> protected class TimingOutAsyncCallback implements AsyncCallback {
>     
>     private long timeout = 10 * 1000; // default to 10 seconds
>     private Object result;
>     private Exception exception;
>     
>     public TimingOutAsyncCallback() {
>         super();
>     }
>     
>     public TimingOutAsyncCallback(long timeout) {
>         this.timeout = timeout;
>     }
>     
>     public void setTimeout(long timeout) {
>         this.timeout = timeout;
>     }
>     
>     public long getTimeout() {
>         return this.timeout;
>     }
>     
>     public Object getResult() {
>         return this.result;
>     }
>     
>     public Exception getException() {
>         return this.exception;
>     }
>     
>     public synchronized void handleError(Exception exception, URL url, String 
> method) {
>         this.exception = exception;
>         this.notify();
>     }
>     public synchronized void handleResult(Object result, URL url, String 
> method) {
>         this.result = result;
>         this.notify();
>     }
>     
>     public synchronized void waitForResponse() throws InterruptedException {
>         this.wait(timeout);
>     }
> }
> Please comment if you have any questions or comments.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to