protected override IByteBuffer NewHeapBuffer(int initialCapacity, int maxCapacity) { PoolThreadCache <byte[]> cache = this.threadCache.Value; PoolArena <byte[]> heapArena = cache.HeapArena; IByteBuffer buf; if (heapArena != null) { buf = heapArena.Allocate(cache, initialCapacity, maxCapacity); } else { buf = new UnpooledHeapByteBuffer(this, initialCapacity, maxCapacity); } return(ToLeakAwareBuffer(buf)); }
protected override IByteBuffer NewDirectBuffer(int initialCapacity, int maxCapacity) { PoolThreadCache <byte[]> cache = this.threadCache.Value; PoolArena <byte[]> directArena = cache.DirectArena; IByteBuffer buf; if (directArena != null) { buf = directArena.Allocate(cache, initialCapacity, maxCapacity); } else { buf = UnsafeByteBufferUtil.NewUnsafeDirectByteBuffer(this, initialCapacity, maxCapacity); } return(ToLeakAwareBuffer(buf)); }
protected override IArrayBuffer <T> NewBuffer(int initialCapacity, int capacity) { PoolThreadCache <T> cache = this.threadCache.Value; PoolArena <T> heapArena = cache.HeapArena; ArrayBuffer <T> buffer; if (heapArena != null) { buffer = heapArena.Allocate(cache, initialCapacity, capacity); } else { buffer = new UnpooledArrayBuffer <T>(this, initialCapacity, capacity); } return(ToLeakAwareBuffer(buffer)); }