繁体   English   中英

Netty CompositeByteBuf是直接还是间接

[英]Is netty CompositeByteBuf direct or indirect

我正在使用netty 4.1.0 beta3连续发送2个缓冲区:

channel.writeAndFlush(Unpooled.wrappedBuffer(byteBuf1, byteBuf2));

netty javadoc建议使用Unpooled.wrappedBuffer()。

但是,Unpooled的源代码在创建复合缓冲区时将“ false”作为“ direct”参数传递。

这是否意味着通过套接字发送时,结果缓冲区将被视为间接缓冲区(速度较慢),即使byteBuf1和byteBuf2都是直接缓冲区?

这意味着在扩展复合缓冲区时将不使用直接缓冲区。 如果用于创建复合缓冲区的两个缓冲区都是直接缓冲区,则它肯定是直接缓冲区。

它看起来并不CompositeByteBuf使用创建Unpooled是直接的:

从4.0.32 Unpooled.java开始:

public static ByteBuf wrappedBuffer(int maxNumComponents, ByteBuf... buffers) {
        switch (buffers.length) {
        ...
        default:
            for (ByteBuf b: buffers) {
                if (b.isReadable()) {
                    return new CompositeByteBuf(ALLOC, --> false <--, maxNumComponents, buffers);
                }
            }
        }
        return EMPTY_BUFFER;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM