Skip to main content

Class Pool<T>

Holds a collection of so they can be re-used without allocations

Inheritance
System.Object
Inherited Members
Show
Syntax
public class Pool<T>
where T : class
Type Parameters
NameDescription
T

Constructors

Pool(Pool<T>.CreateNewItemNoCount, Int32, Int32, ILogger)

Creates pool, that does not require Buffer size

Declaration
public Pool(Pool<T>.CreateNewItemNoCount createNew, int startPoolSize, int maxPoolSize, ILogger logger = null)
Parameters
TypeNameDescription
Mirage.SocketLayer.Pool.CreateNewItemNoCount<>createNew
System.Int32startPoolSizehow many buffers to create at start
System.Int32maxPoolSizemax number of buffers in pool
ILoggerlogger

Pool(Pool<T>.CreateNewItem, Int32, Int32, Int32, ILogger)

Creates pool where buffer size will be passed to items when created them

Declaration
public Pool(Pool<T>.CreateNewItem createNew, int bufferSize, int startPoolSize, int maxPoolSize, ILogger logger = null)
Parameters
TypeNameDescription
Mirage.SocketLayer.Pool.CreateNewItem<>createNew
System.Int32bufferSizesize of each buffer
System.Int32startPoolSizehow many buffers to create at start
System.Int32maxPoolSizemax number of buffers in pool
ILoggerlogger

Properties

Metrics

Declaration
public PoolMetrics Metrics { get; }

Methods

Configure(Int32, Int32)

sets max pool size and then creates writers up to new start size

Declaration
public void Configure(int startPoolSize, int maxPoolSize)
Parameters
TypeNameDescription
System.Int32startPoolSize
System.Int32maxPoolSize

Take()

Declaration
public T Take()
Returns
TypeDescription
T

Put(T)

Declaration
public void Put(T buffer)
Parameters
TypeNameDescription
Tbuffer