初始化视图 ByteBuf 的 maxCapacity 与原生的相同

30 阅读1分钟

public class DuplicatedByteBuf extends AbstractDerivedByteBuf { // 原生 ByteBuf private final ByteBuf buffer;

public DuplicatedByteBuf(ByteBuf buffer) {
    this(buffer, buffer.readerIndex(), buffer.writerIndex());
}

DuplicatedByteBuf(ByteBuf buffer, int readerIndex, int writerIndex) {
    // 初始化视图 ByteBuf 的 maxCapacity 与原生的相同
    super(buffer.maxCapacity());
    // 原生 ByteBuf
    this.buffer = buffer;
    // 视图 ByteBuf 的 readerIndex , writerIndex 也与原生相同
    setIndex(readerIndex, writerIndex);
    markReaderIndex();
    markWriterIndex();
}

@Override
public int capacity() {
    // 视图 ByteBuf 的 capacity 也与原生相同
    return unwrap().capacity();
}

} public abstract class AbstractByteBuf extends ByteBuf { @Override public ByteBuf copy() { // 从原生 ByteBuf 中的 readerIndex 开始,拷贝 readableBytes 个字节到新的 ByteBuf 中 return copy(readerIndex, readableBytes()); } }www.laipuhuo.com/goodsDetail… www.laipuhuo.com/goodsDetail… www.laipuhuo.com/goodsDetail… www.laipuhuo.com/goodsDetail… www.laipuhuo.com/goodsDetail… www.laipuhuo.com/goodsDetail…