コード例 #1
0
        private List <SamplingRule> UnmarshallSamplingRuleResponse(string responseContent)
        {
            List <SamplingRule> samplingRules = new List <SamplingRule>();

            var samplingRuleResponse = JsonMapper.ToObject <SamplingRuleResponseModel>(responseContent);

            foreach (var samplingRuleRecord in samplingRuleResponse.SamplingRuleRecords)
            {
                var samplingRuleModel = samplingRuleRecord.SamplingRule;
                if (samplingRuleModel.Version.GetValueOrDefault() == Version && SamplingRule.IsValid(samplingRuleModel))
                {
                    var samplingRule = new SamplingRule
                                       (
                        samplingRuleModel.RuleName,
                        samplingRuleModel.Priority.GetValueOrDefault(),
                        samplingRuleModel.FixedRate.GetValueOrDefault(),
                        samplingRuleModel.ReservoirSize.GetValueOrDefault(),
                        samplingRuleModel.Host,
                        samplingRuleModel.ServiceName,
                        samplingRuleModel.HTTPMethod,
                        samplingRuleModel.URLPath,
                        samplingRuleModel.ServiceType,
                        samplingRuleModel.ResourceARN,
                        samplingRuleModel.Attributes
                                       );
                    samplingRules.Add(samplingRule);
                }
            }

            return(samplingRules);
        }
コード例 #2
0
        /// <summary>
        /// Use X-Ray client to get the sampling rules
        /// from X-Ray service.The call is proxied and signed by X-Ray Daemon.
        /// </summary>
        /// <returns></returns>
        public async Task <GetSamplingRulesResponse> GetSamplingRules()
        {
            List <SamplingRule>     newRules = new List <SamplingRule>();
            GetSamplingRulesRequest request  = new GetSamplingRulesRequest();

            Task <Model.GetSamplingRulesResponse> responseTask;

            lock (_xrayClientLock)
            {
                RefreshEndPoint();
                responseTask = _xrayClient.GetSamplingRulesAsync(request);
            }
            var response = await responseTask;

            foreach (var record in response.SamplingRuleRecords)
            {
                var rule = record.SamplingRule;
                if (rule.Version == Version && SamplingRule.IsValid(rule)) // We currently only handle v1 sampling rules.
                {
                    var sampleRule = new SamplingRule(rule.RuleName, rule.Priority, rule.FixedRate, rule.ReservoirSize, rule.Host, rule.ServiceName, rule.HTTPMethod, rule.URLPath, rule.ServiceType, rule.ResourceARN, rule.Attributes);
                    newRules.Add(sampleRule);
                }
            }

            GetSamplingRulesResponse result = new GetSamplingRulesResponse(newRules);

            return(result);
        }