/*
 * Decompiled with CFR 0.152.
 */
package com.l7tech.server.util;

import com.l7tech.server.util.AbstractCloseable;
import com.l7tech.server.util.Handle;
import com.l7tech.server.util.ReferenceCounted;
import java.util.concurrent.atomic.AtomicInteger;

public abstract class AbstractReferenceCounted<HT extends Handle>
extends AbstractCloseable
implements ReferenceCounted {
    private final AtomicInteger b = new AtomicInteger(0);

    protected abstract HT createHandle();

    public HT ref() {
        this.b.incrementAndGet();
        return this.createHandle();
    }

    @Override
    public void unref() {
        int n2 = this.b.decrementAndGet();
        if (n2 <= 0) {
            this.close();
        }
    }
}

