/// <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); }
/// <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); }