public IDataflowMessage <TOut> Transform(IDataflowMessage <TIn> item)
        {
            Interlocked.Increment(ref m_NumMessagesProcessed);
            if (item.IsBroken)
            {
                m_LogAgent.LogTrace(DataflowNetworkConstituent.Transformation, Title, "Broken message propagates through network. Node: {0}, Message: {1}", Title, item.Title);
            }
            else
            {
                m_LogAgent.LogTrace(DataflowNetworkConstituent.Transformation, m_DecoratedTransformation.Title, "Transforming: {0}", item.Title);
            }

            IDataflowMessage <TOut> result = m_DecoratedTransformation.Transform(item);

            if (result.IsBroken)
            {
                Interlocked.Increment(ref m_NumBrokenMsgs);
                m_LogAgent.LogBrokenMessage(DataflowNetworkConstituent.Transformation, Title, result.Title, (IBrokenDataFlowMessage <TOut>)result);
            }
            else
            {
                m_LogAgent.LogTrace(DataflowNetworkConstituent.Transformation, m_DecoratedTransformation.Title, "Transformed: old: {0} new: {1}", item.Title, result.Title);
            }
            return(result);
        }
        public IDataflowMessage <TOut> Transform(IDataflowMessage <TIn> item)
        {
            IDataflowMessage <TOut> result = m_DecoratedTransformation.Transform(item);

            m_nms++;
            Send(new WorkloadStatisticsContext(this.GroupGuid, this.TaskGuid, m_nms, m_InMsgFunc(), m_OutMsgFunc(), GetBoundedCapacity(), Title));
            return(result);
        }
        public IDataflowMessage <TOut> Transform(IDataflowMessage <TIn> item)
        {
            Interlocked.Increment(ref NumProcessedMessages);
            IDataflowMessage <TOut> result = m_DecoratedTransformation.Transform(item);

            if (result.IsBroken)
            {
                Interlocked.Increment(ref NumBrokenMessages);
            }
            return(result);
        }
        public IDataflowMessage <TOut> Transform(IDataflowMessage <TIn> item)
        {
            Interlocked.Increment(ref m_NumMessagesProcessed);
            IDataflowMessage <TOut> result = m_DecoratedTransformation.Transform(item);

            if (result.IsEmpty)
            {
                Interlocked.Increment(ref m_NumEmptyMessages);
            }

            return(result);
        }