Interface ChannelConfig

All Known Subinterfaces:
DatagramChannelConfig, DomainDatagramChannelConfig, DomainSocketChannelConfig, DuplexChannelConfig, OioDatagramChannelConfig, OioServerSocketChannelConfig, OioSocketChannelConfig, SctpChannelConfig, SctpServerChannelConfig, ServerSocketChannelConfig, SocketChannelConfig
All Known Implementing Classes:
AbstractHttp2StreamChannel.Http2StreamChannelConfig, DefaultChannelConfig, DefaultDatagramChannelConfig, DefaultOioDatagramChannelConfig, DefaultOioServerSocketChannelConfig, DefaultOioSocketChannelConfig, DefaultSctpChannelConfig, DefaultSctpServerChannelConfig, DefaultServerSocketChannelConfig, DefaultSocketChannelConfig, EpollChannelConfig, EpollDatagramChannelConfig, EpollDomainDatagramChannelConfig, EpollDomainSocketChannelConfig, EpollServerChannelConfig, EpollServerSocketChannelConfig, EpollSocketChannelConfig, KQueueChannelConfig, KQueueDatagramChannelConfig, KQueueDomainDatagramChannelConfig, KQueueDomainSocketChannelConfig, KQueueServerChannelConfig, KQueueServerSocketChannelConfig, KQueueSocketChannelConfig, NioDatagramChannelConfig, NioDomainSocketChannel.NioDomainSocketChannelConfig, NioSctpChannel.NioSctpChannelConfig, NioSctpServerChannel.NioSctpServerChannelConfig, NioServerDomainSocketChannel.NioDomainServerSocketChannelConfig, NioServerSocketChannel.NioServerSocketChannelConfig, NioSocketChannel.NioSocketChannelConfig, OioSctpChannel.OioSctpChannelConfig, OioSctpServerChannel.OioSctpServerChannelConfig

public interface ChannelConfig
A set of configuration properties of a Channel.

Please down-cast to more specific configuration type such as SocketChannelConfig or use setOptions(Map) to set the transport-specific properties:

 Channel ch = ...;
 SocketChannelConfig cfg = (SocketChannelConfig) ch.getConfig();
 cfg.setTcpNoDelay(false);
 

Option map

An option map property is a dynamic write-only property which allows the configuration of a Channel without down-casting its associated ChannelConfig. To update an option map, please call setOptions(Map).

All ChannelConfig has the following options:

NameAssociated setter method
ChannelOption.CONNECT_TIMEOUT_MILLISsetConnectTimeoutMillis(int)
ChannelOption.WRITE_SPIN_COUNTsetWriteSpinCount(int)
ChannelOption.WRITE_BUFFER_WATER_MARKsetWriteBufferWaterMark(WriteBufferWaterMark)
ChannelOption.ALLOCATORsetAllocator(ByteBufAllocator)
ChannelOption.AUTO_READsetAutoRead(boolean)

