示例#1
0
        public override void SetOverride(string appName, string settingName, string value, TTier tier, TDataCenter dataCenter)
        {
            var overrideKey   = new OverrideKey(appName, tier, dataCenter);
            var overrideValue = new SettingValue <TTier, TDataCenter>(settingName, value, tier, dataCenter);

            _overrides.AddOrUpdate(
                overrideKey,
                key => new Overrides {
                [settingName] = overrideValue
            },
                (key, existing) =>
            {
                existing[settingName] = overrideValue;
                _overridesByApp.AddOrUpdate(
                    appName,
                    key => new List <OverrideKey> {
                    overrideKey
                },
                    (key, existing) =>
                {
                    existing.Add(overrideKey);
                    return(existing);
                }
                    );

                return(existing);
            }
                );

            Changed?.Invoke(this, EventArgs.Empty);
        }
示例#2
0
        public override void ClearOverride(string appName, string settingName, TTier tier, TDataCenter dataCenter)
        {
            var overrideKey = new OverrideKey(appName, tier, dataCenter);

            if (_overrides.TryGetValue(overrideKey, out var overrides))
            {
                overrides.Remove(settingName);
            }

            Changed?.Invoke(this, EventArgs.Empty);
        }