public RelayQueueProcessor(IRelayAgent <TInput, TOutput> agent, IBufferManager <TInput> bufferManager, IProgressive progressReporter, IDataSubscribable <TInput> input) : base(agent, progressReporter, bufferManager, input) { _agent = agent; }
public SeriesProcessor(IWorkManager <TWorkItem> workManager, IProgressive progressReporter, IBufferManager <TWorkItem> bufferManager, IDataSubscribable <TWorkItem> input) : base(progressReporter, bufferManager, workManager) { WorkManager = workManager; BufferManager = bufferManager; DataInput = input; DataInput?.AddSubscriber(this); }
internal ManageableProgressive(IProgressManager manager, IProgressive progressive) { Manager = manager ?? throw new ArgumentNullException(nameof(manager)); _progressive = progressive ?? throw new ArgumentNullException(nameof(progressive)); Id = Manager.CreateId(); _taskCompletion = new TaskCompletionSource <int>(); if (_progressive is Progressive p) { StateDFA = p.StateDFA; StateDFA.StateChanged += Progressive_ProgressStateChanged; } else { StateDFA = new DFA <ProgressState>(ProgressState.Initial, def => { def(ProgressState.Initial, new[] { ProgressState.Ready, ProgressState.Progressing, ProgressState.Error }); def(ProgressState.Ready, new[] { ProgressState.Progressing, ProgressState.Suspend, ProgressState.Error }); def(ProgressState.Progressing, new[] { ProgressState.Suspend, ProgressState.Completed, ProgressState.Error }); def(ProgressState.Suspend, new[] { ProgressState.Ready, ProgressState.Progressing, ProgressState.Error }); }); _progressive.ProgressStateChanged += Progressive_ProgressStateChanged; } }
public ManageableProgressive Add(IProgressive progressive) { var mp = new ManageableProgressive(this, progressive); mp.ProgressCompleted += Item_ProgressCompleted; mp.ProgressValueChanged += Item_ProgressValueChanged; lock (this) { var @new = new ManageableProgressive[Count + 1]; var i = 0; foreach (var item in _items) { if (item != null) { @new[i] = item; i++; } } @new[i] = mp; Count = Count + 1; _items = @new; } return(mp); }