private async Task <TResponse> DoRequestAsync <TRequest, TResponse>(IDomainRequest <TRequest, TResponse> request, ILifetimeScope lifetimeScope) where TRequest : IDomainRequest <TRequest, TResponse> where TResponse : IDomainResponse { var foundHandlers = GetRequestHandlers(request.GetType()).ToList(); if (foundHandlers.Any()) { foreach (var handler in foundHandlers) { var response = ExecuteRequestHandler(request, handler, lifetimeScope); if (response != null) { return(response); } } } foundHandlers = GetAsyncEventHandlers(request.GetType()).ToList(); if (foundHandlers.Any()) { foreach (var handler in foundHandlers) { var response = await ExecuteRequestHandlerAsync(request, handler, lifetimeScope).ConfigureAwait(continueOnCapturedContext: false); if (response != null) { return(response); } } } return(default(TResponse)); }
private static TResponse CallRequestHandler <TRequest, TResponse>(IDomainRequest <TRequest, TResponse> request, Type handlerType, ILifetimeScope lifetimeScope) where TRequest : IDomainRequest <TRequest, TResponse> where TResponse : IDomainResponse { var handler = (dynamic)lifetimeScope.Resolve(handlerType); return(handler.Handle((dynamic)request)); }
public async Task <TResponse> RequestAsync <TRequest, TResponse>(IDomainRequest <TRequest, TResponse> request) where TRequest : IDomainRequest <TRequest, TResponse> where TResponse : IDomainResponse { if (_childScopeBehaviour == MessagePublishingChildScopeBehaviour.ChildScopePerMessage) { using (var childLifetimeScope = _lifetimeScope.BeginLifetimeScope()) { return(await DoRequestAsync(request, childLifetimeScope).ConfigureAwait(continueOnCapturedContext: false)); } } else { return(await DoRequestAsync(request, _lifetimeScope).ConfigureAwait(continueOnCapturedContext: false)); } }
private TResponse ExecuteRequestHandler <TRequest, TResponse>(IDomainRequest <TRequest, TResponse> request, Type handlerType, ILifetimeScope lifetimeScope) where TRequest : IDomainRequest <TRequest, TResponse> where TResponse : IDomainResponse { if (_childScopeBehaviour == MessagePublishingChildScopeBehaviour.ChildScopePerHandler) { using (var childLifetimeScope = _lifetimeScope.BeginLifetimeScope()) { return(CallRequestHandler(request, handlerType, childLifetimeScope)); } } else { return(CallRequestHandler(request, handlerType, lifetimeScope)); } }
public Task <IEnumerable <TResponse> > MulticastRequestAsync <TRequest, TResponse>(IDomainRequest <TRequest, TResponse> request) where TRequest : IDomainRequest <TRequest, TResponse> where TResponse : IDomainResponse { return(_requestBroker.MulticastRequestAsync(request)); }
public Task <TResponse> RequestAsync <TRequest, TResponse>(IDomainRequest <TRequest, TResponse> request) where TRequest : IDomainRequest <TRequest, TResponse> where TResponse : IDomainResponse { return(_requestBroker.RequestAsync(request)); }
public static async Task <IDomainResponse> DispatchAsync(IDomainRequest request) { return(await Task.Run(() => Dispatch(request)));; }
public static IDomainResponse Dispatch(IDomainRequest request) { return(_Handlers[request.GetType()](request)); }
public static async Task <T> DispatchAsync <T>(IDomainRequest request) where T : IDomainResponse { return(await Task.Run(() => Dispatch <T>(request)));; }
public static T Dispatch <T>(IDomainRequest request) where T : IDomainResponse { return((T)_Handlers[request.GetType()](request)); }
private static async Task <TResponse> CallRequestHandlerAsync <TRequest, TResponse>(IDomainRequest <TRequest, TResponse> request, Type handlerType, ILifetimeScope lifetimeScope) where TRequest : IDomainRequest <TRequest, TResponse> where TResponse : IDomainResponse { var handler = (dynamic)lifetimeScope.Resolve(handlerType); return(await handler.HandleAsync((dynamic)request).ConfigureAwait(continueOnCapturedContext: false)); }
private async Task <TResponse> ExecuteRequestHandlerAsync <TRequest, TResponse>(IDomainRequest <TRequest, TResponse> request, Type handlerType, ILifetimeScope lifetimeScope) where TRequest : IDomainRequest <TRequest, TResponse> where TResponse : IDomainResponse { if (_childScopeBehaviour == MessagePublishingChildScopeBehaviour.ChildScopePerHandler) { using (var childLifetimeScope = _lifetimeScope.BeginLifetimeScope()) { return(await CallRequestHandlerAsync(request, handlerType, childLifetimeScope).ConfigureAwait(continueOnCapturedContext: false)); } } else { return(await CallRequestHandlerAsync(request, handlerType, lifetimeScope).ConfigureAwait(continueOnCapturedContext: false)); } }
public async Task <IEnumerable <TResponse> > DoMulticastRequestAsync <TRequest, TResponse>(IDomainRequest <TRequest, TResponse> request, ILifetimeScope lifetimeScope) where TRequest : IDomainRequest <TRequest, TResponse> where TResponse : IDomainResponse { var responses = new List <TResponse>(); var foundHandlers = GetRequestHandlers(request.GetType()).ToList(); if (foundHandlers.Any()) { foreach (var handler in foundHandlers) { var response = ExecuteRequestHandler(request, handler, lifetimeScope); if (response != null) { responses.Add(response); } } } foundHandlers = GetAsyncEventHandlers(request.GetType()).ToList(); if (foundHandlers.Any()) { foreach (var handler in foundHandlers) { var response = await ExecuteRequestHandlerAsync(request, handler, lifetimeScope).ConfigureAwait(continueOnCapturedContext: false); if (response != null) { responses.Add(response); } } } return(responses); }