Component Class — netty Architecture
Architecture documentation for the Component class in CompositeByteBuf.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 955a3a16_0bd7_3ff1_10d7_dd2808491bb6["Component"] cd81e19c_f257_609a_ecbe_84b481e22251["CompositeByteBuf.java"] 955a3a16_0bd7_3ff1_10d7_dd2808491bb6 -->|defined in| cd81e19c_f257_609a_ecbe_84b481e22251 c43bd811_d298_9424_d7d9_f55cb58a89e1["Component()"] 955a3a16_0bd7_3ff1_10d7_dd2808491bb6 -->|method| c43bd811_d298_9424_d7d9_f55cb58a89e1 f3b514e7_34c9_d455_4036_4e2307c4dfb3["srcIdx()"] 955a3a16_0bd7_3ff1_10d7_dd2808491bb6 -->|method| f3b514e7_34c9_d455_4036_4e2307c4dfb3 d3be0b0f_c8ba_dc16_970f_8a5302e005af["idx()"] 955a3a16_0bd7_3ff1_10d7_dd2808491bb6 -->|method| d3be0b0f_c8ba_dc16_970f_8a5302e005af 79a833c5_92f9_7a41_19fc_646ea49cfaa3["length()"] 955a3a16_0bd7_3ff1_10d7_dd2808491bb6 -->|method| 79a833c5_92f9_7a41_19fc_646ea49cfaa3 b9fb9df6_b0c5_dd85_0821_2d55314931d2["reposition()"] 955a3a16_0bd7_3ff1_10d7_dd2808491bb6 -->|method| b9fb9df6_b0c5_dd85_0821_2d55314931d2 a7db8e64_9b44_a58d_6b49_ce488761369b["transferTo()"] 955a3a16_0bd7_3ff1_10d7_dd2808491bb6 -->|method| a7db8e64_9b44_a58d_6b49_ce488761369b cade9162_c13e_be43_995e_ef16e3f8fc4a["ByteBuf()"] 955a3a16_0bd7_3ff1_10d7_dd2808491bb6 -->|method| cade9162_c13e_be43_995e_ef16e3f8fc4a 319eb0c4_1cd9_8f60_111f_34ade4936253["ByteBuffer()"] 955a3a16_0bd7_3ff1_10d7_dd2808491bb6 -->|method| 319eb0c4_1cd9_8f60_111f_34ade4936253 eb3f4ddf_0801_65e8_e5f7_a81b73fef7a2["free()"] 955a3a16_0bd7_3ff1_10d7_dd2808491bb6 -->|method| eb3f4ddf_0801_65e8_e5f7_a81b73fef7a2
Relationship Graph
Source Code
buffer/src/main/java/io/netty/buffer/CompositeByteBuf.java lines 1913–1985
private static final class Component {
final ByteBuf srcBuf; // the originally added buffer
final ByteBuf buf; // srcBuf unwrapped zero or more times
int srcAdjustment; // index of the start of this CompositeByteBuf relative to srcBuf
int adjustment; // index of the start of this CompositeByteBuf relative to buf
int offset; // offset of this component within this CompositeByteBuf
int endOffset; // end offset of this component within this CompositeByteBuf
private ByteBuf slice; // cached slice, may be null
Component(ByteBuf srcBuf, int srcOffset, ByteBuf buf, int bufOffset,
int offset, int len, ByteBuf slice) {
this.srcBuf = srcBuf;
this.srcAdjustment = srcOffset - offset;
this.buf = buf;
this.adjustment = bufOffset - offset;
this.offset = offset;
this.endOffset = offset + len;
this.slice = slice;
}
int srcIdx(int index) {
return index + srcAdjustment;
}
int idx(int index) {
return index + adjustment;
}
int length() {
return endOffset - offset;
}
void reposition(int newOffset) {
int move = newOffset - offset;
endOffset += move;
srcAdjustment -= move;
adjustment -= move;
offset = newOffset;
}
// copy then release
void transferTo(ByteBuf dst) {
dst.writeBytes(buf, idx(offset), length());
free();
}
ByteBuf slice() {
ByteBuf s = slice;
if (s == null) {
slice = s = srcBuf.slice(srcIdx(offset), length());
}
return s;
}
ByteBuf duplicate() {
return srcBuf.duplicate();
}
ByteBuffer internalNioBuffer(int index, int length) {
// Some buffers override this so we must use srcBuf
return srcBuf.internalNioBuffer(srcIdx(index), length);
}
void free() {
slice = null;
// Release the original buffer since it may have a different
// refcount to the unwrapped buf (e.g. if PooledSlicedByteBuf)
srcBuf.release();
}
}
Source
Frequently Asked Questions
What is the Component class?
Component is a class in the netty codebase, defined in buffer/src/main/java/io/netty/buffer/CompositeByteBuf.java.
Where is Component defined?
Component is defined in buffer/src/main/java/io/netty/buffer/CompositeByteBuf.java at line 1913.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free