示例#1
0
        protected unsafe 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));
        }
示例#2
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));
        }