5

我有一个场景,我需要继续写一个Channel. 如果它无法获取更多数据(因为缓冲区已满等),我需要停止写入,但需要在通道再次变为可写时恢复。当通道再次变为可写时,我如何确定这一时刻?是否有一个我可以覆盖的回调事件被触发?我正在扩展SimpleChannelUpstreamHandler我的业务处理程序 - 这有一个方法channelInterestChanged()- 但不确定这是否是正确的钩子?

我希望避免使用原始的基于线程的等待机制,例如等待通知,因为这些将涉及上下文切换。任何非阻塞方式来实现这种等待?

4

1 回答 1

7

您可以覆盖该channelInterestChanged()方法。

像这样的东西:

public class MyHandler extends SimpleChannelUpstreamHandler {
    ....

    @Override
    public void channelInterestChanged(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
        if (e.getChannel().isWritable() {
            .....
        }
    }
}

这应该做的工作

于 2012-04-13T18:34:54.330 回答