You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ol...@apache.org on 2004/05/08 12:26:44 UTC

cvs commit: jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/params HttpConnectionParams.java HttpMethodParams.java

olegk       2004/05/08 03:26:44

  Modified:    httpclient/src/java/org/apache/commons/httpclient
                        HttpMethodDirector.java
               httpclient/src/java/org/apache/commons/httpclient/params
                        HttpConnectionParams.java HttpMethodParams.java
  Log:
  PR #24154 (Setting CONNECTION_TIMEOUT and SO_TIMEOUT on a per-method basis)
  
  Changelog:
  * The value defined at the HTTP connection level sets the initial/default socket
  timeout value.
  * The default socket timeout can be overridden at the HTTP method level. The
  default value is used if socket timeout is undefined
  * Connection timeout logic unchanged. Setting connection timeout at the
  HTTP method level does not make sense as the method may end up reusing an
  already open connection
  
  Contributed by Oleg Kalnichevski
  Reviewed by Michael Becke
  
  Revision  Changes    Path
  1.24      +15 -5     jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodDirector.java
  
  Index: HttpMethodDirector.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodDirector.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- HttpMethodDirector.java	8 May 2004 10:12:07 -0000	1.23
  +++ HttpMethodDirector.java	8 May 2004 10:26:44 -0000	1.24
  @@ -45,6 +45,7 @@
   import org.apache.commons.httpclient.auth.HttpAuthRealm;
   import org.apache.commons.httpclient.auth.MalformedChallengeException;
   import org.apache.commons.httpclient.params.HttpClientParams;
  +import org.apache.commons.httpclient.params.HttpConnectionParams;
   import org.apache.commons.httpclient.params.HttpMethodParams;
   import org.apache.commons.httpclient.params.HttpParams;
   import org.apache.commons.logging.Log;
  @@ -349,8 +350,17 @@
                           }
                       }
                   }
  -                
  -                this.conn.setSocketTimeout(this.conn.getParams().getSoTimeout());
  +                int timeout = 0;
  +                // see if a timeout is given for this method
  +                Object param = this.params.getParameter(HttpMethodParams.SO_TIMEOUT);
  +                if (param == null) {
  +                    // if not, use the default value
  +                    param = this.conn.getParams().getParameter(HttpConnectionParams.SO_TIMEOUT);
  +                }
  +                if (param != null) {
  +                    timeout = ((Integer)param).intValue();
  +                }
  +                this.conn.setSocketTimeout(timeout);
                   
                   try {
                       method.execute(state, this.conn);
  
  
  
  1.4       +16 -13    jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/params/HttpConnectionParams.java
  
  Index: HttpConnectionParams.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/params/HttpConnectionParams.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- HttpConnectionParams.java	18 Apr 2004 23:51:37 -0000	1.3
  +++ HttpConnectionParams.java	8 May 2004 10:26:44 -0000	1.4
  @@ -43,9 +43,10 @@
   public class HttpConnectionParams extends DefaultHttpParams {
   
       /**
  -     * Sets the socket timeout (<tt>SO_TIMEOUT</tt>) in milliseconds which is the 
  -     * timeout for waiting for data. A timeout value of zero is interpreted as an 
  -     * infinite timeout.
  +     * Defines the default socket timeout (<tt>SO_TIMEOUT</tt>) in milliseconds which is the 
  +     * timeout for waiting for data. A timeout value of zero is interpreted as an infinite 
  +     * timeout. This value is used when no socket timeout is set in the 
  +     * {@link HttpMethodParams HTTP method parameters}. 
        * <p>
        * This parameter expects a value of type {@link Integer}.
        * </p>
  @@ -123,9 +124,10 @@
       }
   
       /**
  -     * Returns the socket timeout (<tt>SO_TIMEOUT</tt>) in milliseconds which is the 
  -     * timeout for waiting for data. A timeout value of zero is interpreted as an 
  -     * infinite timeout.
  +     * Returns the default socket timeout (<tt>SO_TIMEOUT</tt>) in milliseconds which is the 
  +     * timeout for waiting for data. A timeout value of zero is interpreted as an infinite 
  +     * timeout. This value is used when no socket timeout is set in the 
  +     * {@link HttpMethodParams HTTP method parameters}. 
        *
        * @return timeout in milliseconds
        */
  @@ -134,9 +136,10 @@
       }
   
       /**
  -     * Sets the socket timeout (<tt>SO_TIMEOUT</tt>) in milliseconds which is the 
  -     * timeout for waiting for data. A timeout value of zero is interpreted as an 
  -     * infinite timeout.
  +     * Sets the default socket timeout (<tt>SO_TIMEOUT</tt>) in milliseconds which is the 
  +     * timeout for waiting for data. A timeout value of zero is interpreted as an infinite 
  +     * timeout. This value is used when no socket timeout is set in the 
  +     * {@link HttpMethodParams HTTP method parameters}. 
        *
        * @param timeout Timeout in milliseconds
        */
  
  
  
  1.12      +35 -4     jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/params/HttpMethodParams.java
  
  Index: HttpMethodParams.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/params/HttpMethodParams.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- HttpMethodParams.java	18 Apr 2004 23:51:37 -0000	1.11
  +++ HttpMethodParams.java	8 May 2004 10:26:44 -0000	1.12
  @@ -218,6 +218,16 @@
       public static final String STATUS_LINE_GARBAGE_LIMIT = "http.protocol.status-line-garbage-limit";
   
       /**
  +     * Sets the socket timeout (<tt>SO_TIMEOUT</tt>) in milliseconds to be used when executing the method. 
  +     * A timeout value of zero is interpreted as an infinite timeout.
  +     * <p>
  +     * This parameter expects a value of type {@link Integer}.
  +     * </p>
  +     * @see java.net.SocketOptions#SO_TIMEOUT
  +     */
  +    public static final String SO_TIMEOUT = "http.socket.timeout"; 
  +
  +    /**
        * Creates a new collection of parameters with the collection returned
        * by {@link #getDefaultParams()} as a parent. The collection will defer
        * to its parent for a default value if a particular parameter is not 
  @@ -363,6 +373,27 @@
           setParameter(COOKIE_POLICY, policy);
       }
   
  +    /**
  +     * Returns the default socket timeout (<tt>SO_TIMEOUT</tt>) in milliseconds which is the 
  +     * timeout for waiting for data. A timeout value of zero is interpreted as an infinite 
  +     * timeout.  
  +     *
  +     * @return timeout in milliseconds
  +     */
  +    public int getSoTimeout() {
  +        return getIntParameter(SO_TIMEOUT, 0);
  +    }
  +
  +    /**
  +     * Sets the default socket timeout (<tt>SO_TIMEOUT</tt>) in milliseconds which is the 
  +     * timeout for waiting for data. A timeout value of zero is interpreted as an infinite 
  +     * timeout.  
  +     *
  +     * @param timeout Timeout in milliseconds
  +     */
  +    public void setSoTimeout(int timeout) {
  +        setIntParameter(SO_TIMEOUT, timeout);
  +    }
   
       private static final String[] PROTOCOL_STRICTNESS_PARAMETERS = {
           UNAMBIGUOUS_STATUS_LINE,
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org