internal IAwaitablePipeline <IPipelineItem> GetPipeline() { Task.Run(() => { foreach (var l in PipelineQueues[LOG_QUEUE_NAME].GetConsumingEnumerable()) { Logger.Invoke(l); } }); foreach (var step in Steps) { bool isComplete = step.OutputQNames.All(s => PipelineQueues.ContainsKey(s)); isComplete &= PipelineQueues.ContainsKey(step.InputQName); if (isComplete) { step.UpdateStatus(StepStatus.Complete); } else { step.UpdateStatus(StepStatus.InError); isComplete &= false; } } if (isComplete) { foreach (var step in Steps) { for (int i = 0; i < step.ParallelismDegree; i++) { Task.Run(() => { StartStep(step); }); } } } return(this); }
internal void AddStep(IPipelineStep step) { Steps.Add((PipelineStep)step); bool isComplete = step.OutputQNames.All(s => PipelineQueues.ContainsKey(s)); isComplete &= PipelineQueues.ContainsKey(step.InputQName); if (isComplete) { ((PipelineStep)step).UpdateStatus(StepStatus.Complete); } }
internal void AddQueue(PipelineQueue queue) { PipelineQueues.Add(queue.Name, queue); }