Разве FrameDecoder не безопасен в ситуации не одного соединения? - PullRequest
0 голосов
/ 13 февраля 2012

FrameDecoder использует один экземпляр ChannelBuffer (кумуляция поля) для суммирования необработанных данных всех каналов, а затем передается для декодирования.Есть вероятность, что часть данных канала А всего кадра (фрейма уровня приложения) записывается в кумуляцию, а затем часть данных канала В всего кадра записывается в кумуляцию.Как я понимаю, кумуляция должна использовать ChannelLocal для хранения разных экземпляров для разных каналов, чтобы избежать этой ситуации.Ситуация действительно существует или я неправильно понял код?

1 Ответ

1 голос
/ 13 февраля 2012

Вы должны использовать новый экземпляр класса, который расширяет FrameDecoder для каждого нового соединения (канала).Это верно для всех ChannelHandlers, которые не помечены аннотацией @Sharable [1].

[1] http://netty.io/docs/stable/api/org/jboss/netty/channel/ChannelHandler.Sharable.html

...