Beispiel #1
0
        /// <summary>
        ///     Ctor.
        /// </summary>
        /// <param name="specification">configuration</param>
        /// <param name="runtimeURI">runtime URI</param>
        /// <param name="rwLockManager">the read-write lock manager</param>
        public MetricReportingServiceImpl(
            ConfigurationRuntimeMetricsReporting specification,
            string runtimeURI,
            IReaderWriterLockManager rwLockManager)
        {
            this.specification = specification;
            this.runtimeURI = runtimeURI;
            if (!specification.IsEnableMetricsReporting) {
                schedule = null;
                stmtMetricRepository = null;
                statementMetricHandles = null;
                metricsExecutor = null;
                return;
            }

            if (specification.IsEnableMetricsReporting) {
                //MetricUtil.Initialize();
            }

            schedule = new MetricScheduleService();

            stmtMetricRepository = new StatementMetricRepository(runtimeURI, specification, rwLockManager);
            statementGroupExecutions = new LinkedHashMap<string, MetricExecStatement>();
            statementMetricHandles = new Dictionary<DeploymentIdNamePair, StatementMetricHandle>();
            StatementOutputHooks = new CopyOnWriteArraySet<MetricsStatementResultListener>();

            if (specification.IsThreading) {
                metricsExecutor = new MetricsExecutorThreaded(runtimeURI);
            }
            else {
                metricsExecutor = new MetricsExecutorUnthreaded();
            }
        }
        /// <summary>
        ///     Ctor.
        /// </summary>
        /// <param name="runtimeUri">runtime URI</param>
        /// <param name="specification">specifies statement groups</param>
        /// <param name="rwLockManager">the lock manager</param>
        public StatementMetricRepository(
            string runtimeUri,
            ConfigurationRuntimeMetricsReporting specification,
            IReaderWriterLockManager rwLockManager)
        {
            this.specification = specification;
            var numGroups = specification.StatementGroups.Count + 1; // +1 for default group (remaining stmts)
            groupMetrics = new StatementMetricArray[numGroups];

            // default group
            groupMetrics[0] = new StatementMetricArray(
                runtimeUri,
                "group-default",
                100,
                false,
                rwLockManager);

            // initialize all other groups
            var countGroups = 1;
            foreach (var entry in specification.StatementGroups) {
                var config = entry.Value;

                var initialNumStmts = config.NumStatements;
                if (initialNumStmts < 10) {
                    initialNumStmts = 10;
                }

                groupMetrics[countGroups] = new StatementMetricArray(
                    runtimeUri,
                    "group-" + countGroups,
                    initialNumStmts,
                    config.IsReportInactive,
                    rwLockManager);
                countGroups++;
            }

            statementGroups = new Dictionary<DeploymentIdNamePair, int>();
        }