为了处理Netty(4.0.34)中任何用户生成的事件,我们在fireUserEventTriggered(event)
上使用ChannelHandlerContext
。
调用管道中下一个处理程序的fireUserEventTriggered
方法userEventTriggered(final ChannelHandlerContext ctx, final Object evt)
时,可以随后处理生成的事件。
但是在下一个处理程序的userEventTriggered
方法中,我无法访问存储在前一个处理程序中的AttributeMap
。 netty是否为用户事件创建了新的上下文?
答案 0 :(得分:2)
AttributeMap是基于每个处理程序定义的。这是一种为给定的处理程序 - 管道组合存储状态的方法,并且由于处理程序可以添加到多个管道,因此给定的处理程序实例甚至可以有多个与其关联的ChannelHandleContexts(如JavaDoc中所指定的) )
当您访问给定处理程序的ChannelHandlerContext
实例时,您将访问此给定管道中 处理程序的状态。
要在处理程序之间传输数据,一种方法是对用户事件建模,以便存储要传输的数据,然后稍后可以在后续处理程序中检索它。