在我的netty客户端中,我有一个只有ChannelInboundHandlerAdapter的初始管道。有了这个处理程序,我处理协议的握手。之后,我需要修改管道以便正常使用。这意味着我需要删除ChannelInboundHandlerAdapter并添加LengthFieldPrepender / LengthFieldBasedFrameDecoder,Encoder / Decoder和Handler。
这样做的最佳方式是什么?
答案 0 :(得分:1)
频道处理程序的上下文包含channel
。您获得管道,并按所需顺序添加新的通道处理程序。最后,删除协商处理程序。
所有这一切都应该在协商通道处理程序内完成,作为最后的步骤。单个通道上的操作以顺序方式在该通道的事件循环(读取“线程”)上执行,因此通道内没有竞争条件。