Home / Class/ AbstractReferenceCounted Class — netty Architecture

AbstractReferenceCounted Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  ae22486e_b39c_ea47_93b0_650b697ec83b["AbstractReferenceCounted"]
  50fdfd74_7b9f_dbf6_a9b3_53a32a794ede["AbstractReferenceCounted.java"]
  ae22486e_b39c_ea47_93b0_650b697ec83b -->|defined in| 50fdfd74_7b9f_dbf6_a9b3_53a32a794ede
  f61eba24_8f88_cc0b_ae98_ab97bf103368["refCnt()"]
  ae22486e_b39c_ea47_93b0_650b697ec83b -->|method| f61eba24_8f88_cc0b_ae98_ab97bf103368
  c2b6fe56_f25b_b680_eca3_dfc0663a9729["setRefCnt()"]
  ae22486e_b39c_ea47_93b0_650b697ec83b -->|method| c2b6fe56_f25b_b680_eca3_dfc0663a9729
  f8d765cd_259d_1b3b_21a7_2f9b314ee96c["ReferenceCounted()"]
  ae22486e_b39c_ea47_93b0_650b697ec83b -->|method| f8d765cd_259d_1b3b_21a7_2f9b314ee96c
  726f06f8_d047_0ffe_1a63_e1770ece8c5a["release()"]
  ae22486e_b39c_ea47_93b0_650b697ec83b -->|method| 726f06f8_d047_0ffe_1a63_e1770ece8c5a
  8e027b94_919a_7380_30f5_270fbdb835f4["handleRelease()"]
  ae22486e_b39c_ea47_93b0_650b697ec83b -->|method| 8e027b94_919a_7380_30f5_270fbdb835f4
  50ed61d2_7f42_5659_4195_e0c06d7b9417["deallocate()"]
  ae22486e_b39c_ea47_93b0_650b697ec83b -->|method| 50ed61d2_7f42_5659_4195_e0c06d7b9417

Relationship Graph

Source Code

common/src/main/java/io/netty/util/AbstractReferenceCounted.java lines 23–77

public abstract class AbstractReferenceCounted implements ReferenceCounted {

    private final RefCnt refCnt = new RefCnt();

    @Override
    public int refCnt() {
        return RefCnt.refCnt(refCnt);
    }

    /**
     * An unsafe operation intended for use by a subclass that sets the reference count of the object directly
     */
    protected void setRefCnt(int refCnt) {
        RefCnt.setRefCnt(this.refCnt, refCnt);
    }

    @Override
    public ReferenceCounted retain() {
        RefCnt.retain(refCnt);
        return this;
    }

    @Override
    public ReferenceCounted retain(int increment) {
        RefCnt.retain(refCnt, increment);
        return this;
    }

    @Override
    public ReferenceCounted touch() {
        return touch(null);
    }

    @Override
    public boolean release() {
        return handleRelease(RefCnt.release(refCnt));
    }

    @Override
    public boolean release(int decrement) {
        return handleRelease(RefCnt.release(refCnt, decrement));
    }

    private boolean handleRelease(boolean result) {
        if (result) {
            deallocate();
        }
        return result;
    }

    /**
     * Called once {@link #refCnt()} is equals 0.
     */
    protected abstract void deallocate();
}

Frequently Asked Questions

What is the AbstractReferenceCounted class?
AbstractReferenceCounted is a class in the netty codebase, defined in common/src/main/java/io/netty/util/AbstractReferenceCounted.java.
Where is AbstractReferenceCounted defined?
AbstractReferenceCounted is defined in common/src/main/java/io/netty/util/AbstractReferenceCounted.java at line 23.

Analyze Your Own Codebase

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

Try Supermodel Free