2012-04-13 50 views
5

我有一個場景,我需要繼續寫入Channel。如果無法獲取更多數據(由於緩衝區已滿等),我需要停止寫入,但只要通道再次變爲可寫,就需要恢復。當通道再次變爲可寫入時,如何確定此瞬間?是否有一個可以覆蓋的回調事件?我在業務處理程序中擴展了SimpleChannelUpstreamHandler - 這有一個方法channelInterestChanged() - 但不確定這是否是正確的鉤子?Netty中的Channel.isWritable notofication

我曾希望避免使用基本的基於線程的等待機制(如wait-notify),因爲這些機制將涉及上下文切換。任何非阻塞的方式來實現這個等待?

回答

7

您可以覆蓋channelInterestChanged()方法。

類似的東西:

public class MyHandler extends SimpleChannelUpstreamHandler { 
    .... 

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

這應該做的工作

+0

什麼是在網狀4.x的網狀4.x的 – 2015-04-01 18:10:38

+3

較新的方法,它是 「channelWritabilityChanged(......)」 – 2015-04-02 16:30:54