Example #1
0
 /// <summary>
 /// Links to a target block.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="builder"></param>
 /// <param name="targetBlock"></param>
 /// <param name="predicate"></param>
 /// <param name="declinedTargetBlock"></param>
 /// <returns></returns>
 public static IBroadcastDataflowBuilder <T> LinkTo <T>(
     this IBroadcastDataflowBuilder <T> builder
     , ITargetBlock <T> targetBlock
     , Predicate <T> predicate
     , ITargetBlock <T> declinedTargetBlock = null)
 {
     return(builder.LinkTo(targetBlock, DataflowDefaultOptions.DefaultLinkOptions, predicate, declinedTargetBlock, DataflowDefaultOptions.DefaultLinkOptions));
 }
Example #2
0
        /// <summary>
        /// Links to a target block.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="builder"></param>
        /// <param name="targetBlock"></param>
        /// <param name="linkOptions"></param>
        /// <param name="predicate"></param>
        /// <param name="declinedTargetBlock"></param>
        /// <param name="declinedLinkOptions"></param>
        /// <returns></returns>
        public static IBroadcastDataflowBuilder <T> LinkTo <T>(
            this IBroadcastDataflowBuilder <T> builder
            , ITargetBlock <T> targetBlock
            , DataflowLinkOptions linkOptions
            , Predicate <T> predicate
            , ITargetBlock <T> declinedTargetBlock
            , DataflowLinkOptions declinedLinkOptions)
        {
            if (builder == null)
            {
                return(null);
            }
            if (targetBlock == null)
            {
                throw new ArgumentNullException("targetBlock");
            }
            if (linkOptions == null)
            {
                throw new ArgumentNullException("linkOptions");
            }
            if (predicate == null)
            {
                throw new ArgumentNullException("predicate");
            }
            if (declinedTargetBlock == null)
            {
                throw new ArgumentNullException("declinedTargetBlock");
            }
            if (declinedLinkOptions == null)
            {
                throw new ArgumentNullException("declinedLinkOptions");
            }

            var nextBuilder = builder.LinkTo(targetBlock, linkOptions, predicate);

            if (declinedTargetBlock != null)
            {
                // LinkTo declined target
                LinkHelper.Link((builder as BroadcastDataflowBuilder <T>).BroadcastBock, declinedTargetBlock, declinedLinkOptions ?? DataflowDefaultOptions.DefaultLinkOptions);
            }

            return(nextBuilder);
        }