public static EventActivityBinder <TInstance> SendAsync <TInstance, TMessage>(this EventActivityBinder <TInstance> source, Task <TMessage> message, Action <SendContext <TMessage> > contextCallback = null) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new SendActivity <TInstance, TMessage>(x => message, contextCallback))); }
public static EventActivityBinder <TInstance> SendAsync <TInstance, TMessage>(this EventActivityBinder <TInstance> source, AsyncEventMessageFactory <TInstance, TMessage> messageFactory, SendContextCallback <TInstance, TMessage> contextCallback) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new SendActivity <TInstance, TMessage>(messageFactory, contextCallback))); }
public static EventActivityBinder <TInstance> Send <TInstance, TMessage>(this EventActivityBinder <TInstance> source, DestinationAddressProvider <TInstance> destinationAddressProvider, EventMessageFactory <TInstance, TMessage> messageFactory) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new SendActivity <TInstance, TMessage>(destinationAddressProvider, messageFactory))); }
public static EventActivityBinder <TInstance> SendAsync <TInstance, TMessage>(this EventActivityBinder <TInstance> source, Uri destinationAddress, AsyncEventMessageFactory <TInstance, TMessage> messageFactory, Action <SendContext <TMessage> > contextCallback = null) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new SendActivity <TInstance, TMessage>(_ => destinationAddress, messageFactory, contextCallback))); }
public static EventActivityBinder <TInstance> Produce <TInstance, TMessage>(this EventActivityBinder <TInstance> source, TMessage message, Action <KafkaSendContext <TMessage> > contextCallback = null) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new ProduceActivity <TInstance, TMessage>(x => Task.FromResult(message), contextCallback))); }
public static EventActivityBinder <TInstance> Schedule <TInstance, TMessage>(this EventActivityBinder <TInstance> source, Schedule <TInstance, TMessage> schedule, TMessage message) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new ScheduleActivity <TInstance, TMessage>(x => message, schedule))); }
public static EventActivityBinder <TInstance> Schedule <TInstance, TMessage>(this EventActivityBinder <TInstance> source, Schedule <TInstance, TMessage> schedule, EventMessageFactory <TInstance, TMessage> messageFactory, Action <SendContext> contextCallback) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new ScheduleActivity <TInstance, TMessage>(messageFactory, schedule, contextCallback))); }
public static EventActivityBinder <TInstance> Publish <TInstance, TMessage>(this EventActivityBinder <TInstance> source, TMessage message, Action <PublishContext <TMessage> > contextCallback) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new PublishActivity <TInstance, TMessage>(x => message, contextCallback))); }
/// <summary> /// Unschedule a message, if the message was scheduled. /// </summary> /// <typeparam name="TInstance"></typeparam> /// <typeparam name="TData"></typeparam> /// <param name="source"></param> /// <param name="schedule"></param> /// <returns></returns> public static EventActivityBinder <TInstance, TData> Unschedule <TInstance, TData>(this EventActivityBinder <TInstance, TData> source, Schedule <TInstance> schedule) where TInstance : class, SagaStateMachineInstance where TData : class { return(source.Add(new UnscheduleActivity <TInstance>(schedule))); }
/// <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> FaultedTo <TInstance, TData, TRequest>(this EventActivityBinder <TInstance, TData> source, RequestTokenFactory <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>(context => Task.FromResult(requestTokenFactory(context)), context => Task.FromResult(exception), contextCallback))); }
public static EventActivityBinder <TInstance> Publish <TInstance, TMessage>(this EventActivityBinder <TInstance> source, TMessage message) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new PublishActivity <TInstance, TMessage>(x => message))); }
public static EventActivityBinder <TInstance> Produce <TInstance, TMessage>(this EventActivityBinder <TInstance> source, EventHubNameProvider <TInstance> nameProvider, Task <TMessage> message, Action <EventHubSendContext <TMessage> > contextCallback = null) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new ProduceActivity <TInstance, TMessage>(nameProvider, x => message, 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="exceptionFactory"></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, AsyncExceptionFactory <TInstance, TData, TRequest> exceptionFactory, 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, exceptionFactory, contextCallback))); }
public static EventActivityBinder <TInstance, TData> Call <TInstance, TData>( this EventActivityBinder <TInstance, TData> source, Expression <Action <TInstance, TData> > expression) where TInstance : class { return(source.Add(new CallActivity <TInstance, TData>(expression))); }
public static EventActivityBinder <TInstance> PublishAsync <TInstance, TMessage>(this EventActivityBinder <TInstance> source, AsyncEventMessageFactory <TInstance, TMessage> messageFactory, Action <PublishContext <TMessage> > contextCallback = null) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new PublishActivity <TInstance, TMessage>(messageFactory, contextCallback))); }
public static EventActivityBinder <TInstance> Send <TInstance, TMessage>(this EventActivityBinder <TInstance> source, Uri destinationAddress, TMessage message) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new SendActivity <TInstance, TMessage>(destinationAddress, x => message))); }
public static EventActivityBinder <TInstance> Send <TInstance, TMessage>(this EventActivityBinder <TInstance> source, DestinationAddressProvider <TInstance> destinationAddressProvider, TMessage message, Action <SendContext <TMessage> > contextCallback) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new SendActivity <TInstance, TMessage>(destinationAddressProvider, x => message, contextCallback))); }
public static EventActivityBinder <TInstance> Schedule <TInstance, TMessage>(this EventActivityBinder <TInstance> source, Schedule <TInstance, TMessage> schedule, EventMessageFactory <TInstance, TMessage> messageFactory, ScheduleDelayProvider <TInstance> delayProvider) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new ScheduleActivity <TInstance, TMessage>(messageFactory, schedule, delayProvider))); }
public static EventActivityBinder <TInstance> Schedule <TInstance, TMessage>(this EventActivityBinder <TInstance> source, Schedule <TInstance, TMessage> schedule, TMessage message, Action <SendContext> contextCallback, ScheduleDelayProvider <TInstance> delayProvider) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new ScheduleActivity <TInstance, TMessage>(x => message, schedule, contextCallback, delayProvider))); }
/// <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="message"></param> /// <param name="contextCallback"></param> /// <returns></returns> public static EventActivityBinder <TInstance, TData> RespondTo <TInstance, TData, TRequest, TResponse>(this EventActivityBinder <TInstance, TData> source, RequestTokenFactory <TInstance, TData, TRequest> requestTokenFactory, TResponse message, 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>(context => Task.FromResult(requestTokenFactory(context)), context => Task.FromResult(message), contextCallback))); }
public static EventActivityBinder <TInstance, TData> Respond <TInstance, TData, TMessage>(this EventActivityBinder <TInstance, TData> source, TMessage message, Action <SendContext <TMessage> > contextCallback = null) where TInstance : class, SagaStateMachineInstance where TData : class where TMessage : class { return(source.Add(new RespondActivity <TInstance, TData, TMessage>(x => message, contextCallback))); }
public static EventActivityBinder <TInstance, TData> Publish <TInstance, TData, TMessage>( this EventActivityBinder <TInstance, TData> source, TMessage message) where TInstance : class, SagaStateMachineInstance where TData : class where TMessage : class { return(source.Add(new PublishActivity <TInstance, TData, TMessage>((i, d) => message, x => { }))); }
/// <summary> /// Add an activity execution to the event's behavior /// </summary> /// <typeparam name="TInstance">The state machine instance type</typeparam> /// <typeparam name="TData">The event data type</typeparam> /// <param name="binder">The event binder</param> /// <param name="activityFactory">The factory method which returns the activity to execute</param> public static EventActivityBinder <TInstance, TData> Execute <TInstance, TData>(this EventActivityBinder <TInstance, TData> binder, Func <BehaviorContext <TInstance, TData>, Activity <TInstance, TData> > activityFactory) where TInstance : class { var activity = new FactoryActivity <TInstance, TData>(activityFactory); return(binder.Add(activity)); }
/// <summary> /// Add an activity execution to the event's behavior /// </summary> /// <typeparam name="TInstance">The state machine instance type</typeparam> /// <param name="binder">The event binder</param> /// <param name="activityFactory">The factory method which returns the activity to execute</param> public static EventActivityBinder <TInstance> ExecuteAsync <TInstance>(this EventActivityBinder <TInstance> binder, Func <BehaviorContext <TInstance>, Task <Activity <TInstance> > > activityFactory) where TInstance : class { var activity = new AsyncFactoryActivity <TInstance>(activityFactory); return(binder.Add(activity)); }
public static EventActivityBinder <TInstance> Schedule <TInstance, TMessage>(this EventActivityBinder <TInstance> source, Schedule <TInstance, TMessage> schedule, Task <TMessage> message, ScheduleTimeProvider <TInstance> timeProvider, Action <SendContext <TMessage> > contextCallback = null) where TInstance : class, SagaStateMachineInstance where TMessage : class { return(source.Add(new ScheduleActivity <TInstance, TMessage>(x => message, schedule, timeProvider, 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> /// Publishes the <see cref="Automatonymous.Contracts.RequestCompleted{TResponse}"/> event, used by the request state machine to complete pending /// requests. /// </summary> /// <param name="source"></param> /// <param name="messageFactory"></param> /// <typeparam name="TInstance"></typeparam> /// <typeparam name="TData"></typeparam> /// <typeparam name="TResponse"></typeparam> /// <returns></returns> public static EventActivityBinder <TInstance, TData> RequestCompleted <TInstance, TData, TResponse>(this EventActivityBinder <TInstance, TData> source, AsyncEventMessageFactory <TInstance, TData, TResponse> messageFactory) where TInstance : class, SagaStateMachineInstance where TData : class where TResponse : class { return(source.Add(new RequestCompletedActivity <TInstance, TData, TResponse>(messageFactory))); }
/// <summary> /// Publishes the <see cref="Automatonymous.Contracts.RequestFaulted{T}"/> event, used by the request state machine to fault pending requests /// </summary> /// <param name="source"></param> /// <param name="requestEvent"></param> /// <typeparam name="TInstance"></typeparam> /// <typeparam name="TData"></typeparam> /// <typeparam name="TRequest"></typeparam> /// <returns></returns> public static EventActivityBinder <TInstance, TData> RequestFaulted <TInstance, TData, TRequest>(this EventActivityBinder <TInstance, TData> source, Event <TRequest> requestEvent) where TInstance : class, SagaStateMachineInstance where TData : class where TRequest : class { return(source.Add(new RequestFaultedActivity <TInstance, TData, TRequest>())); }
public static EventActivityBinder <TInstance, TData> Respond <TInstance, TData, TMessage>( this EventActivityBinder <TInstance, TData> source, EventMessageFactory <TInstance, TData, TMessage> messageFactory) where TInstance : class, SagaStateMachineInstance where TData : class where TMessage : class { return(source.Add(new RespondActivity <TInstance, TData, TMessage>(messageFactory))); }
public static EventActivityBinder <TInstance, TData> Then <TInstance, TData>( this EventActivityBinder <TInstance, TData> source, Func <Activity <TInstance> > activityFactory) where TInstance : class { var activity = new FactoryEventActivity <TInstance>(activityFactory); return(source.Add(activity)); }