Example #1
0
        /// <summary>
        /// Processes the event, returning true if it passes the metrics filter
        /// and thus updates a value, or false if it doesn't pass the filter.
        /// </summary>
        /// <param name="evt"></param>
        /// <returns></returns>
        public bool ProcessEvent(MungServerEvent evt)
        {
            lock (Sync) {
                if (!Total.Filter(evt))
                {
                    return(false);
                }
                var at = Metric.Period.StandardizeDate(DateTime.UtcNow);

                var updates = new List <MetricValue>();

                foreach (var filter in FilterBuilder.Filters(evt.Data, Dimensions))
                {
                    Console.WriteLine("Filter: {0}", filter);
                    Dictionary <string, double> values = new Dictionary <string, double>();

                    if (!Aggregates.ContainsKey(filter))
                    {
                        var agg = AggregateFactory.Default.Get(Metric);;
                        Aggregates[filter] = agg;
                    }

                    var value = Aggregates[filter].Accumulate(evt);
                }
            }
            return(true);
        }
Example #2
0
        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));
        }
Example #3
0
        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));
        }
Example #4
0
        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);
                }
            }
        }
Example #5
0
        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);
                    }
                });
            }
        }
Example #6
0
 protected override void ProcessEvent(MungServerEvent evt)
 {
     Send(evt);
 }
Example #7
0
 public abstract double Accumulate(MungServerEvent evt);
Example #8
0
 public double EvaluateNumeric(MungServerEvent evt, string expression)
 {
     return(JsonExpression.EvalulateNumber(evt.Token, expression));
 }
Example #9
0
 public double EvaluateNumeric(MungServerEvent evt)
 {
     return(EvaluateNumeric(evt, Expression));
 }
 protected override void ProcessEvent(MungServerEvent evt)
 {
     _relationizer.Write(evt.Data, evt.Type);
 }
Example #11
0
 public override double Accumulate(MungServerEvent evt)
 {
     Count++;
     Sum += EvaluateNumeric(evt);
     return(Terminate());
 }
Example #12
0
 public override double Accumulate(MungServerEvent evt)
 {
     Count++;
     return(Terminate());
 }