Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
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);
        }
Exemplo n.º 5
0
 public SingleServerTaskPool(IServerListener <T> serverLogic, ServerTaskPoolOptions options) : this(serverLogic, serverLogic, options)
 {
 }