コード例 #1
0
ファイル: Node.cs プロジェクト: gspike/HostR
        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));
        }
コード例 #2
0
ファイル: Processor.cs プロジェクト: MRoc/puremp3
        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) });
            }
        }
コード例 #3
0
 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();
 }
コード例 #4
0
        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);
        }
コード例 #5
0
 public virtual void ProcessMessage(IProcessorMessage message)
 {
     Processors.ForEach(n => n.ProcessMessage(message));
 }