예제 #1
0
 private void BuildTreatmentLog(ConfigurationOptions config)
 {
     impressionsCache   = new InMemoryImpressionsCache(new BlockingQueue <KeyImpression>(TreatmentLogSize));
     treatmentLog       = new SelfUpdatingTreatmentLog(treatmentSdkApiClient, TreatmentLogRefreshRate, impressionsCache);
     impressionListener = new AsynchronousImpressionListener();
     ((AsynchronousImpressionListener)impressionListener).AddListener(treatmentLog);
     if (config.ImpressionListener != null)
     {
         ((AsynchronousImpressionListener)impressionListener).AddListener(config.ImpressionListener);
     }
 }
예제 #2
0
 public ImpressionsManager(IImpressionsLog impressionsLog,
                           IImpressionListener customerImpressionListener,
                           IImpressionsCounter impressionsCounter,
                           bool addPreviousTime,
                           ImpressionsMode impressionsMode,
                           IImpressionsObserver impressionsObserver = null)
 {
     _impressionsLog             = impressionsLog;
     _customerImpressionListener = customerImpressionListener;
     _impressionsCounter         = impressionsCounter;
     _addPreviousTime            = addPreviousTime;
     _optimized           = impressionsMode == ImpressionsMode.Optimized && addPreviousTime;
     _impressionsObserver = impressionsObserver;
 }
예제 #3
0
 public ImpressionsManager(IImpressionsLog impressionsLog,
                           IImpressionListener customerImpressionListener,
                           IImpressionsCounter impressionsCounter,
                           bool addPreviousTime,
                           ImpressionsMode impressionsMode,
                           ITelemetryRuntimeProducer telemetryRuntimeProducer,
                           ITasksManager taskManager,
                           IImpressionsObserver impressionsObserver = null)
 {
     _impressionsLog             = impressionsLog;
     _customerImpressionListener = customerImpressionListener;
     _impressionsCounter         = impressionsCounter;
     _addPreviousTime            = addPreviousTime;
     _optimized                = impressionsMode == ImpressionsMode.Optimized && addPreviousTime;
     _impressionsObserver      = impressionsObserver;
     _telemetryRuntimeProducer = telemetryRuntimeProducer;
     _taskManager              = taskManager;
 }
예제 #4
0
        public JSONFileClient(string splitsFilePath, string segmentsFilePath, ISegmentCache segmentCacheInstance = null, ISplitCache splitCacheInstance = null, IImpressionListener treatmentLogInstance = null, bool isLabelsEnabled = true)
        {
            segmentCache = segmentCacheInstance ?? new InMemorySegmentCache(new ConcurrentDictionary <string, Segment>());
            var segmentFetcher     = new JSONFileSegmentFetcher(segmentsFilePath, segmentCache);
            var splitParser        = new InMemorySplitParser(segmentFetcher, segmentCache);
            var splitChangeFetcher = new JSONFileSplitChangeFetcher(splitsFilePath);
            var splitChangesResult = splitChangeFetcher.Fetch(-1);
            var parsedSplits       = new ConcurrentDictionary <string, ParsedSplit>();

            foreach (Split split in splitChangesResult.splits)
            {
                parsedSplits.TryAdd(split.name, splitParser.Parse(split));
            }
            splitCache         = splitCacheInstance ?? new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>(parsedSplits));
            impressionListener = treatmentLogInstance;
            splitter           = new Splitter();
            LabelsEnabled      = isLabelsEnabled;
            manager            = new SplitManager(splitCache);
        }
예제 #5
0
 protected abstract ConfigurationOptions GetConfigurationOptions(string url = null, int?eventsPushRate = null, int?eventsQueueSize = null, int?featuresRefreshRate = null, bool?ipAddressesEnabled = null, IImpressionListener impressionListener = null);
예제 #6
0
 public void AddListener(IImpressionListener worker)
 {
     workers.Add(worker);
 }
예제 #7
0
 protected override ConfigurationOptions GetConfigurationOptions(string url = null, int?eventsPushRate = null, int?eventsQueueSize = null, int?featuresRefreshRate = null, bool?ipAddressesEnabled = null, IImpressionListener impressionListener = null)
 {
     return(new ConfigurationOptions
     {
         Endpoint = url,
         EventsEndpoint = url,
         TelemetryServiceURL = url,
         ReadTimeout = 20000,
         ConnectionTimeout = 20000,
         ImpressionListener = impressionListener,
         FeaturesRefreshRate = featuresRefreshRate ?? 1,
         SegmentsRefreshRate = 1,
         ImpressionsRefreshRate = 1,
         EventsPushRate = eventsPushRate ?? 1,
         EventsQueueSize = eventsQueueSize,
         IPAddressesEnabled = ipAddressesEnabled,
         StreamingEnabled = false,
     });
 }
예제 #8
0
        protected override ConfigurationOptions GetConfigurationOptions(string url = null, int?eventsPushRate = null, int?eventsQueueSize = null, int?featuresRefreshRate = null, bool?ipAddressesEnabled = null, IImpressionListener impressionListener = null)
        {
            var cacheConfig = new CacheAdapterConfigurationOptions
            {
                Host     = Host,
                Port     = Port,
                Password = Password,
                Database = Database
            };

            return(new ConfigurationOptions
            {
                ImpressionListener = impressionListener,
                FeaturesRefreshRate = featuresRefreshRate ?? 1,
                SegmentsRefreshRate = 1,
                ImpressionsRefreshRate = 1,
                EventsPushRate = eventsPushRate ?? 1,
                IPAddressesEnabled = ipAddressesEnabled,
                CacheAdapterConfig = cacheConfig,
                Mode = Mode.Consumer
            });
        }