in src/DurableSDK/DurableTaskHandler.cs [106:151]
public void WaitAll(
IReadOnlyCollection<DurableTask> tasksToWaitFor,
OrchestrationContext context,
Action<object> output)
{
context.OrchestrationActionCollector.NextBatch();
var completedEvents = new List<HistoryEvent>();
foreach (var task in tasksToWaitFor)
{
var scheduledHistoryEvent = task.GetScheduledHistoryEvent(context);
var completedHistoryEvent = task.GetCompletedHistoryEvent(context, scheduledHistoryEvent);
if (completedHistoryEvent == null)
{
break;
}
if (scheduledHistoryEvent != null)
{
scheduledHistoryEvent.IsProcessed = true;
}
completedHistoryEvent.IsProcessed = true;
completedEvents.Add(completedHistoryEvent);
}
var allTasksCompleted = completedEvents.Count == tasksToWaitFor.Count;
if (allTasksCompleted)
{
context.IsReplaying = completedEvents.Count == 0 ? false : completedEvents[0].IsPlayed;
CurrentUtcDateTimeUpdater.UpdateCurrentUtcDateTime(context);
foreach (var completedHistoryEvent in completedEvents)
{
if (GetEventResult(completedHistoryEvent) != null)
{
output(GetEventResult(completedHistoryEvent));
}
}
}
else
{
InitiateAndWaitForStop(context);
}
}