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)));
 }
Ejemplo n.º 2
0
 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)));
 }
Ejemplo n.º 3
0
 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)));
 }
Ejemplo n.º 4
0
 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)));
 }
Ejemplo n.º 5
0
 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)));
 }
Ejemplo n.º 6
0
 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)));
 }
Ejemplo n.º 7
0
 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)));
 }
Ejemplo n.º 8
0
 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)));
 }
Ejemplo n.º 10
0
 /// <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)));
 }
Ejemplo n.º 11
0
 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)));
 }
Ejemplo n.º 12
0
 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)));
 }
Ejemplo n.º 13
0
 /// <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)));
 }
Ejemplo n.º 14
0
 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)));
 }
Ejemplo n.º 15
0
 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)));
 }
Ejemplo n.º 16
0
 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)));
 }
Ejemplo n.º 17
0
 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)));
 }
Ejemplo n.º 18
0
 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)));
 }
Ejemplo n.º 19
0
 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)));
 }
Ejemplo n.º 21
0
 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)));
 }
Ejemplo n.º 22
0
 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 => { })));
 }
Ejemplo n.º 23
0
        /// <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));
        }
Ejemplo n.º 24
0
        /// <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));
        }
Ejemplo n.º 25
0
 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)));
 }
Ejemplo n.º 27
0
 /// <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)));
 }
Ejemplo n.º 28
0
 /// <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>()));
 }
Ejemplo n.º 29
0
 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)));
 }
Ejemplo n.º 30
0
        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));
        }