Esempio n. 1
0
 /// <summary>
 /// Merges the passed in GroupedRemoteSettings from buckets into this instance.
 /// Identical settings in this instance will be overwritten by those in buckets.
 /// </summary>
 /// <param name="buckets"></param>
 /// <param name="logger"></param>
 public void Merge(GroupedRemoteSettings buckets, IRemoteSettingsLogger logger)
 {
     foreach (string key in buckets.Keys)
     {
         RemoteSettingPossibilities remoteSettingPossibilities = buckets[key];
         if (!TryGetValue(key, out RemoteSettingPossibilities value))
         {
             value = (base[key] = new RemoteSettingPossibilities());
         }
         foreach (string key2 in remoteSettingPossibilities.Keys)
         {
             List <RemoteSetting> list = remoteSettingPossibilities[key2];
             if (!value.TryGetValue(key2, out List <RemoteSetting> value2))
             {
                 value2 = (value[key2] = new List <RemoteSetting>());
             }
             for (int num = list.Count - 1; num >= 0; num--)
             {
                 RemoteSetting remoteSetting = list[num];
                 int           num2          = value2.FindIndex((RemoteSetting s) => s.Name == remoteSetting.Name && s.ScopeString == remoteSetting.ScopeString);
                 if (num2 != -1)
                 {
                     logger.LogVerbose($"Overwriting RemoteSetting during merge: Old value from {value2[num2]}");
                     logger.LogVerbose($"Overwriting RemoteSetting during merge: New value from {remoteSetting}");
                     value2[num2] = remoteSetting;
                 }
                 else
                 {
                     value2.Insert(0, remoteSetting);
                 }
             }
         }
     }
 }
Esempio n. 2
0
 public DirectoryReader(string rootPath, string directoryName, bool markProcessed, int priority, IRemoteSettingsLogger logger)
 {
     path = Path.Combine(rootPath, directoryName);
     this.directoryName = directoryName;
     this.markProcessed = markProcessed;
     Priority           = priority;
     this.logger        = logger;
 }
 public RemoteSettingsStorageHandler(ICollectionKeyValueStorage storage, string collectionPathPrefix, IScopeParserFactory scopeParserFactory, bool isVersioned, IRemoteSettingsLogger logger)
 {
     CodeContract.RequiresArgumentNotNull <ICollectionKeyValueStorage>(storage, "storage");
     CodeContract.RequiresArgumentNotNull <string>(collectionPathPrefix, "collectionPathPrefix");
     CodeContract.RequiresArgumentNotNull <IScopeParserFactory>(scopeParserFactory, "scopeParserFactory");
     remoteSettingsStorage   = storage;
     CollectionPathPrefix    = collectionPathPrefix;
     this.isVersioned        = isVersioned;
     this.scopeParserFactory = scopeParserFactory;
     this.logger             = logger;
 }
