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