LCOV - code coverage report
Current view: top level - datadog - span_sampler_config.h (source / functions) Hit Total Coverage
Test: filtered.info Lines: 2 2 100.0 %
Date: 2024-01-03 20:30:12 Functions: 2 2 100.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : // This component provides a `struct`, `SpanSamplerConfig`, used to configure
       4             : // `SpanSampler`. `SpanSampler` accepts a `FinalizedSpanSamplerConfig`, which
       5             : // must be obtained from a call to `finalize_config`.
       6             : //
       7             : // `SpanSamplerConfig` is specified as the `span_sampler` property of
       8             : // `TracerConfig`.
       9             : 
      10             : #include <vector>
      11             : 
      12             : #include "expected.h"
      13             : #include "json_fwd.hpp"
      14             : #include "optional.h"
      15             : #include "rate.h"
      16             : #include "span_matcher.h"
      17             : 
      18             : namespace datadog {
      19             : namespace tracing {
      20             : 
      21             : class Logger;
      22             : 
      23             : struct SpanSamplerConfig {
      24             :   struct Rule : public SpanMatcher {
      25             :     double sample_rate = 1.0;
      26             :     Optional<double> max_per_second;
      27             : 
      28             :     Rule(const SpanMatcher&);
      29          28 :     Rule() = default;
      30             :   };
      31             : 
      32             :   // Can be overriden by the `DD_TRACE_SAMPLING_RULES` environment variable.
      33             :   // Also, the `DD_TRACE_SAMPLE_RATE` environment variable, if present, causes a
      34             :   // corresponding `Rule` to be appended to `rules`.
      35             :   std::vector<Rule> rules;
      36             : };
      37             : 
      38             : class FinalizedSpanSamplerConfig {
      39             :   friend Expected<FinalizedSpanSamplerConfig> finalize_config(
      40             :       const SpanSamplerConfig&, Logger&);
      41             :   friend class FinalizedTracerConfig;
      42             : 
      43        1539 :   FinalizedSpanSamplerConfig() = default;
      44             : 
      45             :  public:
      46             :   struct Rule : public SpanMatcher {
      47             :     Rate sample_rate;
      48             :     Optional<double> max_per_second;
      49             :   };
      50             : 
      51             :   std::vector<Rule> rules;
      52             : };
      53             : 
      54             : Expected<FinalizedSpanSamplerConfig> finalize_config(const SpanSamplerConfig&,
      55             :                                                      Logger&);
      56             : 
      57             : nlohmann::json to_json(const FinalizedSpanSamplerConfig::Rule&);
      58             : 
      59             : }  // namespace tracing
      60             : }  // namespace datadog

Generated by: LCOV version 1.16