diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2ConnectionHandler.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2ConnectionHandler.java index 41824c9910..59a89f7938 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2ConnectionHandler.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2ConnectionHandler.java @@ -64,15 +64,10 @@ public class Http2ConnectionHandler extends ByteToMessageDecoder implements Http public Http2ConnectionHandler(Http2Connection connection, Http2FrameReader frameReader, Http2FrameWriter frameWriter, Http2InboundFlowController inboundFlow, Http2OutboundFlowController outboundFlow, Http2FrameListener listener) { - this.encoder = - DefaultHttp2ConnectionEncoder.newBuilder().connection(connection) - .frameWriter(frameWriter).outboundFlow(outboundFlow).lifecycleManager(this) - .build(); - this.decoder = - DefaultHttp2ConnectionDecoder.newBuilder().connection(connection) - .frameReader(frameReader).inboundFlow(inboundFlow).encoder(encoder) - .listener(listener).lifecycleManager(this).build(); - clientPrefaceString = clientPrefaceString(connection); + this(DefaultHttp2ConnectionDecoder.newBuilder().connection(connection) + .frameReader(frameReader).inboundFlow(inboundFlow).listener(listener), + DefaultHttp2ConnectionEncoder.newBuilder().connection(connection) + .frameWriter(frameWriter).outboundFlow(outboundFlow)); } /** diff --git a/example/src/main/java/io/netty/example/http2/server/HelloWorldHttp2Handler.java b/example/src/main/java/io/netty/example/http2/server/HelloWorldHttp2Handler.java index abacae15b5..8aed6610b7 100644 --- a/example/src/main/java/io/netty/example/http2/server/HelloWorldHttp2Handler.java +++ b/example/src/main/java/io/netty/example/http2/server/HelloWorldHttp2Handler.java @@ -28,6 +28,7 @@ import io.netty.handler.codec.http2.DefaultHttp2FrameReader; import io.netty.handler.codec.http2.DefaultHttp2FrameWriter; import io.netty.handler.codec.http2.DefaultHttp2Headers; import io.netty.handler.codec.http2.Http2Connection; +import io.netty.handler.codec.http2.Http2ConnectionEncoder; import io.netty.handler.codec.http2.Http2ConnectionHandler; import io.netty.handler.codec.http2.Http2Exception; import io.netty.handler.codec.http2.Http2FrameAdapter; @@ -52,12 +53,13 @@ public class HelloWorldHttp2Handler extends Http2ConnectionHandler { public HelloWorldHttp2Handler() { this(new DefaultHttp2Connection(true), new Http2InboundFrameLogger( new DefaultHttp2FrameReader(), logger), new Http2OutboundFrameLogger( - new DefaultHttp2FrameWriter(), logger)); + new DefaultHttp2FrameWriter(), logger), new SimpleHttp2FrameListener()); } private HelloWorldHttp2Handler(Http2Connection connection, Http2FrameReader frameReader, - Http2FrameWriter frameWriter) { - super(connection, frameReader, frameWriter, new SimpleHttp2FrameListener(frameWriter)); + Http2FrameWriter frameWriter, SimpleHttp2FrameListener listener) { + super(connection, frameReader, frameWriter, listener); + listener.encoder(encoder()); } /** @@ -83,10 +85,10 @@ public class HelloWorldHttp2Handler extends Http2ConnectionHandler { } private static class SimpleHttp2FrameListener extends Http2FrameAdapter { - private Http2FrameWriter frameWriter; + private Http2ConnectionEncoder encoder; - public SimpleHttp2FrameListener(Http2FrameWriter frameWriter) { - this.frameWriter = frameWriter; + public void encoder(Http2ConnectionEncoder encoder) { + this.encoder = encoder; } /** @@ -118,8 +120,8 @@ public class HelloWorldHttp2Handler extends Http2ConnectionHandler { private void sendResponse(ChannelHandlerContext ctx, int streamId, ByteBuf payload) { // Send a frame for the response status Http2Headers headers = new DefaultHttp2Headers().status(new AsciiString("200")); - frameWriter.writeHeaders(ctx, streamId, headers, 0, false, ctx.newPromise()); - frameWriter.writeData(ctx, streamId, payload, 0, true, ctx.newPromise()); + encoder.writeHeaders(ctx, streamId, headers, 0, false, ctx.newPromise()); + encoder.writeData(ctx, streamId, payload, 0, true, ctx.newPromise()); ctx.flush(); } };