private void SaveSettingsInternal(string newCollectionPath, GroupedRemoteSettings groupedSettings)
 {
     foreach (KeyValuePair <string, RemoteSettingPossibilities> groupedSetting in groupedSettings)
     {
         string text = Path.Combine(newCollectionPath, groupedSetting.Key);
         foreach (KeyValuePair <string, List <RemoteSetting> > item in groupedSetting.Value)
         {
             bool   flag  = false;
             string text2 = text;
             if (item.Value.Count > 1 || item.Value[0].HasScope)
             {
                 flag  = true;
                 text2 = Path.Combine(text2, item.Key + "*");
             }
             for (int i = 0; i < item.Value.Count; i++)
             {
                 RemoteSetting remoteSetting = item.Value[i];
                 string        text3         = remoteSetting.Name;
                 if (flag)
                 {
                     text3 = i.ToString() + ":" + text3;
                 }
                 if (remoteSetting.HasScope)
                 {
                     text3 = text3 + ":" + remoteSetting.ScopeString;
                 }
                 remoteSettingsStorage.SetValue(text2, text3, remoteSetting.Value);
             }
         }
     }
 }
Esempio n. 2
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);
                 }
             }
         }
     }
 }
 public void SaveNonScopedSetting(RemoteSetting setting)
 {
     if (setting.HasScope)
     {
         throw new InvalidOperationException("Cannot save setting that has scope");
     }
     remoteSettingsStorage.SetValue(setting.Path, setting.Name, setting.Value);
 }