違いがありますか? ctx.close
はctx.channel.close
のちょうど短いバージョンですか?Netty 4では、ctx.closeとctx.channel.closeの違いは何ですか?
12
A
答えて
22
パイプラインに3つのハンドラがあり、それらがすべてclose()
オペレーションをインターセプトし、その中にctx.close()
をコールしたとします。
ChannelPipeline p = ...;
p.addLast("A", new SomeHandler());
p.addLast("B", new SomeHandler());
p.addLast("C", new SomeHandler());
...
public class SomeHandler extends ChannelOutboundHandlerAdapter {
@Override
public void close(ChannelHandlerContext ctx, ChannelPromise promise) {
ctx.close(promise);
}
}
Channel.close()
はC.close()
、B.close()
、A.close()
をトリガし、次にチャネルを閉じます。ChannelPipeline.context("C").close()
は、B.close()
,A.close()
をトリガーし、チャネルを閉じます。ChannelPipeline.context("B").close()
は、A.close()
をトリガーし、チャネルを閉じます。ChannelPipeline.context("A").close()
はチャネルを閉じます。ハンドラは呼び出されません。
したがって、Channel.close()
とChannelHandlerContext.close()
を使用する必要がありますか?親指のルールは次のとおりです。
- あなたは
ChannelHandler
としたいctx.close()
を呼び出し、ハンドラ内でチャネルを閉じるを書いている場合。一般的に - あなたはハンドラ外からチャネルをクローズしている場合(例えば、あなたがI/Oスレッドではありませんバックグラウンドスレッドを持っている、とあなたがそのスレッドからの接続をクローズします。)
17
ctx.close()はChannelHandlerContextのポイントからChannelPipelineを流れ始め、ctx.channel()。close()は常にChannelPipelineの末尾から開始します。
関連する問題
- 1. MVC 4では、Microsoft.AspNet.MvcとSystem.Web.Mvcの違いは何ですか?
- 2. .NET 4のEnumerateFilesとEnumerateFileSystemEntriesの違いは何ですか?
- 3. ExtJs 4のTreeGridとTreePanelコンポーネントの違いは何ですか?
- 4. iPhoneとiPhone 4の開発の違いは何ですか?
- 5. rubyのstring.split( "、" -1)とstring.split( "、"、 - 4)の違いは何ですか?
- 6. Rails 4 - request.original_fullpathとrequest.fullpathの違いは何ですか?
- 7. RESTEasyのNettyのバージョンは何ですか?
- 8. jQuery ready()の4つのバリエーション - 違いは何ですか?
- 9. difftimeと ' - 'の違いは何ですか?
- 10. A`と ``の違いは何ですか[:] `
- 11. `&`と `ref`の違いは何ですか?
- 12. バックスティックと$()の違いは何ですか?
- 13. `##`と `hashCode`の違いは何ですか?
- 14. "$^N"と "$ +"の違いは何ですか?
- 15. #{} $ {}と%{}の違いは何ですか?
- 16. typedefとの違いは何ですか?
- 17. %Qと%{}の違いは何ですか?
- 18. `==`と `is`の違いは何ですか?
- 19. $と$$の違いは何ですか?
- 20. NodeJS:「./ ..」と「..」の違いは何ですか?
- 21. $ dirtyと$ invalid:違いは何ですか?
- 22. Backbone.jsとPusherapp - 違いは何ですか?
- 23. libspeとlibspe2?違いは何ですか?
- 24. SO_TIMEOUTとCONNECT_TIMEOUT_MILLISは、NettyのChannelOptionで何を意味しますか?
- 25. XNA 4のパイプラインアセンブリとは何ですか?
- 26. decodeURIComponentとunescapeの違いは何ですか?unescapeの問題は何ですか?
- 27. Androidでは、MotionEventのgetAction()とgetActionMasked()の違いは何ですか?
- 28. Netty 4はどれくらい安定していますか?
- 29. GoogleのDremelとは何ですか? Mapreduceとの違いは?
- 30. 4'd表記とは何ですか?
、CTX .channel.closeを使用する必要がありますか? ctx.closeを使用すべき例を挙げることができますか? –
一般に、ChannelPipeline内の "後の" ChannelHandlerがcloseイベントを気にしないことが分かっているときは、ctx.close()を使用できます。 –
回答が更新されました。 – trustin