Beispiel #1
0
        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);
        }
Beispiel #2
0
 internal ServerRunner(Func <T> listener, Action <T> handler, int maxQueueSize)
 {
     this.Eventer = new HandoffEvent <T>(listener, handler, maxQueueSize);
     this.handle  = this.Eventer.Handle;
 }