コード例 #1
0
        //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);
        }
コード例 #2
0
ファイル: BufferManager.cs プロジェクト: haylax/SuperSocket
 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();
 }