upm_guru_kcp/Runtime/csharp-kcp/dotNetty-kcp/CodecOutputList.cs

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);
}
}
}