void CreateContextPool(int maxNumberOfConnnections)
        {
            int recvSize = 1024 * 2;
            int sendSize = 1024 * 2;

            _bufferMan = new BufferManager((recvSize + sendSize) * maxNumberOfConnnections, (recvSize + sendSize));
            //Allocate memory for buffers. We are using a separate buffer space for
            //receive and send, instead of sharing the buffer space, like the Microsoft
            //example does.
            _contextPool = new SharedResoucePool <HttpsContext>(maxNumberOfConnnections);
            //------------------------------------------------------------------
            //It is NOT mandatory that you preallocate them or reuse them. But, but it is
            //done this way to illustrate how the API can
            // easily be used to create ***reusable*** objects to increase server performance.
            //------------------------------------------------------------------
            //connection session: socket async = 1:1
            for (int i = maxNumberOfConnnections - 1; i >= 0; --i)
            {
                var context = new HttpsContext(this,
                                               recvSize,
                                               sendSize);
                context.CreatedFromPool = true;
                context.BindReqHandler(_reqHandler); //client handler

                _contextPool.Push(context);
            }
        }
        void CreateContextPool(int maxNumberOfConnnections)
        {
            int recvSize = 1024;
            int sendSize = 1024;
            bufferMan = new BufferManager((recvSize + sendSize) * maxNumberOfConnnections, (recvSize + sendSize));
            //Allocate memory for buffers. We are using a separate buffer space for
            //receive and send, instead of sharing the buffer space, like the Microsoft
            //example does.    
            this.contextPool = new SharedResoucePool<HttpContext>(maxNumberOfConnnections);
            //------------------------------------------------------------------
            //It is NOT mandatory that you preallocate them or reuse them. But, but it is 
            //done this way to illustrate how the API can 
            // easily be used to create ***reusable*** objects to increase server performance. 
            //------------------------------------------------------------------
            //connection session: socket async = 1:1 
            for (int i = maxNumberOfConnnections - 1; i >= 0; --i)
            {
                var context = new HttpContext(this,
                    recvSize,
                   sendSize);

                context.BindReqHandler(this.reqHandler); //client handler

                this.contextPool.Push(context);
            }
        }
 public NewConnectionListener(NewConnListenerSettings setting, Action<Socket> acceptNewConnectionHandler)
 {
     this.setting = setting;
     this.acceptArgsPool = new SharedResoucePool<SocketAsyncEventArgs>(this.setting.MaxAcceptOps);
     this.acceptNewConnectionHandler = acceptNewConnectionHandler;
     // Create connections count enforcer
     this.maxConnEnforcer = new Semaphore(this.setting.MaxConnections, this.setting.MaxConnections);
 }