Exemple #1
0
 public static EventActivityBinder <JobSaga, T> RequestJobSlot <T>(this EventActivityBinder <JobSaga, T> binder,
                                                                   JobStateMachine machine)
     where T : class
 {
     return(binder.SendAsync(machine.JobTypeSagaEndpointAddress, context => context.Init <AllocateJobSlot>(new
     {
         JobId = context.Instance.CorrelationId,
         context.Instance.JobTypeId,
         context.Instance.JobTimeout
     }), context => context.ResponseAddress = machine.JobSagaEndpointAddress)
            .TransitionTo(machine.AllocatingJobSlot));
 }
Exemple #2
0
 public static EventActivityBinder <JobSaga, T> WaitForJobSlot <T>(this EventActivityBinder <JobSaga, T> binder, JobStateMachine machine)
     where T : class
 {
     return(binder.Schedule(machine.JobSlotWaitElapsed, context => context.Init <JobSlotWaitElapsed>(new { JobId = context.Instance.CorrelationId }))
            .TransitionTo(machine.WaitingForSlot));
 }
Exemple #3
0
 public static EventActivityBinder <JobSaga, JobSlotAllocated> RequestStartJob(this EventActivityBinder <JobSaga, JobSlotAllocated> binder,
                                                                               JobStateMachine machine)
 {
     return(binder.SendAsync(machine.JobAttemptSagaEndpointAddress, context => context.Init <StartJobAttempt>(new
     {
         context.Data.JobId,
         context.Instance.AttemptId,
         context.Instance.ServiceAddress,
         context.Instance.RetryAttempt,
         context.Instance.Job
     }), context => context.ResponseAddress = machine.JobSagaEndpointAddress)
            .TransitionTo(machine.StartingJobAttempt));
 }
Exemple #4
0
 public static EventActivityBinder <JobSaga> SendJobSlotReleased(this EventActivityBinder <JobSaga> binder, JobStateMachine machine,
                                                                 JobSlotDisposition disposition)
 {
     return(binder.SendAsync(context => machine.JobTypeSagaEndpointAddress,
                             context => context.Init <JobSlotReleased>(new
     {
         JobId = context.Instance.CorrelationId,
         context.Instance.JobTypeId,
         Disposition = disposition == JobSlotDisposition.Faulted && context.Instance.Reason.Contains("(Suspect)")
                 ? JobSlotDisposition.Suspect
                 : disposition
     })));
 }
Exemple #5
0
 public static EventActivityBinder <JobSaga> SendJobSlotReleased(this EventActivityBinder <JobSaga> binder, JobStateMachine machine)
 {
     return(binder.SendAsync(context => machine.JobTypeSagaEndpointAddress,
                             context => context.Init <JobSlotReleased>(new
     {
         JobId = context.Instance.CorrelationId,
         context.Instance.JobTypeId
     })));
 }