1

netty 4.0.0.AlphaX では、ChannelHandlerContext.readable(boolean)着信トラフィックを一時停止する方法がありました。4.0.0.Beta1 の新しいドキュメントには、次のように記載されています。

4.0 では、各 ChannelHandler には、その ChannelHandlerContext で「読み取り可能」と呼ばれる独自のブール フラグが指定されます。このフラグは、ハンドラーが Netty に受信トラフィックを読み取らせたいかどうかを示します。

問題: 読み取り可能な (ブール値の) メソッドがなくなり、現在はメソッドしか見つかりませんChannelHandlerContext.fireChannelReadSuspended()。トラフィックの再開についてはどうですか?

Beta1 アップグレード後に netty 4 パイプラインで着信トラフィックを一時停止/再開する方法を知っている人はいますか?

ありがとうございました。

注意: 「プロキシ」の例にはまだ TODO があります。

// TODO: Suspend incoming traffic until connected to the remote host.
//       Currently, we just keep the inbound traffic in the client channel's outbound buffer.
4

1 に答える 1

1

これに ChannelOption.AUTO_READ を使用できるようになりました。一時停止したい場合は Channel の ChannelConfig で false に設定し、自動的に読み取りを再開したい場合は true に戻します。

常に手動で読み取りをトリガーすることで、さらに先に進むこともできます。これにより、例としてプロキシを作成するときにメモリフットプリントを最小限に抑えることができます。今朝、プロキシの例[1]を更新して、これが実際に動作していることを示しました。

[1] https://github.com/netty/netty/tree/master/example/src/main/java/io/netty/example/proxy

于 2013-02-17T19:43:18.763 に答える