Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
 internal void AddQueue(PipelineQueue queue)
 {
     PipelineQueues.Add(queue.Name, queue);
 }