public Node(NodeSettings settings) { _monitors = new List <ProcessorMonitor>(); Settings = settings; Processors = settings.ProcessorSettings.Select(x => x.CreateInstance()).ToList(); Processors.ForEach(x => x.WriteLine += (sender, message) => OnWriteLine(message)); }
public Type[] SupportedClasses() { if (ProcessorList.Count > 0) { List <Type> types = new List <Type>(); Processors.ForEach(n => types.AddRange(n.SupportedClasses())); return(types.ToArray()); } else { return(new Type[] { typeof(object) }); } }
public void Step(TimeSpan span) { if (isFirstRun) { Processors.ForEach(x => x.Init(Context)); isFirstRun = false; } Context.WorldClock += span; Context.StepStart(); foreach (var item in Processors) { if (item.EnableProcess) { item.Process(Context, span); } } Context.StepEnd(); }
private void runInternal(TimeSpan interval) { cts = new CancellationTokenSource(); Task.Factory.StartNew(() => { while (!cts.Token.IsCancellationRequested) { Step(interval); if (OnStep != null) { OnStep(this, stepInfo); stepInfo.Step(); if (stepInfo.IsCancel) { Stop(); break; } } } Processors.ForEach(x => x.Close(Context)); cts = null; }, cts.Token, TaskCreationOptions.None, TaskScheduler.Default); }
public virtual void ProcessMessage(IProcessorMessage message) { Processors.ForEach(n => n.ProcessMessage(message)); }