99
1010#include " opentelemetry/nostd/shared_ptr.h"
1111#include " opentelemetry/nostd/string_view.h"
12+ #include " opentelemetry/sdk/instrumentationscope/scope_configurator.h"
1213#include " opentelemetry/sdk/resource/resource.h"
1314#include " opentelemetry/sdk/trace/id_generator.h"
1415#include " opentelemetry/sdk/trace/processor.h"
@@ -27,6 +28,8 @@ namespace sdk
2728namespace trace
2829{
2930
31+ using namespace opentelemetry ::sdk::instrumentationscope;
32+
3033class OPENTELEMETRY_EXPORT TracerProvider final : public opentelemetry::trace::TracerProvider
3134{
3235public:
@@ -39,30 +42,30 @@ class OPENTELEMETRY_EXPORT TracerProvider final : public opentelemetry::trace::T
3942 * not be a nullptr.
4043 * @param id_generator The custom id generator for this tracer provider. This must
4144 * not be a nullptr
45+ * @param tracer_configurator Provides access to a function that computes the TracerConfig for
46+ * Tracers provided by this TracerProvider.
4247 */
4348 explicit TracerProvider (
4449 std::unique_ptr<SpanProcessor> processor,
4550 const opentelemetry::sdk::resource::Resource &resource =
4651 opentelemetry::sdk::resource::Resource::Create ({}),
4752 std::unique_ptr<Sampler> sampler = std::unique_ptr<AlwaysOnSampler>(new AlwaysOnSampler),
4853 std::unique_ptr<IdGenerator> id_generator =
49- std::unique_ptr<IdGenerator>(new RandomIdGenerator())) noexcept ;
54+ std::unique_ptr<IdGenerator>(new RandomIdGenerator()),
55+ std::unique_ptr<ScopeConfigurator<TracerConfig>> tracer_configurator =
56+ std::make_unique<ScopeConfigurator<TracerConfig>>(
57+ TracerConfig::DefaultConfigurator ())) noexcept ;
5058
5159 explicit TracerProvider (
5260 std::vector<std::unique_ptr<SpanProcessor>> &&processors,
5361 const opentelemetry::sdk::resource::Resource &resource =
5462 opentelemetry::sdk::resource::Resource::Create ({}),
5563 std::unique_ptr<Sampler> sampler = std::unique_ptr<AlwaysOnSampler>(new AlwaysOnSampler),
5664 std::unique_ptr<IdGenerator> id_generator =
57- std::unique_ptr<IdGenerator>(new RandomIdGenerator())) noexcept ;
58-
59- // explicit TracerProvider(
60- // std::vector<std::unique_ptr<SpanProcessor>> &&processors,
61- // const opentelemetry::sdk::resource::Resource &resource =
62- // opentelemetry::sdk::resource::Resource::Create({}),
63- // std::unique_ptr<Sampler> sampler = std::unique_ptr<AlwaysOnSampler>(new AlwaysOnSampler),
64- // std::unique_ptr<IdGenerator> id_generator =
65- // std::unique_ptr<IdGenerator>(new RandomIdGenerator())) noexcept;
65+ std::unique_ptr<IdGenerator>(new RandomIdGenerator()),
66+ std::unique_ptr<ScopeConfigurator<TracerConfig>> tracer_configurator =
67+ std::make_unique<ScopeConfigurator<TracerConfig>>(
68+ TracerConfig::DefaultConfigurator ())) noexcept ;
6669
6770 /* *
6871 * Initialize a new tracer provider with a specified context
@@ -121,6 +124,9 @@ class OPENTELEMETRY_EXPORT TracerProvider final : public opentelemetry::trace::T
121124 std::vector<std::shared_ptr<Tracer>> tracers_;
122125 std::shared_ptr<TracerContext> context_;
123126 std::mutex lock_;
127+
128+ // private helper to get TracerConfig from InstrumentationScope using tracer configurator.
129+ TracerConfig GetTracerConfig (const InstrumentationScope &instrumentation_scope) const ;
124130};
125131} // namespace trace
126132} // namespace sdk
0 commit comments