Home / Class/ EchoServerHandler Class — netty Architecture

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());
            }
        }
    }

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