为了账号安全,请及时绑定邮箱和手机立即绑定

frame.retain() 是什么意思

frame.retain() 是什么意思,查了一下和引用计数有关,引用计数是什么东西啊

正在回答

2 回答

类的关系: frame是个 WebSocketFrame 
public abstract class WebSocketFrame extends DefaultByteBufHolder 

而WebSocketFrame 实现:
public class DefaultByteBufHolder implements ByteBufHolder {
    private final ByteBuf data;

    public DefaultByteBufHolder(ByteBuf data) {
        if (data == null) {
            throw new NullPointerException("data");
        } else {
            this.data = data;
        }
    }

    public ByteBuf content() {
        if (this.data.refCnt() <= 0) {
            throw new IllegalReferenceCountException(this.data.refCnt());
        } else {
            return this.data;
        }
    }

    public ByteBufHolder copy() {
        return new DefaultByteBufHolder(this.data.copy());
    }

    public ByteBufHolder duplicate() {
        return new DefaultByteBufHolder(this.data.duplicate());
    }

    public int refCnt() {
        return this.data.refCnt();
    }

    public ByteBufHolder retain() {
        this.data.retain();
        return this;
    }

    public ByteBufHolder retain(int increment) {
        this.data.retain(increment);
        return this;
    }

    public boolean release() {
        return this.data.release();
    }

    public boolean release(int decrement) {
        return this.data.release(decrement);
    }

    public String toString() {
        return StringUtil.simpleClassName(this) + '(' + this.content().toString() + ')';
    }
}

前一次回答里2个类名标注了粗体字,不知何故类名都不见了。

0 回复 有任何疑惑可以回复我~

类的关系:
public abstract class  extends DefaultByteBufHolder
public class  implements ByteBufHolder {
    private final ByteBuf data;

    public DefaultByteBufHolder(ByteBuf data) {
        if (data == null) {
            throw new NullPointerException("data");
        } else {
            this.data = data;
        }
    }

    public ByteBuf content() {
        if (this.data.refCnt() <= 0) {
            throw new IllegalReferenceCountException(this.data.refCnt());
        } else {
            return this.data;
        }
    }

    public ByteBufHolder copy() {
        return new DefaultByteBufHolder(this.data.copy());
    }

    public ByteBufHolder duplicate() {
        return new DefaultByteBufHolder(this.data.duplicate());
    }

    public int refCnt() {
        return this.data.refCnt();
    }

    public ByteBufHolder  {
        this.data.retain();
        return this;
    }

    public ByteBufHolder retain(int increment) {
        this.data.retain(increment);
        return this;
    }

    public boolean release() {
        return this.data.release();
    }

    public boolean release(int decrement) {
        return this.data.release(decrement);
    }

    public String toString() {
        return StringUtil.simpleClassName(this) + '(' + this.content().toString() + ')';
    }
}



abstract ByteBufretain()

Increases the reference count by 1.



0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

frame.retain() 是什么意思

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信