2016-04-04 3 views
0

Для обработки любых пользовательских событий в Netty (4.0.34) мы используем fireUserEventTriggered(event) по адресу ChannelHandlerContext.События пользователя Netty

При вызове fireUserEventTriggered метод userEventTriggered(final ChannelHandlerContext ctx, final Object evt) обработчика next в конвейере называется местом, где впоследствии может обрабатываться сгенерированное событие.

Однако в методе userEventTriggered следующего обработчика я не могу получить доступ к AttributeMap, который хранится в прохождении обработчика. Создает ли netty новый контекст для пользовательских событий?

+0

Можете ли вы показать свой код, который обращается к карте атрибутов? – Ferrybig

+0

Ответил на ваш вопрос на основе предоставленной вами информации. Я могу улучшить ответ с примерами кода, если вы представите несколько примеров того, чего вы точно пытаетесь достичь. –

ответ

2

АтрибутМарт определяется на основе каждого обработчика. Это способ сохранить состояние для данной комбинации обработчика-конвейера и, поскольку обработчик может быть добавлен к нескольким конвейерам, данный экземпляр обработчика может даже иметь несколько связанных с ним связанных каналов ChannelHandleContext (как указано в JavaDoc)

Когда вы получаете доступ к экземпляру ChannelHandlerContext данного обработчика, вы получаете доступ к состоянию , который обработчик в данном заданном конвейере.

Для передачи данных между обработчиками один из способов состоит в том, чтобы моделировать ваше пользовательское событие, чтобы оно хранило данные, которые вы хотите передать, затем вы можете получить их позже в следующем обработчике.