You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by mw...@apache.org on 2008/03/10 04:14:39 UTC

svn commit: r635424 - in /mina/trunk: core/src/main/java/org/apache/mina/common/ example/src/main/java/org/apache/mina/example/netcat/ example/src/main/java/org/apache/mina/example/proxy/ example/src/main/java/org/apache/mina/example/sumup/

Author: mwebb
Date: Sun Mar  9 20:14:36 2008
New Revision: 635424

URL: http://svn.apache.org/viewvc?rev=635424&view=rev
Log:
Added granularity to the connection timeout.  The timeout was measured in seconds and is not measured in milliseconds.  Sangjin Lee provided a patch (DIRMINA-527) and I reviewed the patch.  The set/get ConnectionTimeout in AbstractPollingIoConnector that handled the seconds instead of milliseconds are being deprecated with a note to use milliseconds.  This makes sense to me and in my opinion does not take away from the robust set of methods for connectors.

Modified:
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java
    mina/trunk/example/src/main/java/org/apache/mina/example/netcat/Main.java
    mina/trunk/example/src/main/java/org/apache/mina/example/proxy/Main.java
    mina/trunk/example/src/main/java/org/apache/mina/example/sumup/Client.java

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java?rev=635424&r1=635423&r2=635424&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java Sun Mar  9 20:14:36 2008
@@ -29,28 +29,52 @@
  */
 public abstract class AbstractIoConnector 
         extends AbstractIoService implements IoConnector {
+    /**
+     * The minimum timeout value that is supported (in milliseconds).
+     */
+    public static final long MINIMUM_CONNECT_TIMEOUT = 50L;
     
-    private int connectTimeout = 60; // 1 minute
+    private long connectTimeoutInMillis = 60*1000L; // 1 minute by default
     private SocketAddress defaultRemoteAddress;
 
     protected AbstractIoConnector(IoSessionConfig sessionConfig) {
         super(sessionConfig);
     }
 
+    /**
+     * @deprecated
+     */
     public final int getConnectTimeout() {
-        return connectTimeout;
+        return (int)connectTimeoutInMillis/1000;
     }
 
     public final long getConnectTimeoutMillis() {
-        return connectTimeout * 1000L;
+        return connectTimeoutInMillis;
     }
 
+    /**
+     * @deprecated
+     */
     public final void setConnectTimeout(int connectTimeout) {
         if (connectTimeout <= 0) {
             throw new IllegalArgumentException("connectTimeout: "
                     + connectTimeout);
         }
-        this.connectTimeout = connectTimeout;
+        this.connectTimeoutInMillis = connectTimeout*1000L;
+    }
+    
+    /**
+     * Sets the connect timeout value in milliseconds.
+     * 
+     * @throws IllegalArgumentException if the value is smaller than 
+     * <tt>MINIMUM_CONNECT_TIMEOUT</tt>.
+     */
+    public final void setConnectTimeoutMillis(long connectTimeoutInMillis) {
+        if (connectTimeoutInMillis <= MINIMUM_CONNECT_TIMEOUT) {
+            throw new IllegalArgumentException("connectTimeoutInMillis: " + 
+                    connectTimeoutInMillis);
+        }
+        this.connectTimeoutInMillis = connectTimeoutInMillis;
     }
 
     public SocketAddress getDefaultRemoteAddress() {

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java?rev=635424&r1=635423&r2=635424&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java Sun Mar  9 20:14:36 2008
@@ -291,7 +291,10 @@
             int nHandles = 0;
             while (selectable) {
                 try {
-                    boolean selected = select(1000);
+                    // the timeout for select shall be smaller of the connect
+                    // timeout or 1 second...
+                    int timeout = (int)Math.min(getConnectTimeoutMillis(), 1000L);
+                    boolean selected = select(timeout);
 
                     nHandles += registerNew();
 

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java?rev=635424&r1=635423&r2=635424&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java Sun Mar  9 20:14:36 2008
@@ -43,6 +43,9 @@
 public interface IoConnector extends IoService {
     /**
      * Returns the connect timeout in seconds.  The default value is 1 minute.
+     * 
+     * @deprecated
+     * @see getConnectTimeoutMillis()
      */
     int getConnectTimeout();
 
@@ -53,8 +56,16 @@
 
     /**
      * Sets the connect timeout in seconds.  The default value is 1 minute.
+     * 
+     * @deprecated
+     * @see setConnectTimeoutMillis()
      */
     void setConnectTimeout(int connectTimeout);
+    
+    /**
+     * Sets the connect timeout in milliseconds.  The default value is 1 minute.
+     */
+    void setConnectTimeoutMillis(long connectTimeoutInMillis);
 
     /**
      * Returns the default remote address to connect to when no argument
@@ -135,4 +146,4 @@
      */
     ConnectFuture connect(SocketAddress remoteAddress,
             SocketAddress localAddress, IoSessionInitializer<? extends ConnectFuture> sessionInitializer);
-}
\ No newline at end of file
+}

Modified: mina/trunk/example/src/main/java/org/apache/mina/example/netcat/Main.java
URL: http://svn.apache.org/viewvc/mina/trunk/example/src/main/java/org/apache/mina/example/netcat/Main.java?rev=635424&r1=635423&r2=635424&view=diff
==============================================================================
--- mina/trunk/example/src/main/java/org/apache/mina/example/netcat/Main.java (original)
+++ mina/trunk/example/src/main/java/org/apache/mina/example/netcat/Main.java Sun Mar  9 20:14:36 2008
@@ -43,7 +43,7 @@
         NioSocketConnector connector = new NioSocketConnector();
 
         // Set connect timeout.
-        connector.setConnectTimeout(30);
+        connector.setConnectTimeoutMillis(30*1000L);
 
         // Start communication.
         connector.setHandler(new NetCatProtocolHandler());

Modified: mina/trunk/example/src/main/java/org/apache/mina/example/proxy/Main.java
URL: http://svn.apache.org/viewvc/mina/trunk/example/src/main/java/org/apache/mina/example/proxy/Main.java?rev=635424&r1=635423&r2=635424&view=diff
==============================================================================
--- mina/trunk/example/src/main/java/org/apache/mina/example/proxy/Main.java (original)
+++ mina/trunk/example/src/main/java/org/apache/mina/example/proxy/Main.java Sun Mar  9 20:14:36 2008
@@ -56,7 +56,7 @@
         IoConnector connector = new NioSocketConnector();
 
         // Set connect timeout.
-        connector.setConnectTimeout(30);
+        connector.setConnectTimeoutMillis(30*1000L);
 
         ClientToProxyIoHandler handler = new ClientToProxyIoHandler(connector,
                 new InetSocketAddress(args[1], Integer.parseInt(args[2])));

Modified: mina/trunk/example/src/main/java/org/apache/mina/example/sumup/Client.java
URL: http://svn.apache.org/viewvc/mina/trunk/example/src/main/java/org/apache/mina/example/sumup/Client.java?rev=635424&r1=635423&r2=635424&view=diff
==============================================================================
--- mina/trunk/example/src/main/java/org/apache/mina/example/sumup/Client.java (original)
+++ mina/trunk/example/src/main/java/org/apache/mina/example/sumup/Client.java Sun Mar  9 20:14:36 2008
@@ -41,7 +41,7 @@
 
     private static final int PORT = 8080;
 
-    private static final int CONNECT_TIMEOUT = 30; // seconds
+    private static final long CONNECT_TIMEOUT = 30*1000L; // 30 seconds
 
     // Set this to false to use object serialization instead of custom codec.
     private static final boolean USE_CUSTOM_CODEC = true;
@@ -61,7 +61,7 @@
         NioSocketConnector connector = new NioSocketConnector();
 
         // Configure the service.
-        connector.setConnectTimeout(CONNECT_TIMEOUT);
+        connector.setConnectTimeoutMillis(CONNECT_TIMEOUT);
         if (USE_CUSTOM_CODEC) {
             connector.getFilterChain().addLast(
                     "codec",