diff --git a/common/src/main/java/io/netty/util/internal/ConversionUtil.java b/common/src/main/java/io/netty/util/internal/ConversionUtil.java
index f0ad66bea9..6815a4e2fd 100644
--- a/common/src/main/java/io/netty/util/internal/ConversionUtil.java
+++ b/common/src/main/java/io/netty/util/internal/ConversionUtil.java
@@ -35,6 +35,17 @@ public final class ConversionUtil {
}
}
+ /**
+ * Converts the specified object into a long integer.
+ */
+ public static long toLong(Object value) {
+ if (value instanceof Number) {
+ return ((Number) value).longValue();
+ } else {
+ return Long.parseLong(String.valueOf(value));
+ }
+ }
+
/**
* Converts the specified object into a boolean.
*/
diff --git a/transport/src/main/java/io/netty/channel/ChannelConfig.java b/transport/src/main/java/io/netty/channel/ChannelConfig.java
index a735b2aef8..9c92ed4530 100644
--- a/transport/src/main/java/io/netty/channel/ChannelConfig.java
+++ b/transport/src/main/java/io/netty/channel/ChannelConfig.java
@@ -15,7 +15,6 @@
*/
package io.netty.channel;
-import io.netty.buffer.ChannelBufferFactory;
import io.netty.channel.socket.SocketChannelConfig;
import io.netty.channel.socket.nio.NioSocketChannelConfig;
@@ -39,23 +38,10 @@ import java.util.Map;
* the configuration of a {@link Channel} without down-casting its associated
* {@link ChannelConfig}. To update an option map, please call {@link #setOptions(Map)}.
*
- * All {@link ChannelConfig} has the following options:
- *
- *
- *
- * Name | Associated setter method |
- *
- * {@code "bufferFactory"} | {@link #setBufferFactory(ChannelBufferFactory)} |
- *
- * {@code "connectTimeoutMillis"} | {@link #setConnectTimeoutMillis(int)} |
- *
- * {@code "pipelineFactory"} | {@link #setPipelineFactory(ChannelPipelineFactory)} |
- *
- *
- *
- * More options are available in the sub-types of {@link ChannelConfig}. For
+ * Options are available in the sub-types of {@link ChannelConfig}. For
* example, you can configure the parameters which are specific to a TCP/IP
* socket as explained in {@link SocketChannelConfig} or {@link NioSocketChannelConfig}.
+ *
* @apiviz.has io.netty.channel.ChannelPipelineFactory
* @apiviz.composedOf io.netty.channel.ReceiveBufferSizePredictor
*
@@ -89,23 +75,4 @@ public interface ChannelConfig {
* @return {@code true} if and only if the property has been set
*/
boolean setOption(String name, Object value);
-
- /**
- * Returns the connect timeout of the channel in milliseconds. If the
- * {@link Channel} does not support connect operation, this property is not
- * used at all, and therefore will be ignored.
- *
- * @return the connect timeout in milliseconds. {@code 0} if disabled.
- */
- int getConnectTimeoutMillis();
-
- /**
- * Sets the connect timeout of the channel in milliseconds. If the
- * {@link Channel} does not support connect operation, this property is not
- * used at all, and therefore will be ignored.
- *
- * @param connectTimeoutMillis the connect timeout in milliseconds.
- * {@code 0} to disable.
- */
- void setConnectTimeoutMillis(int connectTimeoutMillis);
}
diff --git a/transport/src/main/java/io/netty/channel/ClientChannelConfig.java b/transport/src/main/java/io/netty/channel/ClientChannelConfig.java
new file mode 100644
index 0000000000..551ad14c33
--- /dev/null
+++ b/transport/src/main/java/io/netty/channel/ClientChannelConfig.java
@@ -0,0 +1,6 @@
+package io.netty.channel;
+
+public interface ClientChannelConfig extends ChannelConfig {
+ long getConnectTimeoutMillis();
+ void setConnectTimeoutMillis(long connectTimeoutMillis);
+}
diff --git a/transport/src/main/java/io/netty/channel/DefaultChannelConfig.java b/transport/src/main/java/io/netty/channel/DefaultChannelConfig.java
index 470230eb89..0aea4ca2de 100644
--- a/transport/src/main/java/io/netty/channel/DefaultChannelConfig.java
+++ b/transport/src/main/java/io/netty/channel/DefaultChannelConfig.java
@@ -15,22 +15,15 @@
*/
package io.netty.channel;
+import io.netty.channel.socket.SocketChannelConfig;
+
import java.util.Map;
import java.util.Map.Entry;
-import io.netty.buffer.ChannelBufferFactory;
-import io.netty.buffer.HeapChannelBufferFactory;
-import io.netty.channel.socket.SocketChannelConfig;
-import io.netty.util.internal.ConversionUtil;
-
/**
* The default {@link SocketChannelConfig} implementation.
*/
public class DefaultChannelConfig implements ChannelConfig {
-
- private volatile ChannelBufferFactory bufferFactory = HeapChannelBufferFactory.getInstance();
- private volatile int connectTimeoutMillis = 10000; // 10 seconds
-
@Override
public void setOptions(Map options) {
for (Entry e: options.entrySet()) {
@@ -40,51 +33,6 @@ public class DefaultChannelConfig implements ChannelConfig {
@Override
public boolean setOption(String key, Object value) {
- if (key.equals("pipelineFactory")) {
- setPipelineFactory((ChannelPipelineFactory) value);
- } else if (key.equals("connectTimeoutMillis")) {
- setConnectTimeoutMillis(ConversionUtil.toInt(value));
- } else if (key.equals("bufferFactory")) {
- setBufferFactory((ChannelBufferFactory) value);
- } else {
- return false;
- }
- return true;
- }
-
- @Override
- public int getConnectTimeoutMillis() {
- return connectTimeoutMillis;
- }
-
- @Override
- public ChannelBufferFactory getBufferFactory() {
- return bufferFactory;
- }
-
- @Override
- public void setBufferFactory(ChannelBufferFactory bufferFactory) {
- if (bufferFactory == null) {
- throw new NullPointerException("bufferFactory");
- }
- this.bufferFactory = bufferFactory;
- }
-
- @Override
- public ChannelPipelineFactory getPipelineFactory() {
- return null;
- }
-
- @Override
- public void setConnectTimeoutMillis(int connectTimeoutMillis) {
- if (connectTimeoutMillis < 0) {
- throw new IllegalArgumentException("connectTimeoutMillis: " + connectTimeoutMillis);
- }
- this.connectTimeoutMillis = connectTimeoutMillis;
- }
-
- @Override
- public void setPipelineFactory(ChannelPipelineFactory pipelineFactory) {
- // Unused
+ return false;
}
}
diff --git a/transport/src/main/java/io/netty/channel/DefaultClientChannelConfig.java b/transport/src/main/java/io/netty/channel/DefaultClientChannelConfig.java
new file mode 100644
index 0000000000..c74a104019
--- /dev/null
+++ b/transport/src/main/java/io/netty/channel/DefaultClientChannelConfig.java
@@ -0,0 +1,36 @@
+package io.netty.channel;
+
+import io.netty.util.internal.ConversionUtil;
+
+import java.util.concurrent.TimeUnit;
+
+public class DefaultClientChannelConfig extends DefaultChannelConfig implements
+ ClientChannelConfig {
+
+ private static final long DEFAULT_CONNECT_TIMEOUT = TimeUnit.SECONDS.toMillis(30);
+
+ private volatile long connectTimeoutMillis = DEFAULT_CONNECT_TIMEOUT;
+
+ @Override
+ public boolean setOption(String key, Object value) {
+ if ("connectTimeoutMillis".equals(key)) {
+ setConnectTimeoutMillis(ConversionUtil.toLong(value));
+ } else {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public long getConnectTimeoutMillis() {
+ return connectTimeoutMillis;
+ }
+
+ @Override
+ public void setConnectTimeoutMillis(long connectTimeoutMillis) {
+ if (connectTimeoutMillis < 0) {
+ throw new IllegalArgumentException("connectTimeoutMillis: " + connectTimeoutMillis);
+ }
+ this.connectTimeoutMillis = connectTimeoutMillis;
+ }
+}
diff --git a/transport/src/main/java/io/netty/channel/DefaultServerChannelConfig.java b/transport/src/main/java/io/netty/channel/DefaultServerChannelConfig.java
deleted file mode 100644
index bafc1df161..0000000000
--- a/transport/src/main/java/io/netty/channel/DefaultServerChannelConfig.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2011 The Netty Project
- *
- * The Netty Project licenses this file to you under the Apache License,
- * version 2.0 (the "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-package io.netty.channel;
-
-import java.util.Map;
-import java.util.Map.Entry;
-
-import io.netty.buffer.ChannelBufferFactory;
-import io.netty.buffer.HeapChannelBufferFactory;
-import io.netty.channel.socket.ServerSocketChannelConfig;
-
-/**
- * The default {@link ServerSocketChannelConfig} implementation.
- */
-public class DefaultServerChannelConfig implements ChannelConfig {
-
- private volatile ChannelPipelineFactory pipelineFactory;
- private volatile ChannelBufferFactory bufferFactory = HeapChannelBufferFactory.getInstance();
-
- @Override
- public void setOptions(Map options) {
- for (Entry e: options.entrySet()) {
- setOption(e.getKey(), e.getValue());
- }
- }
-
- /**
- * Sets an individual option. You can override this method to support
- * additional configuration parameters.
- */
- @Override
- public boolean setOption(String key, Object value) {
- if (key.equals("pipelineFactory")) {
- setPipelineFactory((ChannelPipelineFactory) value);
- } else if (key.equals("bufferFactory")) {
- setBufferFactory((ChannelBufferFactory) value);
- } else {
- return false;
- }
- return true;
- }
-
- @Override
- public ChannelPipelineFactory getPipelineFactory() {
- return pipelineFactory;
- }
-
- @Override
- public void setPipelineFactory(ChannelPipelineFactory pipelineFactory) {
- if (pipelineFactory == null) {
- throw new NullPointerException("pipelineFactory");
- }
- this.pipelineFactory = pipelineFactory;
- }
-
- @Override
- public ChannelBufferFactory getBufferFactory() {
- return bufferFactory;
- }
-
- @Override
- public void setBufferFactory(ChannelBufferFactory bufferFactory) {
- if (bufferFactory == null) {
- throw new NullPointerException("bufferFactory");
- }
-
- this.bufferFactory = bufferFactory;
- }
-
- @Override
- public int getConnectTimeoutMillis() {
- return 0;
- }
-
- @Override
- public void setConnectTimeoutMillis(int connectTimeoutMillis) {
- // Unused
- }
-}