public void Init() { if (_blockA != null) { _blockA.Complete(); } Data = new DataflowVisitor(); _blockA = new BufferBlock <int>(BLOCK_OPTIONS) .Hook("Buffer", Data, 10, 10, Colors.SteelBlue); _blockA.AddCommand("Add Item", PostACommand); _blockB = new BufferBlock <int>(BLOCK_OPTIONS) .Hook("Buffer", Data, 10, 400, Color.FromRgb(0x3D, 0x04, 0x60)); _blockB.AddCommand("Add Item", PostBCommand); _block3 = new ActionBlock <int>(i => { ReflectBlockExtensions.ProcessItem(i, _sync, _block3.BlockInfo); }, BLOCK_OPTIONS) .Hook("Action", Data, 600, 200); _block3.AddCommand("Release One", ReleaseSingleProcessingTaskCommand); _blockA.LinkCandidate(_block3, LINK_OPTIONS); _blockB.LinkCandidate(_block3, LINK_OPTIONS); //_toolbar.DataContext = this; }
private void Init() { if (_sourceBlock != null) { _sourceBlock.Complete(); } Data = new DataflowVisitor(); _sourceBlock = new BufferBlock <int>() .Hook("Buffer", Data, 50, 300, Colors.SteelBlue); _sourceBlock.AddCommand("Add Item", PostCommand); _targetBlock = new ActionBlock <int>(i => { ReflectBlockExtensions.ProcessItem(i, _sync, _targetBlock.BlockInfo); }, BLOCK_OPTIONS) .Hook("Action", Data, 800, 10); _targetBlock.AddCommand("Release One", ReleaseSingleProcessingTaskCommand); var nullTarget = DataflowBlock.NullTarget <int>() .Hook("NullTarget", Data, 500, 500); _sourceBlock.LinkTo(_targetBlock, LINK_OPTIONS); _unlinkGarbage = _sourceBlock.LinkTo(nullTarget, LINK_OPTIONS); //_toolbar.DataContext = this; }
public void Init() { if (_sourceBlock != null) { _sourceBlock.Complete(); } Data = new DataflowVisitor(); _sourceBlock = new BufferBlock <int>() .Hook("Buffer", Data, 10, 300, Colors.SteelBlue); _sourceBlock.AddCommand("Add Item", PostCommand); // TODO: know complete processing counter _block = new TransformBlock <int, string>(i => { ReflectBlockExtensions.ProcessItem(i, _sync, _block.BlockInfo); return(new string('*', i)); }, BLOCK_OPTIONS) .Hook("Transform", Data, 500, 10); _block.AddCommand("Release One", ReleaseSingleProcessingTaskCommand); var nullTarget = DataflowBlock.NullTarget <int>() .Hook("NullTarget", Data, 500, 500); _nullTarget = DataflowBlock.NullTarget <string>() .Hook("NullTarget", Data, 900, 200); _sourceBlock.LinkTo(_block, LINK_OPTIONS); _unlinkGarbage = _sourceBlock.LinkTo(nullTarget, LINK_OPTIONS); _block.LinkCandidate(_nullTarget, LINK_OPTIONS); //_toolbar.DataContext = this; }
public LinkCandidateInformation( DataflowVisitor visitor, ISourceHook <T> source, ITargetHook <T> target, DataflowLinkOptions options = null, Predicate <T> predicate = null) : this(visitor, source, target, new LinkConnector(source.BlockInfo, target.BlockInfo), options, predicate) { }
public void LinkCandidate( ITargetHook <T> target, DataflowLinkOptions options = null, Predicate <T> predicate = null) { if (!BlockInfo.IsSourceBlock) { throw new Exception("Only source block can linked candidates"); } var candidate = new LinkCandidateInformation <T>(_visitor, this, target, options, predicate); _visitor.AddLinkCandidate(candidate); }
public void Init() { Data = new DataflowVisitor(); _blockFull = new BufferBlock <int>(BLOCK_OPTIONS) .Hook("Full", Data, 10, 10, Colors.SteelBlue); _blockEmpty = new BufferBlock <int>(BLOCK_OPTIONS) .Hook("Empty", Data, 10, 450, Color.FromRgb(0x3D, 0x04, 0x60)); _blockTarget = new ActionBlock <int>(i => { ReflectBlockExtensions.ProcessItem(i, _sync, _blockTarget.BlockInfo); }, BLOCK_OPTIONS) .Hook("Target", Data, 400, 200); _blockEmpty.AddCommand("Offer Empty", OfferEmptyCommand); _blockFull.AddCommand("Offer Full", OfferFullCommand); _blockTarget.AddCommand("Release One", ReleaseSingleProcessingTaskCommand); //_toolbar.DataContext = this; }
public LinkCandidateInformation( DataflowVisitor visitor, ISourceHook <T> source, ITargetHook <T> target, LinkConnector connector, DataflowLinkOptions options = null, Predicate <T> predicate = null) { _visitor = visitor; _source = source; _target = target; _predicate = predicate; if (options == null) { options = new DataflowLinkOptions(); } Append = options.Append; MaxMessages = options.MaxMessages; PropagateCompletion = options.PropagateCompletion; Connector = connector; }
public void Init() { if (_source != null) { _source.Complete(); } Data = new DataflowVisitor(); _source = new BufferBlock <int>(BLOCK_OPTIONS) .Hook("Buffer", Data, 100, 10, Colors.SteelBlue); _source.AddCommand("Add Item", PostCommand); _target = new ActionBlock <int>(i => { ReflectBlockExtensions.ProcessItem(i, _sync, _target.BlockInfo); }, BLOCK_OPTIONS) .Hook("Action", Data, 600, 200); _target.AddCommand("Release One", ReleaseSingleProcessingTaskCommand); _source.LinkCandidate(_target, LINK_OPTIONS); //_toolbar.DataContext = this; }