0
我在我的netty项目中使用ByteToMessageCodec。编码具有以下结构:如何正确使用ByteToMessageCodec.encode和直接缓冲区
protected abstract void encode(
ChannelHandlerContext ctx,
I msg,
ByteBuf out
) throws Exception
在我的情况下msg
是保持从另一信道来了,是要被转发的directBuffer的消息。
我的问题:
- 什么是最好的做法,如果
out.isWritable()
是假的? - 是否
out.writeBytes(myMessage.directBuffer)
复制内存如果out
也是直接缓冲? - 如果确实复制了内存,我可以拨打
ctx.writeAndFlush(myMessage.directBuffer)
来防止内存复制吗?
有一个source by norman maurer讲述这个确切的话题,但它似乎记忆复制缓冲区,并没有回答我所有的问题。
如果我使用填充直接缓冲区的CompositeBuffers,我还会阻止内存副本吗? –
是的,只要这些都是直接的 –