/// <summary> /// Gets the calculator for the given activity. /// </summary> /// <typeparam name="T">The type of the calculator to get.</typeparam> /// <param name="activity">The name of the activity.</param> private T GetKpiCalculator <T>(string activity) where T : PerformanceCalculatorBase { CalculatorInfo newCalculatorInfo = m_calculatorsDict.GetOrAdd( activity, (key) => { PerformanceCalculatorBase newCalculator = Activator.CreateInstance(typeof(T), activity) as PerformanceCalculatorBase; newCalculator.Parent = this; CalculatorInfo calcInfo = new CalculatorInfo(newCalculator); m_calculatorsBag.Add(calcInfo); return(calcInfo); }); if ((newCalculatorInfo == null) || (newCalculatorInfo.Calculator == null)) { throw new SeeingSharpException("Unable to create a calculator of type " + typeof(T) + " for activity " + activity + "!"); } T result = newCalculatorInfo.Calculator as T; if (result == null) { throw new SeeingSharpException("Unable to create a calculator of type " + typeof(T) + " for activity " + activity + "!"); } return(result); }
public CalculatorInfo(PerformanceCalculatorBase calculator) { this.Calculator = calculator; this.Results = new BlockingCollection <PerformanceAnalyzeResultBase>(); }
/// <summary> /// Initializes a new instance of the <see cref="PerformanceAnalyzeResultBase"/> class. /// </summary> /// <param name="calculator">The Calculator this result object belongs to.</param> /// <param name="keyTimestamp">The key of this result object..</param> internal PerformanceAnalyzeResultBase(PerformanceCalculatorBase calculator, DateTime keyTimestamp) { m_calculator = calculator; m_keyTimestamp = keyTimestamp; }