Class NioServerSocketChannel

All Implemented Interfaces:
Channel, ChannelOutboundInvoker, ServerChannel, ServerSocketChannel, AttributeMap, java.lang.Comparable<Channel>

public class NioServerSocketChannel extends AbstractNioMessageChannel implements ServerSocketChannel
A ServerSocketChannel implementation which uses NIO selector based implementation to accept new connections.
  • Field Details

    • METADATA

      private static final ChannelMetadata METADATA
    • DEFAULT_SELECTOR_PROVIDER

      private static final java.nio.channels.spi.SelectorProvider DEFAULT_SELECTOR_PROVIDER
    • logger

      private static final InternalLogger logger
    • OPEN_SERVER_SOCKET_CHANNEL_WITH_FAMILY

      private static final java.lang.reflect.Method OPEN_SERVER_SOCKET_CHANNEL_WITH_FAMILY
    • config

      private final ServerSocketChannelConfig config
  • Constructor Details

    • NioServerSocketChannel

      public NioServerSocketChannel()
      Create a new instance
    • NioServerSocketChannel

      public NioServerSocketChannel(java.nio.channels.spi.SelectorProvider provider)
      Create a new instance using the given SelectorProvider.
    • NioServerSocketChannel

      @Deprecated public NioServerSocketChannel(java.nio.channels.spi.SelectorProvider provider, InternetProtocolFamily family)
      Create a new instance using the given SelectorProvider and protocol family (supported only since JDK 15).
    • NioServerSocketChannel

      public NioServerSocketChannel(java.nio.channels.spi.SelectorProvider provider, SocketProtocolFamily family)
      Create a new instance using the given SelectorProvider and protocol family (supported only since JDK 15).
    • NioServerSocketChannel

      public NioServerSocketChannel(java.nio.channels.ServerSocketChannel channel)
      Create a new instance using the given ServerSocketChannel.
  • Method Details

    • newChannel

      private static java.nio.channels.ServerSocketChannel newChannel(java.nio.channels.spi.SelectorProvider provider, SocketProtocolFamily family)
    • localAddress

      public java.net.InetSocketAddress localAddress()
      Description copied from interface: Channel
      Returns the local address where this channel is bound to. The returned SocketAddress is supposed to be down-cast into more concrete type such as InetSocketAddress to retrieve the detailed information.
      Specified by:
      localAddress in interface Channel
      Specified by:
      localAddress in interface ServerSocketChannel
      Overrides:
      localAddress in class AbstractChannel
      Returns:
      the local address of this channel. null if this channel is not bound.
    • metadata

      public ChannelMetadata metadata()
      Description copied from interface: Channel
      Return the ChannelMetadata of the Channel which describe the nature of the Channel.
      Specified by:
      metadata in interface Channel
    • config

      public ServerSocketChannelConfig config()
      Description copied from interface: Channel
      Returns the configuration of this channel.
      Specified by:
      config in interface Channel
      Specified by:
      config in interface ServerSocketChannel
    • isActive

      public boolean isActive()
      Description copied from interface: Channel
      Return true if the Channel is active and so connected.
      Specified by:
      isActive in interface Channel
    • remoteAddress

      public java.net.InetSocketAddress remoteAddress()
      Description copied from interface: Channel
      Returns the remote address where this channel is connected to. The returned SocketAddress is supposed to be down-cast into more concrete type such as InetSocketAddress to retrieve the detailed information.
      Specified by:
      remoteAddress in interface Channel
      Specified by:
      remoteAddress in interface ServerSocketChannel
      Overrides:
      remoteAddress in class AbstractChannel
      Returns:
      the remote address of this channel. null if this channel is not connected. If this channel is not connected but it can receive messages from arbitrary remote addresses (e.g. DatagramChannel, use DefaultAddressedEnvelope.recipient() to determine the origination of the received message as this method will return null.
    • javaChannel

      protected java.nio.channels.ServerSocketChannel javaChannel()
      Overrides:
      javaChannel in class AbstractNioChannel
    • localAddress0

      protected java.net.SocketAddress localAddress0()
      Description copied from class: AbstractChannel
      Returns the SocketAddress which is bound locally.
      Specified by:
      localAddress0 in class AbstractChannel
    • doBind

      protected void doBind(java.net.SocketAddress localAddress) throws java.lang.Exception
      Description copied from class: AbstractChannel
      Bind the Channel to the SocketAddress
      Specified by:
      doBind in class AbstractChannel
      Throws:
      java.lang.Exception
    • doClose

      protected void doClose() throws java.lang.Exception
      Description copied from class: AbstractChannel
      Close the Channel
      Overrides:
      doClose in class AbstractNioChannel
      Throws:
      java.lang.Exception
    • doReadMessages

      protected int doReadMessages(java.util.List<java.lang.Object> buf) throws java.lang.Exception
      Description copied from class: AbstractNioMessageChannel
      Read messages into the given array and return the amount which was read.
      Specified by:
      doReadMessages in class AbstractNioMessageChannel
      Throws:
      java.lang.Exception
    • doConnect

      protected boolean doConnect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress) throws java.lang.Exception
      Description copied from class: AbstractNioChannel
      Connect to the remote peer
      Specified by:
      doConnect in class AbstractNioChannel
      Throws:
      java.lang.Exception
    • doFinishConnect

      protected void doFinishConnect() throws java.lang.Exception
      Description copied from class: AbstractNioChannel
      Finish the connect
      Specified by:
      doFinishConnect in class AbstractNioChannel
      Throws:
      java.lang.Exception
    • remoteAddress0

      protected java.net.SocketAddress remoteAddress0()
      Description copied from class: AbstractChannel
      Return the SocketAddress which the Channel is connected to.
      Specified by:
      remoteAddress0 in class AbstractChannel
    • doDisconnect

      protected void doDisconnect() throws java.lang.Exception
      Description copied from class: AbstractChannel
      Disconnect this Channel from its remote peer
      Specified by:
      doDisconnect in class AbstractChannel
      Throws:
      java.lang.Exception
    • doWriteMessage

      protected boolean doWriteMessage(java.lang.Object msg, ChannelOutboundBuffer in) throws java.lang.Exception
      Description copied from class: AbstractNioMessageChannel
      Write a message to the underlying Channel.
      Specified by:
      doWriteMessage in class AbstractNioMessageChannel
      Returns:
      true if and only if the message has been written
      Throws:
      java.lang.Exception
    • filterOutboundMessage

      protected final java.lang.Object filterOutboundMessage(java.lang.Object msg) throws java.lang.Exception
      Description copied from class: AbstractChannel
      Invoked when a new message is added to a ChannelOutboundBuffer of this AbstractChannel, so that the Channel implementation converts the message to another. (e.g. heap buffer -> direct buffer)
      Overrides:
      filterOutboundMessage in class AbstractChannel
      Throws:
      java.lang.Exception
    • closeOnReadError

      protected boolean closeOnReadError(java.lang.Throwable cause)
      Overrides:
      closeOnReadError in class AbstractNioMessageChannel