Example #1
0
        public void Scatter(Envelope <TRequest> request, IGatherReceiver <TResponse> scatter)
        {
            var action  = new DispatchableScatter <TRequest, TResponse>(_action, request, Id, Name, scatter);
            var context = _workerPool.GetThreadPoolDispatcher();

            context.DispatchAction(action);
        }
Example #2
0
        public void Scatter(Envelope <TRequest> request, IGatherReceiver <TResponse> scatter)
        {
            var thread = _workerPool.GetFreeWorkerDispatcher();

            if (thread == null)
            {
                ImmediateParticipant <TRequest, TResponse> .GetResponses(Id, _func, request, scatter, Name);

                return;
            }

            var responseWaiter = new DispatchableScatter <TRequest, TResponse>(_func, request, Id, Name, scatter);

            thread.DispatchAction(responseWaiter);
        }