Home / Class/ AdvancedLeakAwareByteBuf Class — netty Architecture

AdvancedLeakAwareByteBuf Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  202ee4c1_c235_e70f_24a3_9900f0bd91da["AdvancedLeakAwareByteBuf"]
  4b580726_dbb8_48ec_6cda_cd515fa1713e["AdvancedLeakAwareByteBuf.java"]
  202ee4c1_c235_e70f_24a3_9900f0bd91da -->|defined in| 4b580726_dbb8_48ec_6cda_cd515fa1713e
  b3b81687_e783_98a2_c9d4_78e8a9121b78["AdvancedLeakAwareByteBuf()"]
  202ee4c1_c235_e70f_24a3_9900f0bd91da -->|method| b3b81687_e783_98a2_c9d4_78e8a9121b78
  99037518_9631_68f6_6e1c_f2ef030091e9["recordLeakNonRefCountingOperation()"]
  202ee4c1_c235_e70f_24a3_9900f0bd91da -->|method| 99037518_9631_68f6_6e1c_f2ef030091e9
  0f92c079_d3aa_ff5c_bef8_c0c50c4218f8["ByteBuf()"]
  202ee4c1_c235_e70f_24a3_9900f0bd91da -->|method| 0f92c079_d3aa_ff5c_bef8_c0c50c4218f8
  5a560c9e_1ebd_d950_64a9_98c31fee0941["ensureWritable()"]
  202ee4c1_c235_e70f_24a3_9900f0bd91da -->|method| 5a560c9e_1ebd_d950_64a9_98c31fee0941
  da70f10d_0d17_6a87_4568_96f009b159f8["getBoolean()"]
  202ee4c1_c235_e70f_24a3_9900f0bd91da -->|method| da70f10d_0d17_6a87_4568_96f009b159f8
  bedcf900_0e2e_2e37_ba60_9f5cbf0da6f1["getByte()"]
  202ee4c1_c235_e70f_24a3_9900f0bd91da -->|method| bedcf900_0e2e_2e37_ba60_9f5cbf0da6f1
  e8bf5d40_5918_2a5e_82ea_66d833e661dc["getUnsignedByte()"]
  202ee4c1_c235_e70f_24a3_9900f0bd91da -->|method| e8bf5d40_5918_2a5e_82ea_66d833e661dc
  97097d3a_6869_d35a_39ea_a1695a411f23["getShort()"]
  202ee4c1_c235_e70f_24a3_9900f0bd91da -->|method| 97097d3a_6869_d35a_39ea_a1695a411f23
  1e39ea91_84ab_3d6c_9423_1f7d2dae96a7["getUnsignedShort()"]
  202ee4c1_c235_e70f_24a3_9900f0bd91da -->|method| 1e39ea91_84ab_3d6c_9423_1f7d2dae96a7
  bb7f93d0_afea_bcc9_87f1_3af0990a6eac["getMedium()"]
  202ee4c1_c235_e70f_24a3_9900f0bd91da -->|method| bb7f93d0_afea_bcc9_87f1_3af0990a6eac
  3e3f235c_1ae8_c772_4203_b401ae20b0b6["getUnsignedMedium()"]
  202ee4c1_c235_e70f_24a3_9900f0bd91da -->|method| 3e3f235c_1ae8_c772_4203_b401ae20b0b6
  e69a14de_69a5_dd21_8446_28c24f29602a["getInt()"]
  202ee4c1_c235_e70f_24a3_9900f0bd91da -->|method| e69a14de_69a5_dd21_8446_28c24f29602a
  9d8ba73d_f695_4d48_aef4_2110a30facda["getUnsignedInt()"]
  202ee4c1_c235_e70f_24a3_9900f0bd91da -->|method| 9d8ba73d_f695_4d48_aef4_2110a30facda

Relationship Graph

Source Code

buffer/src/main/java/io/netty/buffer/AdvancedLeakAwareByteBuf.java lines 36–974

final class AdvancedLeakAwareByteBuf extends SimpleLeakAwareByteBuf {

    // If set to true we will only record stacktraces for touch(...), release(...) and retain(...) calls.
    private static final String PROP_ACQUIRE_AND_RELEASE_ONLY = "io.netty.leakDetection.acquireAndReleaseOnly";
    private static final boolean ACQUIRE_AND_RELEASE_ONLY;

    private static final InternalLogger logger = InternalLoggerFactory.getInstance(AdvancedLeakAwareByteBuf.class);

    static {
        ACQUIRE_AND_RELEASE_ONLY = SystemPropertyUtil.getBoolean(PROP_ACQUIRE_AND_RELEASE_ONLY, false);

        if (logger.isDebugEnabled()) {
            logger.debug("-D{}: {}", PROP_ACQUIRE_AND_RELEASE_ONLY, ACQUIRE_AND_RELEASE_ONLY);
        }

        ResourceLeakDetector.addExclusions(
                AdvancedLeakAwareByteBuf.class, "touch", "recordLeakNonRefCountingOperation");
    }

    AdvancedLeakAwareByteBuf(ByteBuf buf, ResourceLeakTracker<ByteBuf> leak) {
        super(buf, leak);
    }

    AdvancedLeakAwareByteBuf(ByteBuf wrapped, ByteBuf trackedByteBuf, ResourceLeakTracker<ByteBuf> leak) {
        super(wrapped, trackedByteBuf, leak);
    }

    static void recordLeakNonRefCountingOperation(ResourceLeakTracker<ByteBuf> leak) {
        if (!ACQUIRE_AND_RELEASE_ONLY) {
            leak.record();
        }
    }

    @Override
    public ByteBuf order(ByteOrder endianness) {
        recordLeakNonRefCountingOperation(leak);
        return super.order(endianness);
    }

    @Override
    public ByteBuf slice() {
        recordLeakNonRefCountingOperation(leak);
        return super.slice();
    }

    @Override
    public ByteBuf slice(int index, int length) {
        recordLeakNonRefCountingOperation(leak);
        return super.slice(index, length);
    }

    @Override
    public ByteBuf retainedSlice() {
        recordLeakNonRefCountingOperation(leak);
        return super.retainedSlice();
    }

    @Override
    public ByteBuf retainedSlice(int index, int length) {
        recordLeakNonRefCountingOperation(leak);
        return super.retainedSlice(index, length);
    }

    @Override
    public ByteBuf retainedDuplicate() {
        recordLeakNonRefCountingOperation(leak);
        return super.retainedDuplicate();
    }

    @Override
    public ByteBuf readRetainedSlice(int length) {
        recordLeakNonRefCountingOperation(leak);
        return super.readRetainedSlice(length);
    }

    @Override
    public ByteBuf duplicate() {
        recordLeakNonRefCountingOperation(leak);
        return super.duplicate();
    }

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free