public void LoadRules()

in sdk/src/Core/Sampling/RuleCache.cs [143:179]


        public void LoadRules(List<SamplingRule> newRules)
        {
            IDictionary<string, SamplingRule> oldRules;
            IDictionary<string, SamplingRule> tempCache = new Dictionary<string, SamplingRule>();

            newRules.Sort((x, y) => x.CompareTo(y)); // Sort by priority and rule name

            _cacheLock.EnterReadLock();
            try
            {
                oldRules = new Dictionary<string, SamplingRule>(_cache);
            }
            finally
            {
                _cacheLock.ExitReadLock();
            }

            foreach (var newRule in newRules)
            {
                var key = newRule.RuleName;
                tempCache[key] = newRule;
                if (oldRules.TryGetValue(key, out SamplingRule oldRule))
                {
                    newRule.Merge(oldRule);
                }
            }
            _cacheLock.EnterWriteLock();
            try
            {
                _cache = tempCache; // update cache
            }

            finally
            {
                _cacheLock.ExitWriteLock();
            }
        }