protected override void ProcessEvent(MungServerEvent evt) { var json = evt.Token.ToString(); if (PassesFilter(json)) { var updates = new List <JavascriptMetricUpdate>(); foreach (var filter in FilterBuilder.Filters(evt.Data, _dimensions)) { Console.WriteLine("Filter: {0}", filter); Dictionary <string, double> values = new Dictionary <string, double>(); foreach (var period in ReportingPeriods) { var key = PeriodMetric.BaseKey(Name, period, filter); if (!_aggregators.ContainsKey(key)) { var agg = new PeriodMetric(Name, _javascript, filter, period); _aggregators[key] = agg; } _aggregators[key].ProcessEvent(json); } updates.Add(new JavascriptMetricUpdate() { Periods = values, Filter = filter }); } // Do all the callbacks in the background Task.Run(() => { foreach (var callback in _updateCallbacks.Values) { callback(updates); } }); } }
protected override void ProcessEvent(MungServerEvent evt) { var json = evt.Token.ToString(); if (PassesFilter(json)) { var updates = new List<JavascriptMetricUpdate>(); foreach (var filter in FilterBuilder.Filters(evt.Data, _dimensions)) { Console.WriteLine("Filter: {0}", filter); Dictionary<string, double> values = new Dictionary<string, double>(); foreach (var period in ReportingPeriods) { var key = PeriodMetric.BaseKey(Name, period, filter); if (!_aggregators.ContainsKey(key)) { var agg = new PeriodMetric(Name, _javascript, filter, period); _aggregators[key] = agg; } _aggregators[key].ProcessEvent(json); } updates.Add(new JavascriptMetricUpdate() { Periods = values, Filter = filter }); } // Do all the callbacks in the background Task.Run(() => { foreach (var callback in _updateCallbacks.Values) { callback(updates); } }); } }