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); }