private void Setup(Func <T> listener, Action <T> handler, ServerTaskPoolOptions options) { TaskPoolOptions poolOpts = new TaskPoolOptions(); poolOpts.MaxActiveWorkers = options.MaxActiveListenerWorkers; poolOpts.MaxWaitingRequests = options.MaxWaitingAccepts; poolOpts.Timeout = options.Timeout; this.eventer = new HandoffEvent <T>(listener, handler, options.MaxWaitingRequests); this.handle = eventer.Handle; this.listenerPool = ScavengingTaskPoolRunner.CreateScavengingTaskPool(eventer.Listen, poolOpts); this.handlerThreads = options.MaxActiveHandlerWorkers; poolOpts = new TaskPoolOptions(); poolOpts.MaxActiveWorkers = this.handlerThreads; poolOpts.MaxWaitingRequests = options.MaxWaitingRequests; poolOpts.Timeout = new Timeout(0); this.handlerPool = new TaskPool(this.Forever, poolOpts); }
internal ServerRunner(Func <T> listener, Action <T> handler, int maxQueueSize) { this.Eventer = new HandoffEvent <T>(listener, handler, maxQueueSize); this.handle = this.Eventer.Handle; }