Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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));
        }