📄 referencecounteddirectbytebuffer.java
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
// Source File Name: ReferenceCountedDirectByteBuffer.java
package org.gudy.azureus2.core3.util;
import java.nio.ByteBuffer;
// Referenced classes of package org.gudy.azureus2.core3.util:
// DirectByteBuffer, Debug
public class ReferenceCountedDirectByteBuffer extends DirectByteBuffer
{
protected class ReferenceCountedDirectByteBufferDuplicate extends ReferenceCountedDirectByteBuffer
{
final ReferenceCountedDirectByteBuffer this$0;
public ReferenceCountedDirectByteBuffer duplicate(int offset, int length)
{
Debug.out("dup dup");
return null;
}
public void returnToPool()
{
decrementReferenceCount();
}
public void incrementReferenceCount()
{
ReferenceCountedDirectByteBuffer.this.incrementReferenceCount();
}
public void decrementReferenceCount()
{
ReferenceCountedDirectByteBuffer.this.decrementReferenceCount();
}
protected ReferenceCountedDirectByteBufferDuplicate(ByteBuffer owner)
{
this$0 = ReferenceCountedDirectByteBuffer.this;
super(owner);
incrementReferenceCount();
}
}
private DirectByteBuffer basis;
private int ref_count;
protected ReferenceCountedDirectByteBuffer(DirectByteBuffer _basis)
{
this(_basis.getBufferInternal());
basis = _basis;
}
protected ReferenceCountedDirectByteBuffer(ByteBuffer _buffer)
{
super(_buffer);
ref_count = 1;
}
public ReferenceCountedDirectByteBuffer duplicate(int offset, int length)
{
ByteBuffer duplicate = getBufferInternal().duplicate();
duplicate.position(duplicate.position() + offset);
duplicate.limit(duplicate.position() + length);
ReferenceCountedDirectByteBuffer res = new ReferenceCountedDirectByteBufferDuplicate(duplicate);
return res;
}
public void incrementReferenceCount()
{
synchronized (this)
{
ref_count++;
}
}
public void decrementReferenceCount()
{
synchronized (this)
{
ref_count--;
if (ref_count == 0)
basis.returnToPool();
}
}
public int getReferenceCount()
{
return ref_count;
}
public void returnToPool()
{
decrementReferenceCount();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -