Home / Class/ Component Class — netty Architecture

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

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