Home / Class/ CompositeByteBuf Class — netty Architecture

CompositeByteBuf Class — netty Architecture

Architecture documentation for the CompositeByteBuf class in CompositeByteBuf.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6["CompositeByteBuf"]
  cd81e19c_f257_609a_ecbe_84b481e22251["CompositeByteBuf.java"]
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6 -->|defined in| cd81e19c_f257_609a_ecbe_84b481e22251
  e9920c4e_d91d_be1d_34e0_9c0ddc060f5d["CompositeByteBuf()"]
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6 -->|method| e9920c4e_d91d_be1d_34e0_9c0ddc060f5d
  9b8cc1fe_dde8_4b27_1f91_fe0c92c9afdc["newCompArray()"]
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6 -->|method| 9b8cc1fe_dde8_4b27_1f91_fe0c92c9afdc
  59bfffdc_1653_76b9_674e_0f9e0a0ace57["checkForOverflow()"]
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6 -->|method| 59bfffdc_1653_76b9_674e_0f9e0a0ace57
  59aa513a_9196_9707_e719_00f253da08eb["addComponent0()"]
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6 -->|method| 59aa513a_9196_9707_e719_00f253da08eb
  ab122f34_311d_08f3_ea76_dfd965d4ae24["ByteBuf()"]
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6 -->|method| ab122f34_311d_08f3_ea76_dfd965d4ae24
  1c7dc7e4_3e5b_2e66_7101_f504f6948f2b["Component()"]
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6 -->|method| 1c7dc7e4_3e5b_2e66_7101_f504f6948f2b
  52131157_ab49_bbc0_4b2f_f75786fd3e51["addComponents0()"]
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6 -->|method| 52131157_ab49_bbc0_4b2f_f75786fd3e51
  aeb2b672_c94f_1ad1_8629_38701e5bcdc7["consolidateIfNeeded()"]
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6 -->|method| aeb2b672_c94f_1ad1_8629_38701e5bcdc7
  fa74dd51_3f34_2d56_ed8e_41955da7b338["checkComponentIndex()"]
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6 -->|method| fa74dd51_3f34_2d56_ed8e_41955da7b338
  4eda92aa_c086_a58e_2291_b7e84f09b571["updateComponentOffsets()"]
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6 -->|method| 4eda92aa_c086_a58e_2291_b7e84f09b571
  448738c4_a7f0_5b68_0561_7fe681451a3c["iterator()"]
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6 -->|method| 448738c4_a7f0_5b68_0561_7fe681451a3c
  f50369e1_0d88_4063_7d0a_03ac290b1e6d["forEachByteAsc0()"]
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6 -->|method| f50369e1_0d88_4063_7d0a_03ac290b1e6d
  feafa28f_9555_7306_d9ec_7f16713f1981["forEachByteDesc0()"]
  6b8e4d93_5aed_4ff7_ccdd_9c021b0fe7d6 -->|method| feafa28f_9555_7306_d9ec_7f16713f1981

Relationship Graph

Source Code

buffer/src/main/java/io/netty/buffer/CompositeByteBuf.java lines 49–2400

public class CompositeByteBuf extends AbstractReferenceCountedByteBuf implements Iterable<ByteBuf> {

    private static final ByteBuffer EMPTY_NIO_BUFFER = Unpooled.EMPTY_BUFFER.nioBuffer();
    private static final Iterator<ByteBuf> EMPTY_ITERATOR = Collections.<ByteBuf>emptyList().iterator();

    private final ByteBufAllocator alloc;
    private final boolean direct;
    private final int maxNumComponents;

    private int componentCount;
    private Component[] components; // resized when needed

    private boolean freed;

    private CompositeByteBuf(ByteBufAllocator alloc, boolean direct, int maxNumComponents, int initSize) {
        super(AbstractByteBufAllocator.DEFAULT_MAX_CAPACITY);

        this.alloc = ObjectUtil.checkNotNull(alloc, "alloc");
        if (maxNumComponents < 1) {
            throw new IllegalArgumentException(
                    "maxNumComponents: " + maxNumComponents + " (expected: >= 1)");
        }

        this.direct = direct;
        this.maxNumComponents = maxNumComponents;
        components = newCompArray(initSize, maxNumComponents);
    }

    public CompositeByteBuf(ByteBufAllocator alloc, boolean direct, int maxNumComponents) {
        this(alloc, direct, maxNumComponents, 0);
    }

    public CompositeByteBuf(ByteBufAllocator alloc, boolean direct, int maxNumComponents, ByteBuf... buffers) {
        this(alloc, direct, maxNumComponents, buffers, 0);
    }

    CompositeByteBuf(ByteBufAllocator alloc, boolean direct, int maxNumComponents,
            ByteBuf[] buffers, int offset) {
        this(alloc, direct, maxNumComponents, buffers.length - offset);

        addComponents0(false, 0, buffers, offset);
        consolidateIfNeeded();
        setIndex0(0, capacity());
    }

    public CompositeByteBuf(
            ByteBufAllocator alloc, boolean direct, int maxNumComponents, Iterable<ByteBuf> buffers) {
        this(alloc, direct, maxNumComponents,
                buffers instanceof Collection ? ((Collection<ByteBuf>) buffers).size() : 0);

        addComponents(false, 0, buffers);
        setIndex(0, capacity());
    }

    // support passing arrays of other types instead of having to copy to a ByteBuf[] first
    interface ByteWrapper<T> {
        ByteBuf wrap(T bytes);
        boolean isEmpty(T bytes);
    }

    static final ByteWrapper<byte[]> BYTE_ARRAY_WRAPPER = new ByteWrapper<byte[]>() {
        @Override
        public ByteBuf wrap(byte[] bytes) {
            return Unpooled.wrappedBuffer(bytes);
        }
        @Override
        public boolean isEmpty(byte[] bytes) {
            return bytes.length == 0;
        }
    };

    static final ByteWrapper<ByteBuffer> BYTE_BUFFER_WRAPPER = new ByteWrapper<ByteBuffer>() {
        @Override
        public ByteBuf wrap(ByteBuffer bytes) {
            return Unpooled.wrappedBuffer(bytes);
        }
        @Override
        public boolean isEmpty(ByteBuffer bytes) {
            return !bytes.hasRemaining();
        }
    };

Frequently Asked Questions

What is the CompositeByteBuf class?
CompositeByteBuf is a class in the netty codebase, defined in buffer/src/main/java/io/netty/buffer/CompositeByteBuf.java.
Where is CompositeByteBuf defined?
CompositeByteBuf is defined in buffer/src/main/java/io/netty/buffer/CompositeByteBuf.java at line 49.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free