EchoServerHandler Class — netty Architecture
Architecture documentation for the EchoServerHandler class in SocketSslEchoTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD e767f6ee_a0d3_e9a4_f167_526f950d1a6c["EchoServerHandler"] 34cf25cc_6ea4_21b4_4971_fbf3fd40752e["SocketSslEchoTest.java"] e767f6ee_a0d3_e9a4_f167_526f950d1a6c -->|defined in| 34cf25cc_6ea4_21b4_4971_fbf3fd40752e 86071991_dd43_fcd3_fe1d_3747579f0b48["EchoServerHandler()"] e767f6ee_a0d3_e9a4_f167_526f950d1a6c -->|method| 86071991_dd43_fcd3_fe1d_3747579f0b48 21c95f2d_709a_ea1b_a7b2_1811761e1d96["channelRegistered()"] e767f6ee_a0d3_e9a4_f167_526f950d1a6c -->|method| 21c95f2d_709a_ea1b_a7b2_1811761e1d96 bc3e39ac_b296_52ff_ac37_b3376157fe60["channelActive()"] e767f6ee_a0d3_e9a4_f167_526f950d1a6c -->|method| bc3e39ac_b296_52ff_ac37_b3376157fe60 96f28521_cfc8_a185_ba27_fa0877ab74ae["channelRead0()"] e767f6ee_a0d3_e9a4_f167_526f950d1a6c -->|method| 96f28521_cfc8_a185_ba27_fa0877ab74ae
Relationship Graph
Source Code
testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketSslEchoTest.java lines 536–594
private class EchoServerHandler extends EchoHandler {
volatile Future<Channel> renegoFuture;
EchoServerHandler(
AtomicInteger recvCounter, AtomicInteger negoCounter,
AtomicReference<Throwable> exception) {
super(recvCounter, negoCounter, exception);
}
@Override
public final void channelRegistered(ChannelHandlerContext ctx) {
renegoFuture = null;
}
@Override
public void channelActive(final ChannelHandlerContext ctx) throws Exception {
if (!autoRead) {
ctx.read();
}
ctx.fireChannelActive();
}
@Override
public void channelRead0(ChannelHandlerContext ctx, ByteBuf in) throws Exception {
byte[] actual = new byte[in.readableBytes()];
in.readBytes(actual);
int lastIdx = recvCounter.get();
for (int i = 0; i < actual.length; i ++) {
assertEquals(data[i + lastIdx], actual[i]);
}
ByteBuf buf = randomBufferType(ctx.alloc(), actual, 0, actual.length);
if (useCompositeByteBuf) {
buf = Unpooled.compositeBuffer().addComponent(true, buf);
}
ctx.writeAndFlush(buf);
recvCounter.addAndGet(actual.length);
// Perform server-initiated renegotiation if necessary.
if (renegotiation.type == RenegotiationType.SERVER_INITIATED &&
recvCounter.get() > data.length / 2 && renegoFuture == null) {
SslHandler sslHandler = ctx.pipeline().get(SslHandler.class);
Future<Channel> hf = sslHandler.handshakeFuture();
assertTrue(hf.isDone());
sslHandler.engine().setEnabledCipherSuites(new String[] { renegotiation.cipherSuite });
logStats("SERVER RENEGOTIATES");
renegoFuture = sslHandler.renegotiate();
assertNotSame(renegoFuture, hf);
assertSame(renegoFuture, sslHandler.handshakeFuture());
assertFalse(renegoFuture.isDone());
}
}
}
Source
Frequently Asked Questions
What is the EchoServerHandler class?
EchoServerHandler is a class in the netty codebase, defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketSslEchoTest.java.
Where is EchoServerHandler defined?
EchoServerHandler is defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketSslEchoTest.java at line 536.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free