public void LinkTo_Calls_Underlying_Target_Block_Method() { _sourceBlock = new SourceBlockImpl(_options); _sourceBlock.LinkTo(_outputBlock, new DataflowLinkOptions()); _fakeBlock.Verify(b => b.LinkTo(It.IsAny <ITargetBlock <int> >(), It.IsAny <DataflowLinkOptions>()), Times.Once()); }
public IDataFlowLinkSource <TConvert> LinkTo <TConvert>(IDataFlowLinkTarget <TOutput> target, Predicate <TOutput> predicate) { SourceBlock.LinkTo(target.TargetBlock, predicate); target.AddPredecessorCompletion(SourceBlock.Completion); if (!DisableLogging) { NLogger.Debug(CallingTask.TaskName + $" was linked to (with predicate): {((ITask)target).TaskName}!", CallingTask.TaskType, "LOG", CallingTask.TaskHash, ControlFlow.ControlFlow.STAGE, ControlFlow.ControlFlow.CurrentLoadProcess?.Id); } return(target as IDataFlowLinkSource <TConvert>); }
public IDataFlowLinkSource <TConvert> LinkTo <TConvert>(IDataFlowLinkTarget <TOutput> target, Predicate <TOutput> predicate) { SourceBlock.LinkTo(target.TargetBlock, new DataflowLinkOptions() { PropagateCompletion = true }, predicate); if (!DisableLogging) { NLogger.Debug(CallingTask.TaskName + " was linked to Target (with predicate)!", CallingTask.TaskType, "LOG", CallingTask.TaskHash, ControlFlow.ControlFlow.STAGE, ControlFlow.ControlFlow.CurrentLoadProcess?.LoadProcessKey); } return(target as IDataFlowLinkSource <TConvert>); }
public void SetUp() { _items = new List <int>(); _options = new ExecutionDataflowBlockOptions { BoundedCapacity = 1 }; _linkOptions = new DataflowLinkOptions { PropagateCompletion = true }; _outputBlock = new ActionBlock <int>(i => _items.Add(i), _options); _fakeBlock = MakeFakePropogatorBlock(); _sourceBlock = new SourceBlockImpl(_fakeBlock.Object); _sourceBlock.LinkTo(_outputBlock, _linkOptions); }
public IDataFlowLinkSource <TConvert> LinkTo <TConvert>(IDataFlowLinkTarget <TOutput> target, Predicate <TOutput> rowsToKeep, Predicate <TOutput> rowsIntoVoid) { SourceBlock.LinkTo(target.TargetBlock, new DataflowLinkOptions() { PropagateCompletion = true }, rowsToKeep); if (!DisableLogging) { NLogger.Debug(CallingTask.TaskName + " was linked to Target (with predicate)!", CallingTask.TaskType, "LOG", CallingTask.TaskHash, ControlFlow.ControlFlow.STAGE, ControlFlow.ControlFlow.CurrentLoadProcess?.LoadProcessKey); } SourceBlock.LinkTo <TOutput>(new VoidDestination <TOutput>().TargetBlock, rowsIntoVoid); if (!DisableLogging) { NLogger.Debug(CallingTask.TaskName + " was also linked to VoidDestination to ignore certain rows!", CallingTask.TaskType, "LOG", CallingTask.TaskHash, ControlFlow.ControlFlow.STAGE, ControlFlow.ControlFlow.CurrentLoadProcess?.LoadProcessKey); } return(target as IDataFlowLinkSource <TConvert>); }
public IDataFlowLinkSource <TConvert> LinkTo <TConvert>(IDataFlowLinkTarget <TOutput> target, Predicate <TOutput> rowsToKeep, Predicate <TOutput> rowsIntoVoid) { SourceBlock.LinkTo(target.TargetBlock, rowsToKeep); target.AddPredecessorCompletion(SourceBlock.Completion); if (!DisableLogging) { NLogger.Debug(CallingTask.TaskName + $" was linked to (with predicate): {((ITask)target).TaskName}!", CallingTask.TaskType, "LOG", CallingTask.TaskHash, ControlFlow.ControlFlow.STAGE, ControlFlow.ControlFlow.CurrentLoadProcess?.Id); } VoidDestination <TOutput> voidTarget = new VoidDestination <TOutput>(); SourceBlock.LinkTo <TOutput>(voidTarget.TargetBlock, rowsIntoVoid); voidTarget.AddPredecessorCompletion(SourceBlock.Completion); if (!DisableLogging) { NLogger.Debug(CallingTask.TaskName + $" was also linked to: VoidDestination to ignore certain rows!", CallingTask.TaskType, "LOG", CallingTask.TaskHash, ControlFlow.ControlFlow.STAGE, ControlFlow.ControlFlow.CurrentLoadProcess?.Id); } return(target as IDataFlowLinkSource <TConvert>); }
public void Can_Complete_Source() { _sourceBlock = new SourceBlockImpl(_options); _sourceBlock.LinkTo(_outputBlock, _linkOptions); for (var i = 0; i < 5; i++) { if (_items.Count > 0) { break; } _sourceBlock.Completion.Wait(TimeSpan.FromMilliseconds(10)); } _sourceBlock.Complete(); _outputBlock.Completion.Wait(); Assert.That(_outputBlock.Completion.Status, Is.EqualTo(TaskStatus.RanToCompletion)); }
public void Can_Process() { _sourceBlock = new SourceBlockImpl(_options); _sourceBlock.LinkTo(_outputBlock, _linkOptions); for (var i = 0; i < 5; i++) { if (_items.Count > 0) { break; } // wait while block is initialized _sourceBlock.Completion.Wait(TimeSpan.FromMilliseconds(50)); } _sourceBlock.Complete(); _outputBlock.Completion.Wait(); Assert.That(_items.Count, Is.GreaterThan(0)); }
public IDisposable LinkTo(ITargetBlock <TOutput> target, DataflowLinkOptions linkOptions) { return(SourceBlock.LinkTo(target, linkOptions)); }