39 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C#
		
	
	
using System.Collections.Generic;
 | 
						|
using DotNetty.Common;
 | 
						|
 | 
						|
namespace dotNetty_kcp
 | 
						|
{
 | 
						|
    public class CodecOutputList<T>:List<T>
 | 
						|
    {
 | 
						|
 | 
						|
        const int DefaultInitialCapacity =16;
 | 
						|
 | 
						|
        static readonly ThreadLocalPool<CodecOutputList<T>> Pool = new ThreadLocalPool<CodecOutputList<T>>(handle => new CodecOutputList<T>(handle));
 | 
						|
 | 
						|
        readonly ThreadLocalPool.Handle returnHandle;
 | 
						|
 | 
						|
        CodecOutputList(ThreadLocalPool.Handle returnHandle)
 | 
						|
        {
 | 
						|
            this.returnHandle = returnHandle;
 | 
						|
        }
 | 
						|
 | 
						|
        public static CodecOutputList<T> NewInstance() => NewInstance(DefaultInitialCapacity);
 | 
						|
 | 
						|
        public static CodecOutputList<T> NewInstance(int minCapacity)
 | 
						|
        {
 | 
						|
            CodecOutputList<T> ret = Pool.Take();
 | 
						|
            if (ret.Capacity < minCapacity)
 | 
						|
            {
 | 
						|
                ret.Capacity = minCapacity;
 | 
						|
            }
 | 
						|
            return ret;
 | 
						|
 | 
						|
        }
 | 
						|
 | 
						|
        public void Return()
 | 
						|
        {
 | 
						|
            this.Clear();
 | 
						|
            this.returnHandle.Release(this);
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |