2012-04-13 11 views
5

Ho uno scenario in cui è necessario continuare a scrivere su un Channel. Nel caso in cui non sia in grado di acquisire ulteriori dati (perché i buffer sono pieni ecc.), Devo smettere di scrivere, ma devo riprendere non appena il canale diventa nuovamente scrivibile. Come posso determinare questo istante quando un canale diventa di nuovo scrivibile? Esiste un evento di callback che può essere ignorato? Sto estendendo SimpleChannelUpstreamHandler nel mio gestore di attività commerciali - questo ha un metodo channelInterestChanged() - ma non sono sicuro se questo è l'hook corretto da sfruttare?Channel.is noticazione scritta in Netty

Speravo di evitare l'utilizzo di meccanismi di attesa primitivi basati su thread come wait-notify poiché questi implicano il cambio di contesto. Qualunque modo non bloccante per ottenere questa attesa?

risposta

7

È possibile sovrascrivere il metodo channelInterestChanged().

Qualcosa del genere:

public class MyHandler extends SimpleChannelUpstreamHandler { 
    .... 

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

Questo dovrebbe fare il lavoro

+0

Qual è il metodo più recente in 4.x Netty –

+3

in 4.x Netty è "channelWritabilityChanged (...)" –

Problemi correlati