netty javadocは、setReadableがI/Oスレッドの読み取り操作を一時停止/再開すると説明しています。私の質問は、その間にデータで何が起こっているのかということです。サーバーのチャネルでsetReadable(false)を実行し、反対側のクライアントがソケットにデータを書き込んでいるとしましょう。データはどこに送られますか?バッファがいっぱいになりますか?このバッファを制御したり、オーバーフローしたときに通知を受け取ったりする方法はありますか?
I/Oスレッドの読み取り操作を非同期的に一時停止または再開します。このメソッドは、次のコードへのショートカットです。
int InterestOps = getInterestOps(); if(読み取り可能){setInterestOps(interestOps | OP_READ); } else {setInterestOps(interestOps&〜OP_READ); }
ディスパッチするデータがすでにあるチャネルでsetReadable(false)を呼び出すと、データが取得されることに注意してください。したがって、ハンドラーの1つでchannelOpen内でsetReadable(false)を呼び出すと、クライアントが接続したとおりに書き込む場合でも、そのトンネルでmessageReceivedを取得します。 この問題で説明されているように