hc-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ol...@apache.org
Subject svn commit: r1208523 - in /httpcomponents/httpcore/trunk: httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/ httpcore/src/main/java/org/apache/http/impl/ httpcore/src/main/java/org/apache/http/params/
Date Wed, 30 Nov 2011 17:09:41 GMT
Author: olegk
Date: Wed Nov 30 17:09:39 2011
New Revision: 1208523

URL: http://svn.apache.org/viewvc?rev=1208523&view=rev
Log:
HTTPCORE-277: SO_KEEPALIVE parameter

Modified:
    httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/IOReactorConfig.java
    httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpClientConnection.java
    httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpServerConnection.java
    httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/params/CoreConnectionPNames.java
    httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/params/HttpConnectionParams.java

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java?rev=1208523&r1=1208522&r2=1208523&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java
(original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java
Wed Nov 30 17:09:39 2011
@@ -197,6 +197,7 @@ public abstract class AbstractMultiworke
         config.setTcpNoDelay(HttpConnectionParams.getTcpNoDelay(params));
         config.setSoTimeout(HttpConnectionParams.getSoTimeout(params));
         config.setSoLinger(HttpConnectionParams.getLinger(params));
+        config.setSoKeepalive(HttpConnectionParams.getSoKeepalive(params));
         config.setConnectTimeout(HttpConnectionParams.getConnectionTimeout(params));
         config.setSoReuseAddress(HttpConnectionParams.getSoReuseaddr(params));
 
@@ -520,6 +521,7 @@ public abstract class AbstractMultiworke
     protected void prepareSocket(final Socket socket) throws IOException {
         socket.setTcpNoDelay(this.config.isTcpNoDelay());
         socket.setSoTimeout(this.config.getSoTimeout());
+        socket.setKeepAlive(this.config.isSoKeepalive());
         int linger = this.config.getSoLinger();
         if (linger >= 0) {
             socket.setSoLinger(linger > 0, linger);

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/IOReactorConfig.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/IOReactorConfig.java?rev=1208523&r1=1208522&r2=1208523&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/IOReactorConfig.java
(original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/IOReactorConfig.java
Wed Nov 30 17:09:39 2011
@@ -47,6 +47,7 @@ public final class IOReactorConfig imple
     private int soTimeout;
     private boolean soReuseAddress;
     private int soLinger;
+    private boolean soKeepAlive;
     private boolean tcpNoDelay;
     private int connectTimeout;
 
@@ -59,6 +60,7 @@ public final class IOReactorConfig imple
         this.soTimeout = 0;
         this.soReuseAddress = false;
         this.soLinger = -1;
+        this.soKeepAlive = false;
         this.tcpNoDelay = false;
         this.connectTimeout = 0;
     }
@@ -157,6 +159,8 @@ public final class IOReactorConfig imple
      * Determines the default socket timeout value for non-blocking I/O operations.
      * <p/>
      * Default: <code>0</code> (no timeout)
+     *
+     * @see SocketOptions#SO_TIMEOUT
      */
     public int getSoTimeout() {
         return soTimeout;
@@ -166,6 +170,8 @@ public final class IOReactorConfig imple
      * Defines the default socket timeout value for non-blocking I/O operations.
      * <p/>
      * Default: <code>0</code> (no timeout)
+     *
+     * @see SocketOptions#SO_TIMEOUT
      */
     public void setSoTimeout(int soTimeout) {
         this.soTimeout = soTimeout;
@@ -176,6 +182,8 @@ public final class IOReactorConfig imple
      * for newly created sockets.
      * <p/>
      * Default: <code>false</code>
+     *
+     * @see SocketOptions#SO_REUSEADDR
      */
     public boolean isSoReuseAddress() {
         return soReuseAddress;
@@ -184,6 +192,8 @@ public final class IOReactorConfig imple
     /**
      * Defines the default value of the {@link SocketOptions#SO_REUSEADDR} parameter
      * for newly created sockets.
+     *
+     * @see SocketOptions#SO_REUSEADDR
      */
     public void setSoReuseAddress(boolean soReuseAddress) {
         this.soReuseAddress = soReuseAddress;
@@ -194,6 +204,8 @@ public final class IOReactorConfig imple
      * for newly created sockets.
      * <p/>
      * Default: <code>-1</code>
+     *
+     * @see SocketOptions#SO_LINGER
      */
     public int getSoLinger() {
         return soLinger;
@@ -202,16 +214,44 @@ public final class IOReactorConfig imple
     /**
      * Defines the default value of the {@link SocketOptions#SO_LINGER} parameter
      * for newly created sockets.
+     *
+     * @see SocketOptions#SO_LINGER
      */
     public void setSoLinger(int soLinger) {
         this.soLinger = soLinger;
     }
 
     /**
+     * Determines the default value of the {@link SocketOptions#SO_KEEPALIVE} parameter
+     * for newly created sockets.
+     * <p/>
+     * Default: <code>-1</code>
+     *
+     * @see SocketOptions#SO_KEEPALIVE
+     */
+    public boolean isSoKeepalive() {
+        return this.soKeepAlive;
+    }
+
+    /**
+     * Defines the default value of the {@link SocketOptions#SO_KEEPALIVE} parameter
+     * for newly created sockets.
+     * <p/>
+     * Default: <code>-1</code>
+     *
+     * @see SocketOptions#SO_KEEPALIVE
+     */
+    public void setSoKeepalive(boolean soKeepAlive) {
+        this.soKeepAlive = soKeepAlive;
+    }
+
+    /**
      * Determines the default value of the {@link SocketOptions#TCP_NODELAY} parameter
      * for newly created sockets.
      * <p/>
      * Default: <code>false</code>
+     *
+     * @see SocketOptions#TCP_NODELAY
      */
     public boolean isTcpNoDelay() {
         return tcpNoDelay;
@@ -220,6 +260,8 @@ public final class IOReactorConfig imple
     /**
      * Defines the default value of the {@link SocketOptions#TCP_NODELAY} parameter
      * for newly created sockets.
+     *
+     * @see SocketOptions#TCP_NODELAY
      */
     public void setTcpNoDelay(boolean tcpNoDelay) {
         this.tcpNoDelay = tcpNoDelay;
@@ -256,6 +298,7 @@ public final class IOReactorConfig imple
                 .append(", soTimeout=").append(this.soTimeout)
                 .append(", soReuseAddress=").append(this.soReuseAddress)
                 .append(", soLinger=").append(this.soLinger)
+                .append(", soKeepAlive=").append(this.soKeepAlive)
                 .append(", tcpNoDelay=").append(this.tcpNoDelay)
                 .append(", connectTimeout=").append(this.connectTimeout).append("]");
         return builder.toString();

Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpClientConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpClientConnection.java?rev=1208523&r1=1208522&r2=1208523&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpClientConnection.java
(original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpClientConnection.java
Wed Nov 30 17:09:39 2011
@@ -44,6 +44,7 @@ import org.apache.http.params.HttpParams
  *  <li>{@link org.apache.http.params.CoreConnectionPNames#TCP_NODELAY}</li>
  *  <li>{@link org.apache.http.params.CoreConnectionPNames#SO_TIMEOUT}</li>
  *  <li>{@link org.apache.http.params.CoreConnectionPNames#SO_LINGER}</li>
+ *  <li>{@link org.apache.http.params.CoreConnectionPNames#SO_KEEPALIVE}</li>
  *  <li>{@link org.apache.http.params.CoreConnectionPNames#SOCKET_BUFFER_SIZE}</li>
  *  <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_LINE_LENGTH}</li>
  * </ul>
@@ -70,6 +71,7 @@ public class DefaultHttpClientConnection
         assertNotOpen();
         socket.setTcpNoDelay(HttpConnectionParams.getTcpNoDelay(params));
         socket.setSoTimeout(HttpConnectionParams.getSoTimeout(params));
+        socket.setKeepAlive(HttpConnectionParams.getSoKeepalive(params));
 
         int linger = HttpConnectionParams.getLinger(params);
         if (linger >= 0) {

Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpServerConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpServerConnection.java?rev=1208523&r1=1208522&r2=1208523&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpServerConnection.java
(original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpServerConnection.java
Wed Nov 30 17:09:39 2011
@@ -44,6 +44,7 @@ import org.apache.http.params.HttpParams
  *  <li>{@link org.apache.http.params.CoreConnectionPNames#TCP_NODELAY}</li>
  *  <li>{@link org.apache.http.params.CoreConnectionPNames#SO_TIMEOUT}</li>
  *  <li>{@link org.apache.http.params.CoreConnectionPNames#SO_LINGER}</li>
+ *  <li>{@link org.apache.http.params.CoreConnectionPNames#SO_KEEPALIVE}</li>
  *  <li>{@link org.apache.http.params.CoreConnectionPNames#SOCKET_BUFFER_SIZE}</li>
  *  <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_LINE_LENGTH}</li>
  * </ul>
@@ -68,6 +69,7 @@ public class DefaultHttpServerConnection
         assertNotOpen();
         socket.setTcpNoDelay(HttpConnectionParams.getTcpNoDelay(params));
         socket.setSoTimeout(HttpConnectionParams.getSoTimeout(params));
+        socket.setKeepAlive(HttpConnectionParams.getSoKeepalive(params));
 
         int linger = HttpConnectionParams.getLinger(params);
         if (linger >= 0) {

Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/params/CoreConnectionPNames.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/params/CoreConnectionPNames.java?rev=1208523&r1=1208522&r2=1208523&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/params/CoreConnectionPNames.java
(original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/params/CoreConnectionPNames.java
Wed Nov 30 17:09:39 2011
@@ -150,4 +150,17 @@ public interface CoreConnectionPNames {
      */
     public static final String MIN_CHUNK_LIMIT = "http.connection.min-chunk-limit";
 
+
+    /**
+     * Defines whether or not TCP is to send automatically a keepalive probe to the peer
+     * after an interval of inactivity (no data exchanged in either direction) between this
+     * host and the peer. The purpose of this option is to detect if the peer host crashes.
+     * <p>
+     * This parameter expects a value of type {@link Boolean}.
+     * </p>
+     * @see java.net.SocketOptions#SO_KEEPALIVE
+     * @since 4.2
+     */
+    public static final String SO_KEEPALIVE = "http.socket.keepalive";
+
 }

Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/params/HttpConnectionParams.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/params/HttpConnectionParams.java?rev=1208523&r1=1208522&r2=1208523&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/params/HttpConnectionParams.java
(original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/params/HttpConnectionParams.java
Wed Nov 30 17:09:39 2011
@@ -241,4 +241,38 @@ public final class HttpConnectionParams 
             (CoreConnectionPNames.STALE_CONNECTION_CHECK, value);
     }
 
+    /**
+     * Obtains value of the {@link CoreConnectionPNames#SO_KEEPALIVE} parameter.
+     * If not set, defaults to <code>false</code>.
+     *
+     * @param params HTTP parameters.
+     * @return SO_KEEPALIVE.
+     *
+     * @since 4.2
+     */
+    public static boolean getSoKeepalive(final HttpParams params) {
+        if (params == null) {
+            throw new IllegalArgumentException("HTTP parameters may not be null");
+        }
+        return params.getBooleanParameter(CoreConnectionPNames.SO_KEEPALIVE, false);
+    }
+
+    /**
+     * Sets value of the {@link CoreConnectionPNames#SO_KEEPALIVE} parameter.
+     *
+     * @param params HTTP parameters.
+     * @param enableKeepalive SO_KEEPALIVE.
+     *
+     * @since 4.2
+     */
+    public static void setSoKeepalive(final HttpParams params, boolean enableKeepalive) {
+        if (params == null) {
+            throw new IllegalArgumentException("HTTP parameters may not be null");
+        }
+        params.setBooleanParameter(CoreConnectionPNames.SO_KEEPALIVE, enableKeepalive);
+    }
+
+
+
+
 }



Mime
View raw message