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