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));
 }
Пример #3
0
            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();
        }
Пример #5
0
            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);
        }
Пример #7
0
        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));
 }