public async Task <object> RunWaitForEvent(OrchestrationContext context, OrchestrationEventReceiver eventReceiver) { var eventA = await eventReceiver.WaitForEventAsync <EventA>("EventA"); var eventB = await eventReceiver.WaitForEventAsync <EventB>("EventB"); var eventC = await eventReceiver.WaitForEventAsync <object>("EventC", TimeSpan.FromSeconds(1), null); var result = new { EventA = eventA, EventB = eventB, EventC = eventC }; return(result); }
public override async Task <string> Execute(OrchestrationContext context, string input) { var parameters = PrepareParameters(input, new Dictionary <Type, Func <object> > { [typeof(OrchestrationContext)] = () => context, [typeof(OrchestrationEventReceiver)] = () => _eventReceiver = new OrchestrationEventReceiver(context), [typeof(OrchestrationGuidGenerator)] = () => new OrchestrationGuidGenerator(context.OrchestrationInstance.ExecutionId) }); string serializedResult; try { var result = _methodInfo.Invoke(Instance, parameters); serializedResult = await SerializeResult(result); } catch (Exception e) when(!DUtils.IsFatal(e) && !DUtils.IsExecutionAborting(e)) { var details = DUtils.SerializeCause(e, _dataConverter); throw new OrchestrationFailureException(e.Message, details); } return(serializedResult); }
public async Task <object> RunAddEventListener(OrchestrationContext context, OrchestrationEventReceiver eventReceiver) { List <EventA> eventsA = new List <EventA>(); List <EventB> eventsB = new List <EventB>(); using (eventReceiver.AddListener <EventA>("EventA", eventsA.Add)) using (eventReceiver.AddListener <EventB>("EventB", eventsB.Add)) { await eventReceiver.WaitForEventAsync <object>("Stop"); } var result = new { EventsA = eventsA, EventsB = eventsB }; return(result); }