Beispiel #1
0
        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);
        }
Beispiel #2
0
        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;
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
 public void Execute(MetricExec execution, MetricExecutionContext executionContext)
 {
     _threadPool.Submit(() => execution.Execute(executionContext));
 }