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

          Line data    Source code
       1             : #include "config_manager.h"
       2             : 
       3             : #include "trace_sampler.h"
       4             : 
       5             : namespace datadog {
       6             : namespace tracing {
       7             : 
       8         621 : ConfigManager::ConfigManager(const FinalizedTracerConfig& config)
       9         621 :     : clock_(config.clock),
      10         621 :       default_trace_sampler_(
      11         621 :           std::make_shared<TraceSampler>(config.trace_sampler, clock_)),
      12        1242 :       current_trace_sampler_(default_trace_sampler_) {}
      13             : 
      14       82885 : std::shared_ptr<TraceSampler> ConfigManager::get_trace_sampler() {
      15       82885 :   std::lock_guard<std::mutex> lock(mutex_);
      16      165770 :   return current_trace_sampler_;
      17       82885 : }
      18             : 
      19           3 : void ConfigManager::update(const ConfigUpdate& conf) {
      20           3 :   std::lock_guard<std::mutex> lock(mutex_);
      21             : 
      22           3 :   if (conf.trace_sampler) {
      23           2 :     if (auto finalized_trace_sampler_cfg =
      24           2 :             finalize_config(*conf.trace_sampler)) {
      25             :       current_trace_sampler_ =
      26           2 :           std::make_shared<TraceSampler>(*finalized_trace_sampler_cfg, clock_);
      27             :     } else {
      28             :       // TODO: report error
      29           2 :     }
      30             :   } else {
      31           1 :     current_trace_sampler_ = default_trace_sampler_;
      32             :   }
      33           3 : }
      34             : 
      35           1 : void ConfigManager::reset() {
      36           1 :   std::lock_guard<std::mutex> lock(mutex_);
      37           1 :   current_trace_sampler_ = default_trace_sampler_;
      38           1 : }
      39             : 
      40         503 : nlohmann::json ConfigManager::config_json() const {
      41         503 :   std::lock_guard<std::mutex> lock(mutex_);
      42             :   return nlohmann::json{
      43        2515 :       {"trace_sampler", current_trace_sampler_->config_json()}};
      44         503 : }
      45             : 
      46             : }  // namespace tracing
      47             : }  // namespace datadog

Generated by: LCOV version 1.16