Beispiel #1
0
        private void InitSocketAsyncPool()
        {
            int netReceiveBufferSize = ServerConfig.NetReceiveBufferSize;

            if (netReceiveBufferSize <= 0)
            {
                netReceiveBufferSize = 1024;
            }

            _BufferManager = new BufferManager(netReceiveBufferSize * ServerConfig.MaxConnects, netReceiveBufferSize);

            try
            {
                _BufferManager.InitBuffer();
            }
            catch (Exception ex)
            {
                Logger.Error(true, "", ex);
                throw;
            }

            _SocketAsyncPool = new SocketAsyncEventArgsProxyPool();

            SocketAsyncEventArgsEx socketEventArg;

            for (int i = 0; i < ServerConfig.MaxConnects; i++)
            {
                socketEventArg = new SocketAsyncEventArgsEx();
                _BufferManager.SetBuffer(socketEventArg);
                socketEventArg.Initialize();//初始化缓存接口
                _SocketAsyncPool.Push(new SocketAsyncEventArgsProxy(socketEventArg));
            }
        }