public void EnqueueEvent(MungServerEvent evt) { if (_events.Count < 100) { _events.Enqueue(evt); } }
protected override Task OnReceived(IRequest request, string connectionId, string data) { var evt = new MungServerEvent(data); MungState.App.Pipeline.Process(evt); return base.OnReceived(request, connectionId, data); }
public void Process(MungServerEvent evt) { foreach (var subs in _active.Values) { try { subs.EnqueueEvent(evt); } catch (Exception ex) { Debug.WriteLine(ex.Message + "\r\n" + ex.StackTrace); } } }
public bool Filter(MungServerEvent evt) { if (!string.IsNullOrEmpty(Metric.EventType) && Metric.EventType != evt.Type) { return false; } if (string.IsNullOrEmpty(Metric.Filter)) { return true; } return JsonExpression.IsTrue(evt.Token, Metric.Filter); }
public void Process(MungServerEvent evt) { foreach (var subs in _active.Values) { try { subs.EnqueueEvent(evt); } catch (Exception ex) { Debug.WriteLine(ex.Message + "\r\n" + ex.StackTrace); } } }
public override double Accumulate(MungServerEvent evt) { Sum += EvaluateNumeric(evt); return Terminate(); }
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); } }); } }
public double EvaluateNumeric(MungServerEvent evt, string expression) { return JsonExpression.EvalulateNumber(evt.Token, expression); }
protected abstract void ProcessEvent(MungServerEvent evt);
public abstract double Accumulate(MungServerEvent evt);
protected override void ProcessEvent(MungServerEvent evt) { _relationizer.Write(evt.Data, evt.Type); }
public override double Accumulate(MungServerEvent evt) { Count++; return Terminate(); }
protected override void ProcessEvent(MungServerEvent evt) { try { CurrentState.CheckIsCurrent(); if (CurrentState.ProcessEvent(evt)) { // Let our loop know that we need to send data to the client. _clientNeedData = true; // Let our event loop know that we need to update redis. _stateIsDirty = true; } } catch (Exception ex) { foreach (var callback in _errorCallbacks.Values) { callback(ex.Message + "\r\n" + ex.StackTrace); } } }
protected override void ProcessEvent(MungServerEvent evt) { Send(evt); }
public double EvaluateNumeric(MungServerEvent evt) { return EvaluateNumeric(evt, Expression); }
protected abstract void ProcessEvent(MungServerEvent evt);
public void EnqueueEvent(MungServerEvent evt) { if (_events.Count < 100) { _events.Enqueue(evt); } }