Server Class — netty Architecture
Architecture documentation for the Server class in UDTClientServerConnectionTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 89c0e406_7a8e_03fe_792e_9782b3deaad6["Server"] f3540ce4_30eb_36e3_f952_e84f7d4af406["UDTClientServerConnectionTest.java"] 89c0e406_7a8e_03fe_792e_9782b3deaad6 -->|defined in| f3540ce4_30eb_36e3_f952_e84f7d4af406 59192b2b_0b17_9997_b432_7ae855241154["Server()"] 89c0e406_7a8e_03fe_792e_9782b3deaad6 -->|method| 59192b2b_0b17_9997_b432_7ae855241154 15c7489b_6c9b_a2f1_adb8_b6985fa97a5b["run()"] 89c0e406_7a8e_03fe_792e_9782b3deaad6 -->|method| 15c7489b_6c9b_a2f1_adb8_b6985fa97a5b a0134c18_fe0e_5eb1_f2a3_def1ef7cc27e["shutdown()"] 89c0e406_7a8e_03fe_792e_9782b3deaad6 -->|method| a0134c18_fe0e_5eb1_f2a3_def1ef7cc27e d5ad0d45_ae71_a7dc_a011_d131fc7e1b17["waitForActive()"] 89c0e406_7a8e_03fe_792e_9782b3deaad6 -->|method| d5ad0d45_ae71_a7dc_a011_d131fc7e1b17 399d2beb_f25f_0671_070a_9d1160f03487["waitForRunning()"] 89c0e406_7a8e_03fe_792e_9782b3deaad6 -->|method| 399d2beb_f25f_0671_070a_9d1160f03487 6b262873_d5f3_7d06_8c3b_8f45cad9f1bf["waitForShutdown()"] 89c0e406_7a8e_03fe_792e_9782b3deaad6 -->|method| 6b262873_d5f3_7d06_8c3b_8f45cad9f1bf
Relationship Graph
Source Code
testsuite/src/main/java/io/netty/testsuite/transport/udt/UDTClientServerConnectionTest.java lines 182–281
static class Server implements Runnable {
static final Logger log = LoggerFactory.getLogger(Server.class);
final ChannelGroup group = new DefaultChannelGroup("server group", GlobalEventExecutor.INSTANCE);
private final InetSocketAddress address;
volatile Channel channel;
volatile boolean isRunning;
volatile boolean isShutdown;
Server(InetSocketAddress address) {
this.address = address;
}
@Override
public void run() {
final ServerBootstrap boot = new ServerBootstrap();
final ThreadFactory factory = new DefaultThreadFactory("udp");
final EventLoopGroup eventLoopGroup = new MultiThreadIoEventLoopGroup(1,
factory, NioIoHandler.newFactory(NioUdtProvider.BYTE_PROVIDER));
try {
boot.group(eventLoopGroup)
.channelFactory(NioUdtProvider.BYTE_ACCEPTOR)
.childHandler(new ChannelInitializer<UdtChannel>() {
@Override
protected void initChannel(final UdtChannel ch)
throws Exception {
final ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast("framer",
new DelimiterBasedFrameDecoder(8192,
Delimiters.lineDelimiter()));
pipeline.addLast("decoder", new StringDecoder(
CharsetUtil.UTF_8));
pipeline.addLast("encoder", new StringEncoder(
CharsetUtil.UTF_8));
pipeline.addLast("handler", new ServerHandler(
group));
}
});
channel = boot.bind(address).sync().channel();
isRunning = true;
log.info("Server ready.");
waitForRunning(false);
log.info("Server closing acceptor...");
channel.close().sync();
log.info("Server closing connectors...");
group.close().sync();
isShutdown = true;
log.info("Server is done.");
} catch (final Throwable e) {
log.error("Server failure.", e);
} finally {
eventLoopGroup.shutdownGracefully();
eventLoopGroup.terminationFuture().syncUninterruptibly();
}
}
void shutdown() {
isRunning = false;
}
void waitForActive(final boolean isActive) throws Exception {
for (int k = 0; k < WAIT_COUNT; k++) {
Thread.sleep(WAIT_SLEEP);
if (isActive) {
for (final Channel channel : group) {
final ServerHandler handler = channel.pipeline().get(
ServerHandler.class);
if (handler != null && handler.isActive) {
return;
}
}
} else {
if (group.isEmpty()) {
return;
}
}
}
}
Defined In
Source
Frequently Asked Questions
What is the Server class?
Server is a class in the netty codebase, defined in testsuite/src/main/java/io/netty/testsuite/transport/udt/UDTClientServerConnectionTest.java.
Where is Server defined?
Server is defined in testsuite/src/main/java/io/netty/testsuite/transport/udt/UDTClientServerConnectionTest.java at line 182.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free