You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xmlrpc-dev@ws.apache.org by hg...@apache.org on 2006/05/08 14:53:43 UTC

svn commit: r405039 - in /webservices/xmlrpc/trunk: client/src/main/java/org/apache/xmlrpc/client/ common/src/main/java/org/apache/xmlrpc/common/

Author: hgomez
Date: Mon May  8 05:53:41 2006
New Revision: 405039

URL: http://svn.apache.org/viewcvs?rev=405039&view=rev
Log:
Add support for connection and reply timeout. For now only HttpClient based Transport support connection and reply timeout. Lite based Transport allow only reply timeout

Modified:
    webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcCommonsTransport.java
    webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java
    webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfig.java
    webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfigImpl.java

Modified: webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcCommonsTransport.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcCommonsTransport.java?rev=405039&r1=405038&r2=405039&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcCommonsTransport.java (original)
+++ webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcCommonsTransport.java Mon May  8 05:53:41 2006
@@ -57,8 +57,15 @@
 	}
 
 	public Object sendRequest(XmlRpcRequest pRequest) throws XmlRpcException {
-		XmlRpcHttpClientConfig config = (XmlRpcHttpClientConfig) pRequest.getConfig();
+		XmlRpcHttpClientConfig config = (XmlRpcHttpClientConfig) pRequest.getConfig();      
 		method = new PostMethod(config.getServerURL().toString());
+        
+        if (config.getConnectionTimeout() != 0)
+            client.getHttpConnectionManager().getParams().setConnectionTimeout(config.getConnectionTimeout());
+        
+        if (config.getReplyTimeout() != 0)
+            client.getHttpConnectionManager().getParams().setSoTimeout(config.getConnectionTimeout());
+        
 		method.getParams().setVersion(HttpVersion.HTTP_1_1);
 		return super.sendRequest(pRequest);
 	}

Modified: webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java?rev=405039&r1=405038&r2=405039&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java (original)
+++ webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java Mon May  8 05:53:41 2006
@@ -195,7 +195,10 @@
 	protected InputStream getInputStream() throws XmlRpcException {
 		final byte[] buffer = new byte[2048];
 		try {
-			input = new BufferedInputStream(socket.getInputStream());
+            // If reply timeout specified, set the socket timeout accordingly
+            if (config.getReplyTimeout() != 0)
+                socket.setSoTimeout(config.getReplyTimeout());
+            input = new BufferedInputStream(socket.getInputStream());
 			// start reading  server response headers
 			String line = HttpUtil.readLine(input, buffer);
 			StringTokenizer tokens = new StringTokenizer(line);

Modified: webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfig.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfig.java?rev=405039&r1=405038&r2=405039&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfig.java (original)
+++ webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfig.java Mon May  8 05:53:41 2006
@@ -33,4 +33,15 @@
 	 * @throws IllegalStateException A user name is configured, but no password.
 	 */ 
 	String getBasicPassword();
+    
+    /** Return the connection timeout in milliseconds
+     * @ return connection timeout in milliseconds or 0 if no set
+     */
+    int getConnectionTimeout();
+    
+    /** Return the reply timeout in milliseconds
+     * @ return reply timeout in milliseconds or 0 if no set
+     */
+    int getReplyTimeout();
+    
 }

Modified: webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfigImpl.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfigImpl.java?rev=405039&r1=405038&r2=405039&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfigImpl.java (original)
+++ webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfigImpl.java Mon May  8 05:53:41 2006
@@ -26,6 +26,9 @@
 	private boolean gzipRequesting;
 	private String basicUserName;
 	private String basicPassword;
+    private int    connectionTimeout = 0;
+    private int    replyTimeout = 0;
+    
 	/** Sets, whether gzip compression is being used for
 	 * transmitting the request.
 	 * @param pCompressing True for enabling gzip compression,
@@ -71,4 +74,27 @@
 	}
 
 	public String getBasicPassword() { return basicPassword; }
+
+    /** Set the connection timeout in milliseconds.
+     * @param pTimeout connection timeout, 0 to disable it
+     */
+    public void setConnectionTimeout(int pTimeout) {
+        connectionTimeout = pTimeout;
+    }
+
+    public int getConnectionTimeout() {
+        return connectionTimeout;
+    }
+
+    /** Set the reply timeout in milliseconds.
+     * @param pTimeout reply timeout, 0 to disable it
+     */
+    public void setReplyTimeout(int pTimeout) {
+        replyTimeout = pTimeout;
+    }
+
+    public int getReplyTimeout() {
+        return replyTimeout;
+    }
+
 }