首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ch.write()遍历整个管道

ch.write()遍历整个管道
EN

Stack Overflow用户
提问于 2012-02-01 10:16:03
回答 1查看 213关注 0票数 1

我的应用程序中有两个SimpleChannelHandler

代码语言:javascript
复制
pipeline.addLast("handler1", new FirstHandler());
pipeline.addLast("handler1", new SecondHandler());

两者都实现了messageReceivedwriteRequestedFirstHandler正在进行一些握手操作,并且在握手完成后将被移除,这样就只有SecondHandler留在管道中。

如果我在握手步骤中使用ch.write(...)在通道上写了一些东西,那么它将遍历整个管道(从最后一个处理程序到第一个处理程序)。为什么要调用来自SecondHandlerwriteRequested呢?我预计它只是从我们做ch.write(...)的那一层返回:

代码语言:javascript
复制
         |                   ^
         v                   |
    FirstHandler ---->  FirstHandler

    // Not used in the handshaking step
    SecondHandler ---->  SecondHandler

为什么ch.write(...)要遍历所有层?

EN

回答 1

Stack Overflow用户

发布于 2012-02-01 17:36:43

这是因为,有许多方法可以从处理程序编写代码,从channel.write()到直接使用org.jboss.netty.channel.Channels类。您已经使用了channel.write(),它实际上委托给first。在您的例子中,您必须直接使用通道中的第二个方法。

  1. 正在写入管道中的最后一个下游处理程序

到最近的下游处理程序的public static ChannelFuture write(Channel channel, Object message)..

  • Writing

public static void write(ChannelHandlerContext ctx, ChannelFuture future, Object message)..

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9089849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档