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();
}
};
Source
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