Home / Class/ SimpleLeakAwareByteBuf Class — netty Architecture

SimpleLeakAwareByteBuf Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  55d5031c_7a96_575e_c6ce_c86cf514e160["SimpleLeakAwareByteBuf"]
  88169f3e_d6c2_e1e5_938b_48488fd009e1["SimpleLeakAwareByteBuf.java"]
  55d5031c_7a96_575e_c6ce_c86cf514e160 -->|defined in| 88169f3e_d6c2_e1e5_938b_48488fd009e1
  5a66bf85_7f7d_4cd7_1af2_cdb15dcd0942["SimpleLeakAwareByteBuf()"]
  55d5031c_7a96_575e_c6ce_c86cf514e160 -->|method| 5a66bf85_7f7d_4cd7_1af2_cdb15dcd0942
  6d9ea22d_1395_886f_844c_8158d39d3c93["ByteBuf()"]
  55d5031c_7a96_575e_c6ce_c86cf514e160 -->|method| 6d9ea22d_1395_886f_844c_8158d39d3c93
  77583fa0_3cf2_0cd2_a342_384310f9b04a["release()"]
  55d5031c_7a96_575e_c6ce_c86cf514e160 -->|method| 77583fa0_3cf2_0cd2_a342_384310f9b04a
  9c03c3e2_3f31_a72d_815c_994aa8e57562["closeLeak()"]
  55d5031c_7a96_575e_c6ce_c86cf514e160 -->|method| 9c03c3e2_3f31_a72d_815c_994aa8e57562

Relationship Graph

Source Code

buffer/src/main/java/io/netty/buffer/SimpleLeakAwareByteBuf.java lines 27–227

class SimpleLeakAwareByteBuf extends WrappedByteBuf {

    /**
     * This object's is associated with the {@link ResourceLeakTracker}. When {@link ResourceLeakTracker#close(Object)}
     * is called this object will be used as the argument. It is also assumed that this object is used when
     * {@link ResourceLeakDetector#track(Object)} is called to create {@link #leak}.
     */
    private final ByteBuf trackedByteBuf;
    final ResourceLeakTracker<ByteBuf> leak;

    SimpleLeakAwareByteBuf(ByteBuf wrapped, ByteBuf trackedByteBuf, ResourceLeakTracker<ByteBuf> leak) {
        super(wrapped);
        this.trackedByteBuf = ObjectUtil.checkNotNull(trackedByteBuf, "trackedByteBuf");
        this.leak = ObjectUtil.checkNotNull(leak, "leak");
    }

    SimpleLeakAwareByteBuf(ByteBuf wrapped, ResourceLeakTracker<ByteBuf> leak) {
        this(wrapped, wrapped, leak);
    }

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

    @Override
    public ByteBuf retainedSlice() {
        try {
            return unwrappedDerived(super.retainedSlice());
        } catch (IllegalReferenceCountException irce) {
            ThrowableUtil.addSuppressed(irce, leak.getCloseStackTraceIfAny());
            throw irce;
        }
    }

    @Override
    public ByteBuf retainedSlice(int index, int length) {
        try {
            return unwrappedDerived(super.retainedSlice(index, length));
        } catch (IllegalReferenceCountException irce) {
            ThrowableUtil.addSuppressed(irce, leak.getCloseStackTraceIfAny());
            throw irce;
        }
    }

    @Override
    public ByteBuf retainedDuplicate() {
        try {
            return unwrappedDerived(super.retainedDuplicate());
        } catch (IllegalReferenceCountException irce) {
            ThrowableUtil.addSuppressed(irce, leak.getCloseStackTraceIfAny());
            throw irce;
        }
    }

    @Override
    public ByteBuf readRetainedSlice(int length) {
        try {
            return unwrappedDerived(super.readRetainedSlice(length));
        } catch (IllegalReferenceCountException irce) {
            ThrowableUtil.addSuppressed(irce, leak.getCloseStackTraceIfAny());
            throw irce;
        }
    }

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

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

    @Override
    public ByteBuf readSlice(int length) {
        return newSharedLeakAwareByteBuf(super.readSlice(length));
    }

    @Override

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free