Beispiel #1
0
        public static AppMetric JoinQueryMetric(AppMetricId metricId, params IAppMetricsProvider[] collections)
        {
            if (metricId == null)
            {
                throw new ArgumentNullException(nameof(metricId));
            }

            if (collections == null || collections.Length == 0)
            {
                throw new ArgumentNullException(nameof(collections));
            }

            AppMetric retVal = null;

            foreach (IAppMetricsProvider c in collections)
            {
                AppMetric cMetric = c.QueryMetric(metricId);
                if (cMetric != null)
                {
                    if (retVal != null)
                    {
                        retVal = retVal.JoinWith(cMetric);
                    }
                    else
                    {
                        retVal = cMetric.Copy();
                    }
                }
            }

            return(retVal);
        }
Beispiel #2
0
        private static Dictionary <AppMetricId, AppMetric> JoinMetricsFromProviders(IEnumerable <IAppMetricsProvider> collections)
        {
            Dictionary <AppMetricId, AppMetric> metrics =
                new Dictionary <AppMetricId, AppMetric>();

            foreach (IAppMetricsProvider c in collections)
            {
                foreach (AppMetric cMetric in c.CollectMetrics())
                {
                    AppMetric cMetricToAdd = cMetric.Copy();
                    if (metrics.TryGetValue(cMetricToAdd.Id, out AppMetric existing))
                    {
                        metrics[cMetricToAdd.Id] = existing.JoinWith(cMetricToAdd);
                    }
                    else
                    {
                        metrics[cMetricToAdd.Id] = cMetricToAdd;
                    }
                }
            }

            return(metrics);
        }