Exemplo n.º 1
0
        /// <summary>
        /// Offers the message (belong to the target).
        /// </summary>
        /// <param name="messageHeader">The message header.</param>
        /// <param name="messageValue">The message value.</param>
        /// <param name="source">The source.</param>
        /// <param name="consumeToAccept">if set to <c>true</c> [consume to accept].</param>
        /// <returns></returns>
        public DataflowMessageStatus OfferMessage(
            DataflowMessageHeader messageHeader,
            TIn messageValue,
            ISourceBlock <TIn> source,
            bool consumeToAccept)
        {
            DataflowMessageStatus result =
                _target.OfferMessage(messageHeader, messageValue, source, consumeToAccept);

            BlockInfo.PushOfferingCounter.Increment(result);

            #region BlockInfo.PushOffering.Add(...)

            var hookSource = source as ISourceHook <TIn>;
            if (!(source is LinkHook <TIn>)) // optimization, in this case the like hook will handle the message
            {
                string sourceName = string.Empty;
                if (hookSource != null)
                {
                    sourceName = hookSource.BlockInfo.Name;
                }

                var msg = new OfferMessageTrace(messageHeader.Id, messageValue, consumeToAccept, result, sourceName, BlockInfo.Name);
                BlockInfo.PushOffering.Add(msg);
            }

            #endregion // BlockInfo.PushOffering.Add(...)

            BlockInfo.Refresh();

            return(result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Offers the message (hook the link's messaging).
        /// </summary>
        /// <param name="messageHeader">The message header.</param>
        /// <param name="messageValue">The message value.</param>
        /// <param name="source">The source.</param>
        /// <param name="consumeToAccept">if set to <c>true</c> [consume to accept].</param>
        /// <returns></returns>
        public DataflowMessageStatus OfferMessage(
            DataflowMessageHeader messageHeader,
            T messageValue,
            ISourceBlock <T> source,
            bool consumeToAccept)
        {
            DataflowMessageStatus result =
                _target.OfferMessage(messageHeader, messageValue, this, consumeToAccept);

            LinkInfo.PushOfferingCounter.Increment(result);
            var msg = new OfferMessageTrace(messageHeader.Id, messageValue, consumeToAccept, result, _source.BlockInfo.Name, _targetName);

            LinkInfo.PushOffering.Add(msg);
            if (_targetInfo != null)
            {
                _targetInfo.PushOffering.Add(msg);
            }
            return(result);
        }