public virtual async Task <Response <TResponse> > ExecuteAsync( TRequest request, System.Threading.CancellationToken cancellationToken, IRequestHandlerExecutionContext executionContext) { var options = this.Options ?? RequestHandlerFallbackOptions.GetInstance(); Task <Response <TResponse> > task; try { task = this.HandleAsync(request, cancellationToken, executionContext); } catch (System.Exception error) { options.LogError?.Invoke(error); throw; } try { if (task is null) { //return default(TResponse); throw new System.InvalidOperationException(); } else { var result = await task.ConfigureAwait(true); return(result); } } catch (System.Exception error) { options.LogError?.Invoke(error); throw; } }
public Task <Response <TResponse> > ExecuteAsync( TRequest request, CancellationToken cancellationToken, IRequestHandlerExecutionContext executionContext, IRequestHandler <TRequest, TResponse> next) { return(next.ExecuteAsync(request, cancellationToken, executionContext)); }
public Task <Response <PlayResponse> > ExecuteAsync( PlayRequest request, CancellationToken cancellationToken, IRequestHandlerExecutionContext executionContext) { var responce = this._PlayService.Add(request); return(Response.FromResultOkTask <PlayResponse>(responce)); }
public virtual async Task <Response <object?> > ExecuteAsync( IRequestBase request, System.Threading.CancellationToken cancellationToken, IRequestHandlerExecutionContext executionContext) { // request.GetType(); await Task.CompletedTask; throw new Exception(); }
protected override Task <Response <ResponseGna> > HandleAsync( RequestGna request, CancellationToken cancellationToken, IRequestHandlerExecutionContext executionContext) { var result = request.A + request.B; return(Response.FromResultOkTask <ResponseGna>(new ResponseGna() { Sum = result })); }
public IRootRequestHandler <TResponse> GetRequestHandler <TResponse>( IRequest <TResponse> request, IRequestHandlerExecutionContext executionContext) { if (request is null) { throw new ArgumentNullException(nameof(request)); } var requestType = request.GetType(); var solverTranslate = this.GetSolverTranslate <TResponse>(requestType); var rootRequestHandler = solverTranslate.GetRootRequestHandler(request, executionContext); return(rootRequestHandler); }
public Task <Response <GetGadgetResponce> > ExecuteAsync( GetGadgetRequest request, CancellationToken cancellationToken, IRequestHandlerExecutionContext executionContext) { var result = new GetGadgetResponce(); result.Value = new List <Gadget>(); result.Value.Add(new Gadget() { Id = 1, Name = "one" }); result.Value.Add(new Gadget() { Id = 2, Name = "two" }); return(Response.FromResultOkTask <GetGadgetResponce>(result)); }
public virtual async Task <Response <TResponse> > ExecuteAsync <TResponse>( IRequest <TResponse> request, System.Threading.CancellationToken cancellationToken, IRequestHandlerExecutionContext executionContext) { if (request is null) { throw new ArgumentNullException(nameof(request)); } if (executionContext is null) { executionContext = new RequestHandlerExecutionContext(); } var solver = this.GetSolver(); var handler = solver.GetRequestHandler <TResponse>(request, executionContext); var task = handler.ExecuteTypedAsync(request, cancellationToken, executionContext); var result = await task.ConfigureAwait(false); return(result); }
protected abstract Task <Response <TResponse> > HandleAsync( TRequest request, System.Threading.CancellationToken cancellationToken, IRequestHandlerExecutionContext executionContext);
public Task <Response <TResponse> > ExecuteTypedAsync(IRequest <TResponse> request, CancellationToken cancellationToken, IRequestHandlerExecutionContext executionContext) { return(this._RequestHandler.ExecuteAsync((TRequest)request, cancellationToken, executionContext)); }
public Task <Response <object?> > ExecuteObjectAsync(object request, CancellationToken cancellationToken, IRequestHandlerExecutionContext executionContext) { return(this._RequestHandler.ExecuteAsync((TRequest)request, cancellationToken, executionContext) .ContinueWith((t) => { if (t.IsFaulted) { return Response.FromException <object?>(t.Exception.InnerException); //ExceptionDispatchInfo.Capture(t.Exception.InnerException).Throw(); } else { return Response.FromResultOk <object?>((object?)t.Result); } }, cancellationToken)); }
public Task <Response <TResponse> > ExecuteAsync(TRequest request, System.Threading.CancellationToken cancellationToken, IRequestHandlerExecutionContext executionContext) { return(this._RequestHandlerChain.ExecuteAsync(request, cancellationToken, executionContext, this._Next)); }