Esempio n. 4
0
 /// <summary>
 /// Construct a new Remote Setting instance with values taken from the initializer.
 /// </summary>
 /// <param name="initializer">Values with which to initialize</param>
 public RemoteSettings(RemoteSettingsInitializer initializer)
 {
     initializer.FillWithDefaults();
     scopeParserFactory      = initializer.ScopeParserFactory;
     nonScopedStorageHandler = initializer.NonScopedRemoteSettingsStorageHandler;
     foreach (IScopeFilterProvider scopeFilterProvider in initializer.ScopeFilterProviders)
     {
         RegisterFilterProvider(scopeFilterProvider);
     }
     remoteSettingsProviders     = initializer.RemoteSettingsProviders.Select((Func <RemoteSettingsInitializer, IRemoteSettingsProvider> x) => x(initializer)).ToList();
     stableRemoteSettingProvider = initializer.StableRemoteSettingsProvider(initializer);
     isUpdateDisabled            = initializer.IsUpdatedDisabled;
     logger = initializer.RemoteSettingsLogger;
 }
        internal RemoteSettingsInitializer FillWithDefaults()
        {
            //IL_0045: Unknown result type (might be due to invalid IL or missing references)
            //IL_004f: Expected O, but got Unknown
            if (!UsePathPrefix.HasValue)
            {
                UsePathPrefix = true;
            }
            if (RemoteSettingsFileName == null)
            {
                RemoteSettingsFileName = "Default.json";
            }
            if (KeyValueStorage == null)
            {
                KeyValueStorage = new DefaultRegistryKeyValueStorage((IRegistryTools3)(object)new RegistryTools());
            }
            if (FilterProvider == null)
            {
                FilterProvider = new DefaultRemoteSettingsFilterProvider(TelemetryService.DefaultSession);
            }
            if (RemoteSettingsLogger == null)
            {
                RemoteSettingsLogger = new RemoteSettingsLogger(FilterProvider, RemoteSettingsStorageHandlerFactory.BuildIsLoggingEnabled(KeyValueStorage, UsePathPrefix.HasValue && UsePathPrefix.Value)());
            }
            if (ScopeParserFactory == null)
            {
                ScopeParserFactory = new ScopeParserFactory(this);
            }
            RemoteSettingsStorageHandlerFactory remoteSettingsStorageHandlerFactory = new RemoteSettingsStorageHandlerFactory(RemoteSettingsLogger);

            if (VersionedRemoteSettingsStorageHandler == null)
            {
                VersionedRemoteSettingsStorageHandler = remoteSettingsStorageHandlerFactory.BuildVersioned(KeyValueStorage, UsePathPrefix.HasValue && UsePathPrefix.Value, RemoteSettingsFileName, ScopeParserFactory);
            }
            if (CacheableRemoteSettingsStorageHandler == null)
            {
                CacheableRemoteSettingsStorageHandler = remoteSettingsStorageHandlerFactory.Build(KeyValueStorage, UsePathPrefix.HasValue && UsePathPrefix.Value, FilterProvider, ScopeParserFactory);
            }
            if (LocalTestRemoteSettingsStorageHandler == null)
            {
                LocalTestRemoteSettingsStorageHandler = remoteSettingsStorageHandlerFactory.Build(KeyValueStorage, UsePathPrefix.HasValue && UsePathPrefix.Value, "LocalTest", ScopeParserFactory);
            }
            if (LiveRemoteSettingsStorageHandlerFactory == null)
            {
                LiveRemoteSettingsStorageHandlerFactory = (() => remoteSettingsStorageHandlerFactory.Build(new MemoryKeyValueStorage(), false, string.Empty, ScopeParserFactory));
            }
            if (NonScopedRemoteSettingsStorageHandler == null && NonScopedSettingsKeyValueStorage != null)
            {
                NonScopedRemoteSettingsStorageHandler = remoteSettingsStorageHandlerFactory.Build(NonScopedSettingsKeyValueStorage, false, string.Empty, ScopeParserFactory);
            }
            if (IsUpdatedDisabled == null)
            {
                IsUpdatedDisabled = RemoteSettingsStorageHandlerFactory.BuildIsUpdateDisabled(KeyValueStorage, UsePathPrefix.HasValue && UsePathPrefix.Value);
            }
            if (RemoteFileReaderFactory == null)
            {
                RemoteFileReaderFactory = new RemoteSettingsRemoteFileReaderFactory(RemoteSettingsFileName);
            }
            if (RemoteSettingsValidator == null)
            {
                RemoteSettingsValidator = new RemoteSettingsValidator(new CycleDetection(), VersionedRemoteSettingsStorageHandler);
            }
            if (RemoteSettingsParser == null)
            {
                RemoteSettingsParser = new RemoteSettingsParser(RemoteSettingsValidator);
            }
            if (TargetedNotificationsParser == null)
            {
                TargetedNotificationsParser = new TargetedNotificationsParser();
            }
            if (ExperimentationService == null)
            {
                ExperimentationService = Coding4Fun.VisualStudio.Experimentation.ExperimentationService.Default;
            }
            if (ExperimentationService == null)
            {
                ExperimentationService = Coding4Fun.VisualStudio.Experimentation.ExperimentationService.Default;
            }
            if (TelemetryNotificationService == null)
            {
                TelemetryNotificationService = Coding4Fun.VisualStudio.Telemetry.Notification.TelemetryNotificationService.Default;
            }
            if (Telemetry == null)
            {
                Telemetry = new DefaultRemoteSettingsTelemetry(TelemetryService.DefaultSession);
            }
            if (TargetedNotificationsTelemetry == null)
            {
                TargetedNotificationsTelemetry = new DefaultTargetedNotificationsTelemetry(TelemetryService.DefaultSession);
            }
            if (TargetedNotificationsCacheStorage == null)
            {
                TargetedNotificationsCacheStorage = new TargetedNotificationsJsonStorageProvider(this);
            }
            if (HttpWebRequestFactory == null)
            {
                HttpWebRequestFactory = new HttpWebRequestFactory();
            }
            if (ScopeFilterProviders == null)
            {
                new ProcessInformationProvider();
                ScopeFilterProviders = new List <IScopeFilterProvider>
                {
                    new FlightScopeFilterProvider(ExperimentationService),
                    new InternalScopeFilterProvider(TelemetryService.DefaultSession),
                    new VersionScopeFilterProvider(FilterProvider),
                    new ExeNameScopeFilterProvider(FilterProvider),
                    new ScopeScopeFilterProvider(VersionedRemoteSettingsStorageHandler, ScopeParserFactory)
                };
            }
            if (RemoteSettingsProviders == null)
            {
                RemoteSettingsProviders = new List <Func <RemoteSettingsInitializer, IRemoteSettingsProvider> >
                {
                    (RemoteSettingsInitializer remoteSettingsInitializer) => new LocalTestProvider(remoteSettingsInitializer),
                    (RemoteSettingsInitializer remoteSettingsInitializer) => new TargetedNotificationsProvider(remoteSettingsInitializer),
                    (RemoteSettingsInitializer remoteSettingsInitializer) => new RemoteControlRemoteSettingsProvider(remoteSettingsInitializer)
                };
            }
            if (LocalTestDirectories == null)
            {
                string rootPath = Path.Combine(GetLocalAppDataRoot(), "LocalTest");
                LocalTestDirectories = new List <IDirectoryReader>
                {
                    new DirectoryReader(rootPath, "PersistentActions", false, 0, RemoteSettingsLogger),
                    new DirectoryReader(rootPath, "OneTimeActions", true, 10, RemoteSettingsLogger)
                };
            }
            if (LocalTestParser == null)
            {
                LocalTestParser = new LocalTestParser();
            }
            if (StableRemoteSettingsProvider == null)
            {
                StableRemoteSettingsProvider = ((RemoteSettingsInitializer remoteSettingsInitializer) => new StableRemoteSettingsProvider(remoteSettingsInitializer));
            }
            if (StableSettingRootSubCollections == null)
            {
                StableSettingRootSubCollections = Enumerable.Empty <string>();
            }
            return(this);
        }
 public RemoteSettingsProviderBase(IRemoteSettingsStorageHandler remoteSettingsStorageHandler, IRemoteSettingsLogger logger = null)
 {
     currentStorageHandler = remoteSettingsStorageHandler;
     this.logger           = logger;
 }
Esempio n. 7
0
 public ScopeParserFactory(RemoteSettingsInitializer initializer)
 {
     logger = initializer.RemoteSettingsLogger;
 }
Esempio n. 8
0
 public RemoteSettingsStorageHandlerFactory(IRemoteSettingsLogger logger)
 {
     this.logger = logger;
 }