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
Source
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