コード例 #1
0
        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);
            }
        }
コード例 #2
0
 internal void ReleaseChildConn(HttpContext httpConn)
 {
     if (httpConn != null)
     {
         httpConn.Reset();
         _contextPool.Push(httpConn);
         _newConnListener.NotifyFreeAcceptQuota();
     }
 }
コード例 #3
0
 internal void ReleaseChildConn(HttpsContext httpContext)
 {
     if (httpContext != null)
     {
         httpContext.Reset();
         if (httpContext.CreatedFromPool)
         {
             _contextPool.Push(httpContext);
         }
         _newConnListener.NotifyFreeAcceptQuota();
     }
 }