package io.netty.buffer;

import io.netty.util.IllegalReferenceCountException;
import io.netty.util.internal.ObjectUtil;
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;

/* JADX INFO: loaded from: classes.dex */
public abstract class AbstractReferenceCountedByteBuf extends AbstractByteBuf {
    private static final AtomicIntegerFieldUpdater<AbstractReferenceCountedByteBuf> refCntUpdater = AtomicIntegerFieldUpdater.newUpdater(AbstractReferenceCountedByteBuf.class, "refCnt");
    private volatile int refCnt;

    public AbstractReferenceCountedByteBuf(int i2) {
        super(i2);
        refCntUpdater.set(this, 1);
    }

    private boolean release0(int i2) {
        AtomicIntegerFieldUpdater<AbstractReferenceCountedByteBuf> atomicIntegerFieldUpdater = refCntUpdater;
        int andAdd = atomicIntegerFieldUpdater.getAndAdd(this, -i2);
        if (andAdd == i2) {
            deallocate();
            return true;
        }
        if (andAdd >= i2 && andAdd - i2 <= andAdd) {
            return false;
        }
        atomicIntegerFieldUpdater.getAndAdd(this, i2);
        throw new IllegalReferenceCountException(andAdd, i2);
    }

    private ByteBuf retain0(int i2) {
        AtomicIntegerFieldUpdater<AbstractReferenceCountedByteBuf> atomicIntegerFieldUpdater = refCntUpdater;
        int andAdd = atomicIntegerFieldUpdater.getAndAdd(this, i2);
        if (andAdd > 0 && andAdd + i2 >= andAdd) {
            return this;
        }
        atomicIntegerFieldUpdater.getAndAdd(this, -i2);
        throw new IllegalReferenceCountException(andAdd, i2);
    }

    public abstract void deallocate();

    @Override // io.netty.util.ReferenceCounted
    public int refCnt() {
        return this.refCnt;
    }

    @Override // io.netty.util.ReferenceCounted
    public boolean release() {
        return release0(1);
    }

    @Override // io.netty.util.ReferenceCounted
    public boolean release(int i2) {
        return release0(ObjectUtil.checkPositive(i2, "decrement"));
    }

    @Override // io.netty.buffer.ByteBuf, io.netty.util.ReferenceCounted
    public ByteBuf retain() {
        return retain0(1);
    }

    @Override // io.netty.buffer.ByteBuf, io.netty.util.ReferenceCounted
    public ByteBuf retain(int i2) {
        return retain0(ObjectUtil.checkPositive(i2, "increment"));
    }

    public final void setRefCnt(int i2) {
        refCntUpdater.set(this, i2);
    }

    @Override // io.netty.buffer.ByteBuf, io.netty.util.ReferenceCounted
    public ByteBuf touch() {
        return this;
    }

    @Override // io.netty.buffer.ByteBuf, io.netty.util.ReferenceCounted
    public ByteBuf touch(Object obj) {
        return this;
    }
}
