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

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

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


person user1229043    schedule 18.04.2012    source источник


Ответы (1)


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

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

person melkamo    schedule 18.04.2012
comment
Когда я должен использовать одно вместо другого? Например, в stackoverflow.com/questions/10197714/multiple-handlers-in- netty, похоже, другой обработчик изменяет данные, в то время как асинхронная операция должна считывать данные из исходного буфера. Что мне следует использовать: copy () или duplicate ()? - person user1229043; 18.04.2012
comment
В этом случае, поскольку вы не хотите изменять буфер, вы просто хотите обойтись другим обработчиком на HexDumpProxyInboundHandler, тогда вам нужно будет использовать только duplicate(). Как правило, используйте duplicate(), если у вас нет необходимости в использовании copy(), поскольку он создает полностью новый буфер. - person melkamo; 18.04.2012