private void Init()

in sdk/src/Core/Sampling/Local/LocalizedSamplingStrategy.cs [163:209]


        private void Init(Stream stream)
        {
            using (var reader = new StreamReader(stream))
            {
                SamplingConfiguration samplingConfiguration = JsonMapper.ToObject<SamplingConfiguration>(reader);
                if (samplingConfiguration == null)
                {
                    throw new InvalidSamplingConfigurationException("The provided sampling configuration had invalid JSON format and cannot be parsed correctly.");
                }

                if (samplingConfiguration.Default == null)
                {
                    throw new InvalidSamplingConfigurationException("No default sampling rule is provided. A default sampling rule is required.");
                }

                if ( !SupportedSamplingConfigurationVersion.Contains(samplingConfiguration.Version))
                {
                    throw new InvalidSamplingConfigurationException(
                        string.Format(
                            CultureInfo.InvariantCulture, 
                            "The version of provided sampling configuration is not supported. Provided version = {0}, supported versions = {1}", 
                            samplingConfiguration.Version, String.Join(", ", SupportedSamplingConfigurationVersion)));
                }

                DefaultRule = samplingConfiguration.Default;

                var rules = new List<SamplingRule>();
                if (samplingConfiguration.Rules != null)
                {
                    foreach (var rule in samplingConfiguration.Rules) // contains supported versions.
                    {
                        if (LocalizedSamplingStrategy.IsValidVersion1(samplingConfiguration, rule))
                        {
                            rule.Host = rule.ServiceName;
                        }
                        else 
                        {
                            LocalizedSamplingStrategy.ValidateVersion2(samplingConfiguration, rule); // rule.Host already parsed in rule.
                        }

                        rules.Add(rule);
                    }
                }

                Rules = rules;
            }
        }