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",