More options are available in the sub-types of ChannelConfig. For example, you can configure the parameters which are specific to a TCP/IP socket as explained in SocketChannelConfig.

  • Method Details

    • getOptions

      Map<ChannelOption<?>,Object> getOptions()
      Return all set ChannelOption's.
    • setOptions

      boolean setOptions(Map<ChannelOption<?>,?> options)
      Sets the configuration properties from the specified Map.
    • getOption

      <T> T getOption(ChannelOption<T> option)
      Return the value of the given ChannelOption
    • setOption

      <T> boolean setOption(ChannelOption<T> option, T value)
      Sets a configuration property with the specified name and value. To override this method properly, you must call the super class:
       public boolean setOption(ChannelOption<T> option, T value) {
           if (super.setOption(option, value)) {
               return true;
           }
      
           if (option.equals(additionalOption)) {
               ....
               return true;
           }
      
           return false;
       }
       
      Returns:
      true if and only if the property has been set
    • getConnectTimeoutMillis

      int getConnectTimeoutMillis()
      Returns the connect timeout of the channel in milliseconds. If the Channel does not support connect operation, this property is not used at all, and therefore will be ignored.
      Returns:
      the connect timeout in milliseconds. 0 if disabled.
    • setConnectTimeoutMillis

      ChannelConfig setConnectTimeoutMillis(int connectTimeoutMillis)
      Sets the connect timeout of the channel in milliseconds. If the Channel does not support connect operation, this property is not used at all, and therefore will be ignored.
      Parameters:
      connectTimeoutMillis - the connect timeout in milliseconds. 0 to disable.
    • getMaxMessagesPerRead

      @Deprecated int getMaxMessagesPerRead()
      Deprecated.
      Use MaxMessagesRecvByteBufAllocator and MaxMessagesRecvByteBufAllocator.maxMessagesPerRead().

      Returns the maximum number of messages to read per read loop. a channelRead() event. If this value is greater than 1, an event loop might attempt to read multiple times to procure multiple messages.

    • setMaxMessagesPerRead

      @Deprecated ChannelConfig setMaxMessagesPerRead(int maxMessagesPerRead)
      Deprecated.
      Use MaxMessagesRecvByteBufAllocator and MaxMessagesRecvByteBufAllocator.maxMessagesPerRead(int).

      Sets the maximum number of messages to read per read loop. If this value is greater than 1, an event loop might attempt to read multiple times to procure multiple messages.

    • getWriteSpinCount

      int getWriteSpinCount()
      Returns the maximum loop count for a write operation until WritableByteChannel.write(ByteBuffer) returns a non-zero value. It is similar to what a spin lock is used for in concurrency programming. It improves memory utilization and write throughput depending on the platform that JVM runs on. The default value is 16.
    • setWriteSpinCount

      ChannelConfig setWriteSpinCount(int writeSpinCount)
      Sets the maximum loop count for a write operation until WritableByteChannel.write(ByteBuffer) returns a non-zero value. It is similar to what a spin lock is used for in concurrency programming. It improves memory utilization and write throughput depending on the platform that JVM runs on. The default value is 16.
      Throws:
      IllegalArgumentException - if the specified value is 0 or less than 0
    • getAllocator

      ByteBufAllocator getAllocator()
      Returns ByteBufAllocator which is used for the channel to allocate buffers.
    • setAllocator

      ChannelConfig setAllocator(ByteBufAllocator allocator)
      Set the ByteBufAllocator which is used for the channel to allocate buffers.
    • getRecvByteBufAllocator

      <T extends RecvByteBufAllocator> T getRecvByteBufAllocator()
      Returns RecvByteBufAllocator which is used for the channel to allocate receive buffers.
    • setRecvByteBufAllocator

      ChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator)
      Set the RecvByteBufAllocator which is used for the channel to allocate receive buffers.
    • isAutoRead

      boolean isAutoRead()
      Returns true if and only if ChannelHandlerContext.read() will be invoked automatically so that a user application doesn't need to call it at all. The default value is true.
    • setAutoRead

      ChannelConfig setAutoRead(boolean autoRead)
      Sets if ChannelHandlerContext.read() will be invoked automatically so that a user application doesn't need to call it at all. The default value is true.
    • isAutoClose

      boolean isAutoClose()
      Returns true if and only if the Channel will be closed automatically and immediately on write failure. The default is true.
    • setAutoClose

      ChannelConfig setAutoClose(boolean autoClose)
      Sets whether the Channel should be closed automatically and immediately on write failure. The default is true.
    • getWriteBufferHighWaterMark

      int getWriteBufferHighWaterMark()
      Returns the high water mark of the write buffer. If the number of bytes queued in the write buffer exceeds this value, Channel.isWritable() will start to return false.
    • setWriteBufferHighWaterMark

      ChannelConfig setWriteBufferHighWaterMark(int writeBufferHighWaterMark)

      Sets the high water mark of the write buffer. If the number of bytes queued in the write buffer exceeds this value, Channel.isWritable() will start to return false.

    • getWriteBufferLowWaterMark

      int getWriteBufferLowWaterMark()
      Returns the low water mark of the write buffer. Once the number of bytes queued in the write buffer exceeded the high water mark and then dropped down below this value, Channel.isWritable() will start to return true again.
    • setWriteBufferLowWaterMark

      ChannelConfig setWriteBufferLowWaterMark(int writeBufferLowWaterMark)

      Sets the low water mark of the write buffer. Once the number of bytes queued in the write buffer exceeded the high water mark and then dropped down below this value, Channel.isWritable() will start to return true again.

    • getMessageSizeEstimator

      MessageSizeEstimator getMessageSizeEstimator()
      Returns MessageSizeEstimator which is used for the channel to detect the size of a message.
    • setMessageSizeEstimator

      ChannelConfig setMessageSizeEstimator(MessageSizeEstimator estimator)
      Set the MessageSizeEstimator which is used for the channel to detect the size of a message.
    • getWriteBufferWaterMark

      WriteBufferWaterMark getWriteBufferWaterMark()
      Returns the WriteBufferWaterMark which is used for setting the high and low water mark of the write buffer.
    • setWriteBufferWaterMark

      ChannelConfig setWriteBufferWaterMark(WriteBufferWaterMark writeBufferWaterMark)
      Set the WriteBufferWaterMark which is used for setting the high and low water mark of the write buffer.