FrameDecoder использует один экземпляр ChannelBuffer (кумуляция поля) для суммирования всех необработанных данных канала, а затем для декодирования. Есть шансы, когда часть данных канала A всего кадра (кадр уровня приложения) записывается в кумуляцию, затем часть данных канала B всего кадра записывается в кумуляцию. Насколько я понимаю, кумуляция должна использовать ChannelLocal для хранения разных экземпляров для разных каналов, чтобы избежать этой ситуации. Существует ли ситуация, или я неправильно понял код?Является ли FrameDecoder безопасным в ситуации, не связанной с одним подключением?
0
A
ответ
1
Вы должны использовать новый экземпляр класса, который расширяет FrameDecoder для каждого нового соединения (канала). Это верно для всех ChannelHandlers, которые не помечены аннотацией @Sharable [1].
[1] http://netty.io/docs/stable/api/org/jboss/netty/channel/ChannelHandler.Sharable.html