//Attach default receive buffer pool definition private List <IBufferPoolConfig> AttachReceiveBufferPool(IEnumerable <IBufferPoolConfig> bufferPools, IServerConfig config) { //The buffer expading trend: 1, 2, 4, 8, which is 15 totaly var initialCount = Math.Min(Math.Max(config.MaxConnectionNumber / 15, 100), config.MaxConnectionNumber); var bufferDefinitions = new List <IBufferPoolConfig>(); IBufferPoolConfig preDefinedReceiveBufferPool = null; if (bufferPools != null && bufferPools.Any()) { preDefinedReceiveBufferPool = bufferPools.FirstOrDefault(p => p.BufferSize == config.ReceiveBufferSize); bufferDefinitions.AddRange(bufferPools.Where(p => p != preDefinedReceiveBufferPool)); } var finalInitialCount = initialCount; if (preDefinedReceiveBufferPool != null) { finalInitialCount += preDefinedReceiveBufferPool.InitialCount; } bufferDefinitions.Add(new BufferPoolConfig(config.ReceiveBufferSize, finalInitialCount)); return(bufferDefinitions); }
public BufferManager(IBufferPoolConfig[] defintion) { m_Pools = (defintion != null && defintion.Length > 0) ? defintion.Select(d => new BufferPool(d.BufferSize, d.InitialCount)).ToArray() : m_DefaultDefinition.Select(d => new BufferPool(d.BufferSize, d.InitialCount)).ToArray(); }