public WorkloadStatisticsDecoratorTransformation(Guid groupGuid, ZContext ctx, ITransformationFunctor <TIn, TOut> decoratedTransformation, int boundedCapacity, Func <int> incMsg, Func <int> outMsg, CancellationToken ct)
     : base(groupGuid, ctx, DataflowNetworkConstituent.Transformation, boundedCapacity, ct)
 {
     m_DecoratedTransformation = decoratedTransformation;
     m_InMsgFunc  = incMsg;
     m_OutMsgFunc = outMsg;
     m_nms        = 0;
 }
Пример #2
0
        /// <summary>
        /// Creates a transformation that takes one input and produces one output for each.
        /// </summary>
        /// <typeparam name="TIn"></typeparam>
        /// <typeparam name="TOut"></typeparam>
        /// <param name="transformation"></param>
        /// <param name="boundedCapacity"></param>
        /// <returns></returns>
        public TransformBlock <IDataflowMessage <TIn>, IDataflowMessage <TOut> > CreateTransform <TIn, TOut>(ITransformation <TIn, TOut> transformation, int boundedCapacity = -1)
        {
            TransformBlock <IDataflowMessage <TIn>, IDataflowMessage <TOut> > block = null;

            ITransformationFunctor <TIn, TOut> transFunc = transformation
                                                           .WithExceptionHandler(m_LogAgent, this)
                                                           .WithLogging(m_LogAgent)
                                                           .WithWorkloadStatistics(boundedCapacity, () => block.InputCount, () => block.OutputCount, m_ctx, this.m_DfnGuid, m_Cts.Token);// x() f(), functionPointer())// MsgInFunc(), MsgInFunc())// m_MsgInFunc, m_MsgOutFunc)

            if (m_LogStatistics)
            {
                transFunc = transFunc.WithStatistics(m_LogAgent);
                m_StatisticsLoggers.Add((IStatisticsLogger)transFunc);
            }

            block = new TransformBlock <IDataflowMessage <TIn>, IDataflowMessage <TOut> >(
                transFunc
                .AsFunction(), CreateDefaultExecutionOptions(boundedCapacity));

            return(block);
        }
 public static ITransformationFunctor <TIn, TOut> WithStatistics <TIn, TOut>(this ITransformationFunctor <TIn, TOut> decoratedTransformation, ILogAgent logAgent)
 {
     return(new StatisticsLogDecoratorTransformation <TIn, TOut>(decoratedTransformation, logAgent));
 }
Пример #4
0
 public static ITransformationFunctor <TIn, TOut> WithWorkloadStatistics <TIn, TOut>(this ITransformationFunctor <TIn, TOut> decoratedTransformation, int boundedCapacity, Func <int> incMsgCnt, Func <int> outMsgCnt, ZContext ctx, Guid groupguid, CancellationToken ct)
 {
     return(new WorkloadStatisticsDecoratorTransformation <TIn, TOut>(groupguid, ctx, decoratedTransformation, boundedCapacity, incMsgCnt, outMsgCnt, ct));
 }
 public LogDecoratorTransformation(ITransformationFunctor <TIn, TOut> decoratedTransformation, ILogAgent logAgent)
 {
     m_DecoratedTransformation = decoratedTransformation;
     m_LogAgent = logAgent;
 }
Пример #6
0
 public static ITransformationFunctor <TIn, TOut> SkipEmpty <TIn, TOut>(this ITransformationFunctor <TIn, TOut> decoratedTransformation)
 {
     return(new SkipEmptyDecoratorTransformation <TIn, TOut>(decoratedTransformation));
 }
 public SkipEmptyDecoratorTransformation(ITransformationFunctor <TIn, TOut> decoratedTransformation)
 {
     m_DecoratedTransformation = decoratedTransformation;
 }
 public StatisticsLogDecoratorTransformation(ITransformationFunctor <TIn, TOut> decoratedTransformation, ILogAgent logAgent)
     : base(logAgent, decoratedTransformation.Title, DataflowNetworkConstituent.Transformation)
 {
     m_DecoratedTransformation = decoratedTransformation;
 }
Пример #9
0
 public static Func <IDataflowMessage <TIn>, IDataflowMessage <TOut> > AsFunction <TIn, TOut>(this ITransformationFunctor <TIn, TOut> transformation)
 {
     return(transformation.Transform);
 }