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