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.
Source
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