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: - * - * - * - * - * - * - * - * - * - * - * - *
NameAssociated 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 - } -}