Home / Class/ MsgHdrMemoryArray Class — netty Architecture

MsgHdrMemoryArray Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  112c3231_d4bd_2970_93ee_a7e32f2d0eec["MsgHdrMemoryArray"]
  d0b19d2c_9037_c23e_2652_a52fc112da18["MsgHdrMemoryArray.java"]
  112c3231_d4bd_2970_93ee_a7e32f2d0eec -->|defined in| d0b19d2c_9037_c23e_2652_a52fc112da18
  2bc6f38f_21ab_5695_0409_9b9c7bcd8a61["MsgHdrMemoryArray()"]
  112c3231_d4bd_2970_93ee_a7e32f2d0eec -->|method| 2bc6f38f_21ab_5695_0409_9b9c7bcd8a61
  efef8567_677b_a824_9461_2f85abb114f8["isFull()"]
  112c3231_d4bd_2970_93ee_a7e32f2d0eec -->|method| efef8567_677b_a824_9461_2f85abb114f8
  ce3ffa0d_7d27_a8a4_47fb_2d818aec66a0["MsgHdrMemory()"]
  112c3231_d4bd_2970_93ee_a7e32f2d0eec -->|method| ce3ffa0d_7d27_a8a4_47fb_2d818aec66a0
  94b2a341_32c2_a29d_29a7_885d42aeb56d["restoreNextHdr()"]
  112c3231_d4bd_2970_93ee_a7e32f2d0eec -->|method| 94b2a341_32c2_a29d_29a7_885d42aeb56d
  e85c969a_99e7_d9b9_7fbc_51252634d6b5["id()"]
  112c3231_d4bd_2970_93ee_a7e32f2d0eec -->|method| e85c969a_99e7_d9b9_7fbc_51252634d6b5
  db15270f_2faf_33c9_58c6_136111d91a61["setId()"]
  112c3231_d4bd_2970_93ee_a7e32f2d0eec -->|method| db15270f_2faf_33c9_58c6_136111d91a61
  99aea286_ed90_f8f9_5351_66655c24daac["clear()"]
  112c3231_d4bd_2970_93ee_a7e32f2d0eec -->|method| 99aea286_ed90_f8f9_5351_66655c24daac
  6a4bd7ac_2ac1_c1de_38a6_2281864fdfb0["length()"]
  112c3231_d4bd_2970_93ee_a7e32f2d0eec -->|method| 6a4bd7ac_2ac1_c1de_38a6_2281864fdfb0
  07307a2c_8dae_399e_3b9d_dd54bf0a8064["release()"]
  112c3231_d4bd_2970_93ee_a7e32f2d0eec -->|method| 07307a2c_8dae_399e_3b9d_dd54bf0a8064
  130e9123_4518_4e6c_53c8_0a9108ce26e6["capacity()"]
  112c3231_d4bd_2970_93ee_a7e32f2d0eec -->|method| 130e9123_4518_4e6c_53c8_0a9108ce26e6

Relationship Graph

Source Code

transport-classes-io_uring/src/main/java/io/netty/channel/uring/MsgHdrMemoryArray.java lines 24–97

final class MsgHdrMemoryArray {
    static final long NO_ID = 0;

    private final MsgHdrMemory[] hdrs;
    private final int capacity;
    private final long[] ids;
    private final CleanableDirectBuffer msgHdrMemoryArrayMemoryCleanable;
    private boolean released;
    private int idx;

    MsgHdrMemoryArray(short capacity) {
        assert capacity >= 0;
        this.capacity = capacity;
        hdrs = new MsgHdrMemory[capacity];
        ids = new long[capacity];
        int total = MsgHdrMemory.MSG_HDR_SIZE * capacity;
        this.msgHdrMemoryArrayMemoryCleanable = Buffer.allocateDirectBufferWithNativeOrder(total);
        ByteBuffer msgHdrMemoryArrayMemory = msgHdrMemoryArrayMemoryCleanable.buffer();
        for (int i = 0; i < hdrs.length; i++) {
            hdrs[i] = new MsgHdrMemory((short) i, msgHdrMemoryArrayMemory);
            ids[i] = NO_ID;
        }
    }

    boolean isFull() {
        return idx == hdrs.length;
    }

    MsgHdrMemory nextHdr() {
        if (isFull()) {
            return null;
        }
        return hdrs[idx++];
    }

    void restoreNextHdr(MsgHdrMemory hdr) {
        assert hdr.idx() == idx - 1;
        idx--;
    }

    MsgHdrMemory hdr(int idx) {
        return hdrs[idx];
    }

    long id(int idx) {
        return ids[idx];
    }

    void setId(int idx, long id) {
        ids[idx] = id;
    }

    void clear() {
        Arrays.fill(ids, 0, idx, NO_ID);
        idx = 0;
    }

    int length() {
        return idx;
    }

    void release() {
        assert !released;
        released = true;
        for (MsgHdrMemory hdr: hdrs) {
            hdr.release();
        }
        msgHdrMemoryArrayMemoryCleanable.clean();
    }

    int capacity() {
        return capacity;
    }
}

Frequently Asked Questions

What is the MsgHdrMemoryArray class?
MsgHdrMemoryArray is a class in the netty codebase, defined in transport-classes-io_uring/src/main/java/io/netty/channel/uring/MsgHdrMemoryArray.java.
Where is MsgHdrMemoryArray defined?
MsgHdrMemoryArray is defined in transport-classes-io_uring/src/main/java/io/netty/channel/uring/MsgHdrMemoryArray.java at line 24.

Analyze Your Own Codebase

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

Try Supermodel Free