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); } }
internal void ReleaseChildConn(HttpContext httpConn) { if (httpConn != null) { httpConn.Reset(); _contextPool.Push(httpConn); _newConnListener.NotifyFreeAcceptQuota(); } }
internal void ReleaseChildConn(HttpsContext httpContext) { if (httpContext != null) { httpContext.Reset(); if (httpContext.CreatedFromPool) { _contextPool.Push(httpContext); } _newConnListener.NotifyFreeAcceptQuota(); } }