2012-04-18 1 views
1

В чем разница между ChannelBuffer.copy() и ChannelBuffer.duplicate()?В чем разница между ChannelBuffer.copy() и ChannelBuffer.duplicate() в netty

В Multiple handlers in netty В итоге я столкнулся с проблемой, которая была исправлена, если я передал копию ChannelBuffer или если я назвал дубликат на ней, но я не уверен, какой из них следует использовать, а javadoc не помогите узнать, какой я должен использовать.

ответ

2

copy() создает совершенно новый буфер (байт для байт).

duplicate() создает буфер, который разделяет данные исходного буфера, но с его собственными индексами.

+0

Когда я должен использовать один над другим? Например, в http://stackoverflow.com/questions/10197714/multiple-handlers-in-netty другой обработчик, похоже, модифицирует данные, в то время как операция async должна считываться из исходного буфера. Должен ли я использовать copy() или duplicate()? – user1229043

+1

В этом случае, поскольку вы не хотите изменять буфер, вам просто нужно обойтись с помощью другого обработчика на 'HexDumpProxyInboundHandler', тогда вам нужно будет использовать' duplicate() '. В принципе, используйте 'duplicate()', если у вас нет необходимости * использовать 'copy()', поскольку он создает полностью новый буфер. – melkamo