public void Execute(MetricExecutionContext context) { long inputCount = context.Services.FilterService.NumEventsEvaluated; long schedDepth = context.Services.SchedulingService.ScheduleHandleCount; long deltaInputCount = _lastMetric == null ? inputCount : inputCount - _lastMetric.InputCount; var metric = new EngineMetric(_engineURI, _metricScheduleService.CurrentTime, inputCount, deltaInputCount, schedDepth); _lastMetric = metric; _metricEventRouter.Route(metric); _metricScheduleService.Add(Interval, this); }
public void SetContext(EPRuntime runtime, EPServicesContext servicesContext) { var metricsExecutionContext = new MetricExecutionContext(servicesContext, runtime, _stmtMetricRepository); // create all engine and statement executions _metricExecEngine = new MetricExecEngine(this, _engineUri, _schedule, _specification.EngineInterval); _metricExecStmtGroupDefault = new MetricExecStatement(this, _schedule, _specification.StatementInterval, 0); int countGroups = 1; foreach (KeyValuePair <String, ConfigurationMetricsReporting.StmtGroupMetrics> entry in _specification.StatementGroups) { var config = entry.Value; var metricsExecution = new MetricExecStatement(this, _schedule, config.Interval, countGroups); _statementGroupExecutions.Put(entry.Key, metricsExecution); countGroups++; } // last assign this volatile variable so the time event processing may schedule callbacks _executionContext = metricsExecutionContext; }
public void Execute(MetricExecutionContext context) { long timestamp = metricScheduleService.CurrentTime; StatementMetric[] metrics = context.StatementMetricRepository.ReportGroup(statementGroup); if (metrics != null) { for (int i = 0; i < metrics.Length; i++) { StatementMetric metric = metrics[i]; if (metric != null) { metric.Timestamp = timestamp; metricEventRouter.Route(metrics[i]); } } } if (interval != -1) { metricScheduleService.Add(interval, this); } }
public void Execute(MetricExec execution, MetricExecutionContext executionContext) { _threadPool.Submit(() => execution.Execute(executionContext)); }