public SingleServerTaskPool(Func <T> listener, Action <T> handler, ServerTaskPoolOptions options) { MethodContract.NotNull(listener, nameof(listener)); MethodContract.NotNull(handler, nameof(handler)); MethodContract.NotNull(options, nameof(options)); Setup(listener, handler, options); }
public SingleServerTaskPool(IListener <T> listener, IHandler <T> handler, ServerTaskPoolOptions options) { MethodContract.NotNull(listener, nameof(listener)); MethodContract.NotNull(handler, nameof(handler)); MethodContract.NotNull(options, nameof(options)); Setup((Func <T>)listener.GetContext, (Action <T>)handler.Handle, options); }
private void Setup(Func <T> listener, Action <T> handler, ServerTaskPoolOptions options) { TaskPoolOptions poolOpts = new TaskPoolOptions(); poolOpts.MaxActiveWorkers = options.MaxActiveWorkers; poolOpts.MaxWaitingRequests = options.MaxWaitingAccepts; poolOpts.Timeout = options.Timeout; this.runner = new ServerRunner <T>(listener, handler, options.MaxWaitingRequests); this.pool = ScavengingTaskPoolRunner.CreateScavengingTaskPool(runner.Run, poolOpts); }
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); }
public SingleServerTaskPool(IServerListener <T> serverLogic, ServerTaskPoolOptions options) : this(serverLogic, serverLogic, options) { }