Beispiel #1
0
        public void Request(Envelope <TRequest> envelope, IResponseReceiver <TResponse> request)
        {
            var thread         = _workerPool.GetThreadPoolDispatcher();
            var responseWaiter = new DispatchableRequest <TRequest, TResponse>(_func, envelope, Id, request);

            thread.DispatchAction(responseWaiter);
        }
Beispiel #2
0
        public void Request(Envelope <TRequest> envelope, IResponseReceiver <TResponse> request)
        {
            var thread = _workerPool.GetDispatcher(_threadId, false);

            if (thread == null)
            {
                request.SetNoResponse();
                return;
            }

            var responseWaiter = new DispatchableRequest <TRequest, TResponse>(_func, envelope, Id, request);

            thread.DispatchAction(responseWaiter);
        }
Beispiel #3
0
        public void Request(Envelope <TRequest> envelope, IResponseReceiver <TResponse> request)
        {
            var thread = _workerPool.GetAnyWorkerDispatcher();

            if (thread == null)
            {
                var response = _func.Invoke(envelope);
                request.SetResponse(response);
                return;
            }

            var responseWaiter = new DispatchableRequest <TRequest, TResponse>(_func, envelope, Id, request);

            thread.DispatchAction(responseWaiter);
        }