Netty 4中ChannelHandlerContext.sendUpstream的替代品是什么
我正在使用Netty 3将应用程序升级为Netty 4。目前许多处理程序的代码如下所示:Netty 4中ChannelHandlerContext.sendUpstream的替代品是什么,netty,netty4,Netty,Netty4,我正在使用Netty 3将应用程序升级为Netty 4。目前许多处理程序的代码如下所示: public class SomeHandler extends SimpleChannelUpstreamHandler { @Override public void channelOpen(final ChannelHandlerContext ctx, final ChannelStateEvent e) { // do stuff with input // ....
public class SomeHandler extends SimpleChannelUpstreamHandler {
@Override
public void channelOpen(final ChannelHandlerContext ctx, final ChannelStateEvent e) {
// do stuff with input
// ....
// then call the sendUpstream method
ctx.sendUpstream(e);
}
}
我正在寻找如何将其转换为Netty 4。我看到ChannelOutboundHandlerAdapter
现在取代了SimpleChannelUpstreamHandler
,但仍然有几个问题:
ChannelStateEvent
在Netty 4中不再可用,现在接收频道事件的机制是什么在这种情况下,您将覆盖
channelActive(…)
,并调用ctx.fireChannelActive()
以替换sendUpstream(…)
我猜channelActive就是channelOpen的替代品。好。但在channelOpen中,ctx.sendUpstream(e);正在调用…在被重写的channelActive?ctx.fireChannelActive()或override super方法中,该调用的替换将是什么?谢谢!我感觉这一部分处理的是如何在管道中的处理程序之间传播事件。您是否碰巧知道文档中解释这一点的部分?或者其他指南?尝试过谷歌搜索,但找不到任何有用的信息和ChannelPipeline的javadocs。因此,在名为channelActive
的方法中,我需要调用ctx.fireChannelActive()
。。。第一个问题是,为什么我用处理channelActive的方法再次激活channelActive?这不会导致循环吗?显然,这会在下一个通道处理程序中调用channelActive
!我认为前面的API中有ctx.sendUpstream,这使得管道中的下一个组件被激活变得更加明显。只是一个反馈