Home / Class/ EchoHandler Class — netty Architecture

EchoHandler Class — netty Architecture

Architecture documentation for the EchoHandler class in SpdySessionHandlerTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  5499328c_d3f5_330f_33c6_f571d4a0c906["EchoHandler"]
  aff6d1c3_03ef_db02_f945_a9c60de6d38f["SpdySessionHandlerTest.java"]
  5499328c_d3f5_330f_33c6_f571d4a0c906 -->|defined in| aff6d1c3_03ef_db02_f945_a9c60de6d38f
  711f3e19_b210_9c43_500f_2d54a946afd4["EchoHandler()"]
  5499328c_d3f5_330f_33c6_f571d4a0c906 -->|method| 711f3e19_b210_9c43_500f_2d54a946afd4
  998453f2_39f7_4313_7ffe_7080e42f7a61["channelActive()"]
  5499328c_d3f5_330f_33c6_f571d4a0c906 -->|method| 998453f2_39f7_4313_7ffe_7080e42f7a61
  2bb1b1e5_dc75_3dff_ea39_697b4cd2f377["channelRead()"]
  5499328c_d3f5_330f_33c6_f571d4a0c906 -->|method| 2bb1b1e5_dc75_3dff_ea39_697b4cd2f377

Relationship Graph

Source Code

codec-http/src/test/java/io/netty/handler/codec/spdy/SpdySessionHandlerTest.java lines 324–391

    private static class EchoHandler extends ChannelInboundHandlerAdapter {
        private final int closeSignal;
        private final boolean server;

        EchoHandler(int closeSignal, boolean server) {
            this.closeSignal = closeSignal;
            this.server = server;
        }

        @Override
        public void channelActive(ChannelHandlerContext ctx) throws Exception {
            // Initiate 4 new streams
            int streamId = server ? 2 : 1;
            SpdySynStreamFrame spdySynStreamFrame =
                    new DefaultSpdySynStreamFrame(streamId, 0, (byte) 0);
            spdySynStreamFrame.setLast(true);
            ctx.writeAndFlush(spdySynStreamFrame);
            spdySynStreamFrame.setStreamId(spdySynStreamFrame.streamId() + 2);
            ctx.writeAndFlush(spdySynStreamFrame);
            spdySynStreamFrame.setStreamId(spdySynStreamFrame.streamId() + 2);
            ctx.writeAndFlush(spdySynStreamFrame);
            spdySynStreamFrame.setStreamId(spdySynStreamFrame.streamId() + 2);
            ctx.writeAndFlush(spdySynStreamFrame);

            // Limit the number of concurrent streams to 1
            SpdySettingsFrame spdySettingsFrame = new DefaultSpdySettingsFrame();
            spdySettingsFrame.setValue(SpdySettingsFrame.SETTINGS_MAX_CONCURRENT_STREAMS, 1);
            ctx.writeAndFlush(spdySettingsFrame);
        }

        @Override
        public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
            if (msg instanceof SpdySynStreamFrame) {

                SpdySynStreamFrame spdySynStreamFrame = (SpdySynStreamFrame) msg;
                if (!spdySynStreamFrame.isUnidirectional()) {
                    int streamId = spdySynStreamFrame.streamId();
                    SpdySynReplyFrame spdySynReplyFrame = new DefaultSpdySynReplyFrame(streamId);
                    spdySynReplyFrame.setLast(spdySynStreamFrame.isLast());
                    for (Map.Entry<CharSequence, CharSequence> entry: spdySynStreamFrame.headers()) {
                        spdySynReplyFrame.headers().add(entry.getKey(), entry.getValue());
                    }

                    ctx.writeAndFlush(spdySynReplyFrame);
                }
                return;
            }

            if (msg instanceof SpdySynReplyFrame) {
                return;
            }

            if (msg instanceof SpdyDataFrame ||
                msg instanceof SpdyPingFrame ||
                msg instanceof SpdyHeadersFrame) {

                ctx.writeAndFlush(msg);
                return;
            }

            if (msg instanceof SpdySettingsFrame) {
                SpdySettingsFrame spdySettingsFrame = (SpdySettingsFrame) msg;
                if (spdySettingsFrame.isSet(closeSignal)) {
                    ctx.close();
                }
            }
        }
    }

Frequently Asked Questions

What is the EchoHandler class?
EchoHandler is a class in the netty codebase, defined in codec-http/src/test/java/io/netty/handler/codec/spdy/SpdySessionHandlerTest.java.
Where is EchoHandler defined?
EchoHandler is defined in codec-http/src/test/java/io/netty/handler/codec/spdy/SpdySessionHandlerTest.java at line 324.

Analyze Your Own Codebase

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

Try Supermodel Free