ServerHandler Class — netty Architecture
Architecture documentation for the ServerHandler class in DefaultHttp2PushPromiseFrameTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD aea56fba_78b6_5518_b4b4_901b1cae9633["ServerHandler"] 5b2ea007_15cc_23b9_2b36_e512a7fce7c3["DefaultHttp2PushPromiseFrameTest.java"] aea56fba_78b6_5518_b4b4_901b1cae9633 -->|defined in| 5b2ea007_15cc_23b9_2b36_e512a7fce7c3 facc03cb_72c6_5e6c_d53a_96dfd538894c["channelRead()"] aea56fba_78b6_5518_b4b4_901b1cae9633 -->|method| facc03cb_72c6_5e6c_d53a_96dfd538894c
Relationship Graph
Source Code
codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrameTest.java lines 103–163
private final class ServerHandler extends Http2ChannelDuplexHandler {
@Override
public void channelRead(final ChannelHandlerContext ctx, Object msg) throws Exception {
if (msg instanceof Http2HeadersFrame) {
final Http2HeadersFrame receivedFrame = (Http2HeadersFrame) msg;
Http2Headers pushRequestHeaders = new DefaultHttp2Headers();
pushRequestHeaders.path("/meow")
.method("GET")
.scheme("https")
.authority("localhost:5555");
// Write PUSH_PROMISE request headers
final Http2FrameStream newPushFrameStream = newStream();
Http2PushPromiseFrame pushPromiseFrame = new DefaultHttp2PushPromiseFrame(pushRequestHeaders);
pushPromiseFrame.stream(receivedFrame.stream());
pushPromiseFrame.pushStream(newPushFrameStream);
ctx.writeAndFlush(pushPromiseFrame).addListener(future -> {
contentMap.put(newPushFrameStream.id(), "Meow, I am Pushed via HTTP/2");
// Write headers for actual request
Http2Headers http2Headers = new DefaultHttp2Headers();
http2Headers.status("200");
http2Headers.add("push", "false");
Http2HeadersFrame headersFrame = new DefaultHttp2HeadersFrame(http2Headers, false);
headersFrame.stream(receivedFrame.stream());
ChannelFuture channelFuture = ctx.writeAndFlush(headersFrame);
// Write Data of actual request
channelFuture.addListener(f -> {
Http2DataFrame dataFrame = new DefaultHttp2DataFrame(
Unpooled.wrappedBuffer("Meow".getBytes()), true);
dataFrame.stream(receivedFrame.stream());
ctx.writeAndFlush(dataFrame);
});
});
} else if (msg instanceof Http2PriorityFrame) {
Http2PriorityFrame priorityFrame = (Http2PriorityFrame) msg;
String content = contentMap.get(priorityFrame.stream().id());
if (content == null) {
ctx.writeAndFlush(new DefaultHttp2GoAwayFrame(Http2Error.REFUSED_STREAM));
return;
}
// Write headers for Priority request
Http2Headers http2Headers = new DefaultHttp2Headers();
http2Headers.status("200");
http2Headers.add("push", "true");
Http2HeadersFrame headersFrame = new DefaultHttp2HeadersFrame(http2Headers, false);
headersFrame.stream(priorityFrame.stream());
ctx.writeAndFlush(headersFrame);
// Write Data of Priority request
Http2DataFrame dataFrame = new DefaultHttp2DataFrame(Unpooled.wrappedBuffer(content.getBytes()), true);
dataFrame.stream(priorityFrame.stream());
ctx.writeAndFlush(dataFrame);
}
}
}
Defined In
Source
Frequently Asked Questions
What is the ServerHandler class?
ServerHandler is a class in the netty codebase, defined in codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrameTest.java.
Where is ServerHandler defined?
ServerHandler is defined in codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrameTest.java at line 103.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free