public override AggregationService MakeService(AgentInstanceContext agentInstanceContext, MethodResolutionService methodResolutionService) { AggSvcGroupByReclaimAgedEvalFunc max = EvaluationFunctionMaxAge.Make(agentInstanceContext); AggSvcGroupByReclaimAgedEvalFunc freq = EvaluationFunctionFrequency.Make(agentInstanceContext); return(new AggSvcGroupByReclaimAgedImpl(Evaluators, Aggregators, GroupKeyBinding, Accessors, AccessAggregations, IsJoin, max, freq, methodResolutionService)); }
public override AggregationService MakeService(AgentInstanceContext agentInstanceContext, EngineImportService engineImportService, bool isSubquery, int?subqueryNumber) { AggSvcGroupByReclaimAgedEvalFunc max = EvaluationFunctionMaxAge.Make(agentInstanceContext); AggSvcGroupByReclaimAgedEvalFunc freq = EvaluationFunctionFrequency.Make(agentInstanceContext); return(new AggSvcGroupByReclaimAgedImpl(Evaluators, Aggregators, Accessors, AccessAggregations, IsJoin, max, freq)); }
public AggSvcGroupByReclaimAgedImpl(ExprEvaluator[] evaluators, AggregationMethodFactory[] aggregators, AggregationAccessorSlotPair[] accessors, AggregationStateFactory[] accessAggregations, bool @join, AggSvcGroupByReclaimAgedEvalFunc evaluationFunctionMaxAge, AggSvcGroupByReclaimAgedEvalFunc evaluationFunctionFrequency) : base(evaluators, aggregators) { _accessors = accessors; _accessAggregations = accessAggregations; _isJoin = join; _evaluationFunctionMaxAge = evaluationFunctionMaxAge; _evaluationFunctionFrequency = evaluationFunctionFrequency; _aggregatorsPerGroup = new Dictionary <Object, AggregationMethodRowAged>(); _removedKeys = new List <Object>(); }
/// <summary> /// NOTE: Code-generation-invoked method, method name and parameter order matters /// </summary> /// <param name="current">current</param> /// <param name="func">func</param> /// <param name="timeAbacus">abacus</param> /// <returns>delta</returns> public static long ComputeTimeReclaimAgeFreq( long current, AggSvcGroupByReclaimAgedEvalFunc func, TimeAbacus timeAbacus) { var maxAge = func.LongValue; if (maxAge == null || maxAge <= 0) { return current; } return timeAbacus.DeltaForSecondsDouble(maxAge.Value); }