Home / Class/ NioServerSocketChannel Class — netty Architecture

NioServerSocketChannel Class — netty Architecture

Architecture documentation for the NioServerSocketChannel class in NioServerSocketChannel.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  e7b7a902_9251_18bd_7763_ecbf802f4d1f["NioServerSocketChannel"]
  b770b679_2fb4_39ba_4050_be970c8dbe85["NioServerSocketChannel.java"]
  e7b7a902_9251_18bd_7763_ecbf802f4d1f -->|defined in| b770b679_2fb4_39ba_4050_be970c8dbe85
  b31d5ef7_aeab_6316_bbcd_56937d586795["ServerSocketChannel()"]
  e7b7a902_9251_18bd_7763_ecbf802f4d1f -->|method| b31d5ef7_aeab_6316_bbcd_56937d586795
  0abd3bec_cbdd_594f_df99_a02fe91e16be["NioServerSocketChannel()"]
  e7b7a902_9251_18bd_7763_ecbf802f4d1f -->|method| 0abd3bec_cbdd_594f_df99_a02fe91e16be
  9fee4bca_e797_b338_1724_42d784dacdc4["InetSocketAddress()"]
  e7b7a902_9251_18bd_7763_ecbf802f4d1f -->|method| 9fee4bca_e797_b338_1724_42d784dacdc4
  cf305924_a227_0359_2768_6689909201cb["ChannelMetadata()"]
  e7b7a902_9251_18bd_7763_ecbf802f4d1f -->|method| cf305924_a227_0359_2768_6689909201cb
  b1f78247_06b1_efcf_b0e7_3a1306d3c979["ServerSocketChannelConfig()"]
  e7b7a902_9251_18bd_7763_ecbf802f4d1f -->|method| b1f78247_06b1_efcf_b0e7_3a1306d3c979
  07bb3cb8_fe12_9de8_c47b_0ee14c0bc2c0["isActive()"]
  e7b7a902_9251_18bd_7763_ecbf802f4d1f -->|method| 07bb3cb8_fe12_9de8_c47b_0ee14c0bc2c0
  6020d260_197d_8f34_dbb6_075449a40e29["SocketAddress()"]
  e7b7a902_9251_18bd_7763_ecbf802f4d1f -->|method| 6020d260_197d_8f34_dbb6_075449a40e29
  ccf9cf05_9b84_895b_ee5f_d1655aa4a2a0["doBind()"]
  e7b7a902_9251_18bd_7763_ecbf802f4d1f -->|method| ccf9cf05_9b84_895b_ee5f_d1655aa4a2a0
  9c267b46_de8e_4fe9_1bb6_be19955671ac["doClose()"]
  e7b7a902_9251_18bd_7763_ecbf802f4d1f -->|method| 9c267b46_de8e_4fe9_1bb6_be19955671ac
  660f2254_9ae0_a8b7_1026_89b5852d6d76["doReadMessages()"]
  e7b7a902_9251_18bd_7763_ecbf802f4d1f -->|method| 660f2254_9ae0_a8b7_1026_89b5852d6d76
  c8d80173_6cf0_d9c9_d13a_d9a5f7842e3d["doConnect()"]
  e7b7a902_9251_18bd_7763_ecbf802f4d1f -->|method| c8d80173_6cf0_d9c9_d13a_d9a5f7842e3d
  9d49fd3e_738a_9abf_1230_b21166b86052["doFinishConnect()"]
  e7b7a902_9251_18bd_7763_ecbf802f4d1f -->|method| 9d49fd3e_738a_9abf_1230_b21166b86052
  d2779f96_6e7b_f2f4_8dab_a47110045274["doDisconnect()"]
  e7b7a902_9251_18bd_7763_ecbf802f4d1f -->|method| d2779f96_6e7b_f2f4_8dab_a47110045274

Relationship Graph

Source Code

transport/src/main/java/io/netty/channel/socket/nio/NioServerSocketChannel.java lines 47–251

public class NioServerSocketChannel extends AbstractNioMessageChannel
                             implements io.netty.channel.socket.ServerSocketChannel {

    private static final ChannelMetadata METADATA = new ChannelMetadata(false, 16);
    private static final SelectorProvider DEFAULT_SELECTOR_PROVIDER = SelectorProvider.provider();

    private static final InternalLogger logger = InternalLoggerFactory.getInstance(NioServerSocketChannel.class);

    private static final Method OPEN_SERVER_SOCKET_CHANNEL_WITH_FAMILY =
            SelectorProviderUtil.findOpenMethod("openServerSocketChannel");

    private static ServerSocketChannel newChannel(SelectorProvider provider, SocketProtocolFamily family) {
        try {
            ServerSocketChannel channel =
                    SelectorProviderUtil.newChannel(OPEN_SERVER_SOCKET_CHANNEL_WITH_FAMILY, provider, family);
            return channel == null ? provider.openServerSocketChannel() : channel;
        } catch (IOException e) {
            throw new ChannelException("Failed to open a socket.", e);
        }
    }

    private final ServerSocketChannelConfig config;

    /**
     * Create a new instance
     */
    public NioServerSocketChannel() {
        this(DEFAULT_SELECTOR_PROVIDER);
    }

    /**
     * Create a new instance using the given {@link SelectorProvider}.
     */
    public NioServerSocketChannel(SelectorProvider provider) {
        this(provider, (SocketProtocolFamily) null);
    }

    /**
     * Create a new instance using the given {@link SelectorProvider} and protocol family (supported only since JDK 15).
     *
     * @deprecated use {@link NioServerSocketChannel#NioServerSocketChannel(SelectorProvider, SocketProtocolFamily)}
     */
    @Deprecated
    public NioServerSocketChannel(SelectorProvider provider, InternetProtocolFamily family) {
        this(provider, family == null ? null : family.toSocketProtocolFamily());
    }

    /**
     * Create a new instance using the given {@link SelectorProvider} and protocol family (supported only since JDK 15).
     */
    public NioServerSocketChannel(SelectorProvider provider, SocketProtocolFamily family) {
        this(newChannel(provider, family));
    }

    /**
     * Create a new instance using the given {@link ServerSocketChannel}.
     */
    public NioServerSocketChannel(ServerSocketChannel channel) {
        super(null, channel, SelectionKey.OP_ACCEPT);
        config = new NioServerSocketChannelConfig(this, javaChannel().socket());
    }

    @Override
    public InetSocketAddress localAddress() {
        return (InetSocketAddress) super.localAddress();
    }

    @Override
    public ChannelMetadata metadata() {
        return METADATA;
    }

    @Override
    public ServerSocketChannelConfig config() {
        return config;
    }

    @Override
    public boolean isActive() {
        // As java.nio.ServerSocketChannel.isBound() will continue to return true even after the channel was closed
        // we will also need to check if it is open.

Frequently Asked Questions

What is the NioServerSocketChannel class?
NioServerSocketChannel is a class in the netty codebase, defined in transport/src/main/java/io/netty/channel/socket/nio/NioServerSocketChannel.java.
Where is NioServerSocketChannel defined?
NioServerSocketChannel is defined in transport/src/main/java/io/netty/channel/socket/nio/NioServerSocketChannel.java at line 47.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free