什么时候将ChannelHandlerContext传递给ChannelHandler而不是该ChannelHandler自己的上下文?

时间:2019-06-21 22:34:35

标签: netty

这里是一个(永久)指向示例的链接,该示例是从Netty自己的示例中提取的一个我有问题的话题。有问题的示例本身并不重要,只是它显示了我想知道的模式这一事实:

https://github.com/netty/netty/blob/b26a61acd1bde5b6fca21026cd9123a38f277ad6/example/src/main/java/io/netty/example/http2/helloworld/multiplex/server/Http2ServerInitializer.java#L97-L103

我摘录如下:

@Override
protected void channelRead0(ChannelHandlerContext ctx, HttpMessage msg) throws Exception {
    ChannelPipeline pipeline = ctx.pipeline();
    ChannelHandlerContext thisCtx = pipeline.context(this);
    /* ... */

在这里,我们有一个ChannelInboundAdapter传递给了ChannelHandlerContext。很好

不过,我在这里摘录的方法的前两行跳过了几圈,获得了“正确的” ChannelHandlerContext,这暗示(无论如何对我而言)ChannelHandlerContext某种程度上,提供给该方法的不是该ChannelHandler的一个。

在什么情况下需要这种跳环?

1 个答案:

答案 0 :(得分:1)

感谢您提出来...实际上,这是示例中的“错误”,完全没有必要。只需使用ctx:)

对示例的建议修复:

https://github.com/netty/netty/pull/9276