forked from MagicBane/Server
Initial Repository Push
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
||||
// Magicbane Emulator Project © 2013 - 2022
|
||||
// www.magicbane.com
|
||||
|
||||
|
||||
package engine.pooling;
|
||||
|
||||
import org.pmw.tinylog.Logger;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
public class ByteBufferPool extends LinkedObjectPool<ByteBuffer> {
|
||||
|
||||
private final int defaultBufferSize;
|
||||
|
||||
public ByteBufferPool(int defaultBufferSize) {
|
||||
super(ObjectPool.DEFAULT_SIZE);
|
||||
this.defaultBufferSize = defaultBufferSize;
|
||||
}
|
||||
|
||||
public ByteBufferPool(int size, int defaultBufferSize) {
|
||||
super(size);
|
||||
this.defaultBufferSize = defaultBufferSize;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ByteBuffer makeNewObject() {
|
||||
return ByteBuffer.allocate(defaultBufferSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void resetObject(ByteBuffer obj) {
|
||||
obj.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ByteBuffer get() {
|
||||
// Logger.debug("ByteBufferPool.get() BB.capacity(): " + bb.capacity()
|
||||
// + ", bb.pos(): " + bb.position() + ". Pool.size() is now: "
|
||||
// + this.getPoolSize());
|
||||
return super.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void put(ByteBuffer bb) {
|
||||
if(bb.isDirect())
|
||||
super.put(bb);
|
||||
// Logger.debug("ByteBufferPool.put() BB.capacity(): " + bb.capacity()
|
||||
// + ", bb.pos(): " + bb.position() + ". Pool.size() is now: "
|
||||
// + this.getPoolSize());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handlePoolExhaustion() {
|
||||
Logger.debug("ByteBufferPool(" + defaultBufferSize
|
||||
+ ") exhausted, making more objects.");
|
||||
|
||||
// If none exist, make (and pool) a few
|
||||
// Dont sync the loop, let the makeNewObject()
|
||||
// call return before locking the pool object
|
||||
for (int i = 0; i < 5; ++i)
|
||||
this.makeAndAdd();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user