/// <summary> /// Initializes a new instance. /// </summary> /// <param name="requestTokenFactory"></param> /// <param name="exceptionFactory"></param> /// <param name="contextCallback"></param> public FaultedToActivity(AsyncRequestTokenFactory <TInstance, TData, TRequest> requestTokenFactory, AsyncExceptionFactory <TInstance, TData, TRequest> exceptionFactory, Action <SendContext <FaultEvent <TRequest> > > contextCallback) { this.requestTokenFactory = requestTokenFactory ?? throw new ArgumentNullException(nameof(requestTokenFactory)); this.exceptionFactory = exceptionFactory ?? throw new ArgumentNullException(nameof(exceptionFactory)); this.contextCallback = contextCallback; }
/// <summary> /// Responds to the previosly captured request token. /// </summary> /// <typeparam name="TInstance"></typeparam> /// <typeparam name="TData"></typeparam> /// <typeparam name="TRequest"></typeparam> /// <typeparam name="TResponse"></typeparam> /// <param name="source"></param> /// <param name="requestTokenFactory"></param> /// <param name="messageFactory"></param> /// <param name="contextCallback"></param> /// <returns></returns> public static EventActivityBinder <TInstance, TData> RespondToAsync <TInstance, TData, TRequest, TResponse>(this EventActivityBinder <TInstance, TData> source, AsyncRequestTokenFactory <TInstance, TData, TRequest> requestTokenFactory, AsyncEventMessageFactory <TInstance, TData, TResponse> messageFactory, Action <SendContext <TResponse> > contextCallback = null) where TInstance : class, SagaStateMachineInstance where TData : class where TRequest : class where TResponse : class { return(source.Add(new RespondToActivity <TInstance, TData, TRequest, TResponse>(requestTokenFactory, messageFactory, contextCallback))); }
/// <summary> /// Responds to a stored request with a fault. /// </summary> /// <typeparam name="TInstance"></typeparam> /// <typeparam name="TData"></typeparam> /// <typeparam name="TRequest"></typeparam> /// <param name="source"></param> /// <param name="requestTokenFactory"></param> /// <param name="exception"></param> /// <param name="contextCallback"></param> /// <returns></returns> public static EventActivityBinder <TInstance, TData> FaultedToAsync <TInstance, TData, TRequest>(this EventActivityBinder <TInstance, TData> source, AsyncRequestTokenFactory <TInstance, TData, TRequest> requestTokenFactory, Exception exception, Action <SendContext <FaultEvent <TRequest> > > contextCallback = null) where TInstance : class, SagaStateMachineInstance where TData : class where TRequest : class { return(source.Add(new FaultedToActivity <TInstance, TData, TRequest>(requestTokenFactory, context => Task.FromResult(exception), contextCallback))); }
/// <summary> /// Initializes a new instance. /// </summary> /// <param name="requestTokenFactory"></param> /// <param name="messageFactory"></param> /// <param name="contextCallback"></param> public RespondToActivity(AsyncRequestTokenFactory <TInstance, TData, TRequest> requestTokenFactory, AsyncEventMessageFactory <TInstance, TData, TResponse> messageFactory, Action <SendContext <TResponse> > contextCallback) { this.requestTokenFactory = requestTokenFactory ?? throw new ArgumentNullException(nameof(requestTokenFactory)); this.messageFactory = messageFactory ?? throw new ArgumentNullException(nameof(messageFactory)); this.contextCallback = contextCallback; }