@Override protected ByteBuffer newByteBuffer(int capacity, boolean direct) { ByteBuffer buffer = super.newByteBuffer(capacity + 4, direct); buffer.limit(buffer.capacity()); buffer.putInt(tag.incrementAndGet()); ByteBuffer slice = buffer.slice(); BufferUtil.clear(slice); return slice; } }
@Override protected ByteBuffer newByteBuffer(int capacity, boolean direct) { ByteBuffer buffer = super.newByteBuffer(capacity + 4, direct); buffer.limit(buffer.capacity()); buffer.putInt(tag.incrementAndGet()); ByteBuffer slice = buffer.slice(); BufferUtil.clear(slice); return slice; } }
@Override public ByteBuffer newByteBuffer(int capacity, boolean direct) { ByteBuffer buffer = super.newByteBuffer(capacity + 4, direct); buffer.limit(buffer.capacity()); buffer.putInt(tag.incrementAndGet()); ByteBuffer slice = buffer.slice(); BufferUtil.clear(slice); return slice; } }
@Override public ByteBuffer newByteBuffer(int capacity, boolean direct) { ByteBuffer buffer = super.newByteBuffer(capacity + 4, direct); buffer.limit(buffer.capacity()); buffer.putInt(tag.incrementAndGet()); ByteBuffer slice = buffer.slice(); BufferUtil.clear(slice); return slice; } }
@Override public ByteBuffer acquire(int size, boolean direct) { int b = bucketFor(size); ConcurrentMap<Integer, Bucket> buffers = bucketsFor(direct); Bucket bucket = buffers.get(b); if (bucket==null) return newByteBuffer(b*_factor, direct); return bucket.acquire(direct); }
@Override public ByteBuffer acquire(int size, boolean direct) { int b = bucketFor(size); ConcurrentMap<Integer, Bucket> buffers = bucketsFor(direct); Bucket bucket = buffers.get(b); if (bucket==null) return newByteBuffer(b*_factor, direct); return bucket.acquire(direct); }
@Override public ByteBuffer acquire(int size, boolean direct) { int bucket = bucketFor(size); ConcurrentMap<Integer, Queue<ByteBuffer>> buffers = buffersFor(direct); ByteBuffer result = null; Queue<ByteBuffer> byteBuffers = buffers.get(bucket); if (byteBuffers != null) result = byteBuffers.poll(); if (result == null) { int capacity = bucket * factor; result = newByteBuffer(capacity, direct); } BufferUtil.clear(result); return result; }
@Override public ByteBuffer acquire(int size, boolean direct) { int b = bucketFor(size); ConcurrentMap<Integer, Bucket> buffers = bucketsFor(direct); Bucket bucket = buffers.get(b); if (bucket==null) return newByteBuffer(b*_factor, direct); return bucket.acquire(direct); }