Exemple #1
0
        public void Track(List <KeyImpression> impressions)
        {
            if (impressions.Any())
            {
                if (_impressionsLog != null)
                {
                    Task.Factory.StartNew(() =>
                    {
                        if (_optimized)
                        {
                            var optimizedImpressions = impressions.Where(i => ShouldQueueImpression(i)).ToList();
                            _impressionsLog.Log(optimizedImpressions);
                        }
                        else
                        {
                            _impressionsLog.Log(impressions);
                        }
                    });
                }

                if (_customerImpressionListener != null)
                {
                    Task.Factory.StartNew(() =>
                    {
                        foreach (var imp in impressions)
                        {
                            _customerImpressionListener.Log(imp);
                        }
                    });
                }
            }
        }
Exemple #2
0
        protected void RecordStats(Key key, string feature, long?changeNumber, string label, long start, string treatment, string operation, Stopwatch clock)
        {
            if (metricsLog != null)
            {
                metricsLog.Time(SdkGetTreatment, clock.ElapsedMilliseconds);
            }

            if (impressionListener != null)
            {
                KeyImpression impression = BuildImpression(key.matchingKey, feature, treatment, start, changeNumber, LabelsEnabled ? label : null, key.bucketingKeyHadValue ? key.bucketingKey : null);
                impressionListener.Log(impression);
            }
        }
Exemple #3
0
        public void Track(List <KeyImpression> impressions)
        {
            if (impressions.Any())
            {
                if (_impressionsLog != null)
                {
                    var dropped = 0;
                    var queued  = 0;
                    var deduped = 0;

                    if (_optimized)
                    {
                        var optimizedImpressions = impressions.Where(i => i.Optimized).ToList();
                        deduped = impressions.Count() - optimizedImpressions.Count;

                        if (optimizedImpressions.Any())
                        {
                            dropped = _impressionsLog.Log(optimizedImpressions);
                            queued  = optimizedImpressions.Count - dropped;
                        }
                    }
                    else
                    {
                        dropped = _impressionsLog.Log(impressions);
                        queued  = impressions.Count - dropped;
                    }

                    RecordStats(queued, dropped, deduped);
                }

                if (_customerImpressionListener != null)
                {
                    Task.Factory.StartNew(() =>
                    {
                        foreach (var imp in impressions)
                        {
                            _customerImpressionListener.Log(imp);
                        }
                    });
                }
            }
        }
        private void ImpressionLog(List <KeyImpression> impressionsQueue)
        {
            if (impressionsQueue.Any())
            {
                if (_impressionsLog != null)
                {
                    Task.Factory.StartNew(() =>
                    {
                        _impressionsLog.Log(impressionsQueue);
                    });
                }

                if (_customerImpressionListener != null)
                {
                    Task.Factory.StartNew(() =>
                    {
                        foreach (var imp in impressionsQueue)
                        {
                            _customerImpressionListener.Log(imp);
                        }
                    });
                }
            }
        }