DefaultHttp2PushPromiseFrameTest Class — netty Architecture
Architecture documentation for the DefaultHttp2PushPromiseFrameTest class in DefaultHttp2PushPromiseFrameTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 7aa7c7e1_690b_4471_b638_23d3c29cb751["DefaultHttp2PushPromiseFrameTest"] 5b2ea007_15cc_23b9_2b36_e512a7fce7c3["DefaultHttp2PushPromiseFrameTest.java"] 7aa7c7e1_690b_4471_b638_23d3c29cb751 -->|defined in| 5b2ea007_15cc_23b9_2b36_e512a7fce7c3 cd2ffeef_aa84_a5b0_1f82_446edac6639c["setup()"] 7aa7c7e1_690b_4471_b638_23d3c29cb751 -->|method| cd2ffeef_aa84_a5b0_1f82_446edac6639c 9f97a1e6_7fc9_93e2_d999_dd39aa8de2ab["send()"] 7aa7c7e1_690b_4471_b638_23d3c29cb751 -->|method| 9f97a1e6_7fc9_93e2_d999_dd39aa8de2ab a3ad127f_c339_14ef_40fd_7aac4c88cd7e["shutdown()"] 7aa7c7e1_690b_4471_b638_23d3c29cb751 -->|method| a3ad127f_c339_14ef_40fd_7aac4c88cd7e
Relationship Graph
Source Code
codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrameTest.java lines 43–233
public class DefaultHttp2PushPromiseFrameTest {
private final EventLoopGroup eventLoopGroup = new MultiThreadIoEventLoopGroup(2, NioIoHandler.newFactory());
private final ClientHandler clientHandler = new ClientHandler();
private final Map<Integer, String> contentMap = new ConcurrentHashMap<Integer, String>();
@BeforeEach
public void setup() throws InterruptedException {
ServerBootstrap serverBootstrap = new ServerBootstrap()
.group(eventLoopGroup)
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) {
ChannelPipeline pipeline = ch.pipeline();
Http2FrameCodec frameCodec = Http2FrameCodecBuilder.forServer()
.autoAckSettingsFrame(true)
.autoAckPingFrame(true)
.build();
pipeline.addLast(frameCodec);
pipeline.addLast(new ServerHandler());
}
});
ChannelFuture channelFuture = serverBootstrap.bind(0).sync();
final Bootstrap bootstrap = new Bootstrap()
.group(eventLoopGroup)
.channel(NioSocketChannel.class)
.handler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) {
ChannelPipeline pipeline = ch.pipeline();
Http2FrameCodec frameCodec = Http2FrameCodecBuilder.forClient()
.autoAckSettingsFrame(true)
.autoAckPingFrame(true)
.initialSettings(Http2Settings.defaultSettings().pushEnabled(true))
.build();
pipeline.addLast(frameCodec);
pipeline.addLast(clientHandler);
}
});
bootstrap.connect(channelFuture.channel().localAddress()).sync();
}
@Test
public void send() throws Exception {
clientHandler.write();
}
@AfterEach
public void shutdown() {
eventLoopGroup.shutdownGracefully().syncUninterruptibly();
}
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");
Defined In
Source
Frequently Asked Questions
What is the DefaultHttp2PushPromiseFrameTest class?
DefaultHttp2PushPromiseFrameTest is a class in the netty codebase, defined in codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrameTest.java.
Where is DefaultHttp2PushPromiseFrameTest defined?
DefaultHttp2PushPromiseFrameTest is defined in codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrameTest.java at line 43.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free