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());
        }
Exemple #2
0
 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>);
 }
Exemple #3
0
 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);
        }
Exemple #5
0
        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>);
        }
Exemple #6
0
        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));
        }
Exemple #9
0
 public IDisposable LinkTo(ITargetBlock <TOutput> target, DataflowLinkOptions linkOptions)
 {
     return(SourceBlock.LinkTo(target, linkOptions));
 }