16
16
#include " opentelemetry/sdk/trace/processor.h"
17
17
#include " opentelemetry/sdk/trace/sampler.h"
18
18
#include " opentelemetry/sdk/trace/tracer.h"
19
+ #include " opentelemetry/sdk/trace/tracer_config.h"
19
20
#include " opentelemetry/sdk/trace/tracer_context.h"
20
21
#include " opentelemetry/sdk/trace/tracer_provider.h"
21
22
#include " opentelemetry/trace/tracer.h"
@@ -35,24 +36,30 @@ TracerProvider::TracerProvider(std::unique_ptr<TracerContext> context) noexcept
35
36
OTEL_INTERNAL_LOG_DEBUG (" [TracerProvider] TracerProvider created." );
36
37
}
37
38
38
- TracerProvider::TracerProvider (std::unique_ptr<SpanProcessor> processor,
39
- const resource::Resource &resource,
40
- std::unique_ptr<Sampler> sampler,
41
- std::unique_ptr<IdGenerator> id_generator) noexcept
39
+ TracerProvider::TracerProvider (
40
+ std::unique_ptr<SpanProcessor> processor,
41
+ const resource::Resource &resource,
42
+ std::unique_ptr<Sampler> sampler,
43
+ std::unique_ptr<IdGenerator> id_generator,
44
+ std::unique_ptr<ScopeConfigurator<TracerConfig>> tracer_configurator) noexcept
42
45
{
43
46
std::vector<std::unique_ptr<SpanProcessor>> processors;
44
47
processors.push_back (std::move (processor));
45
- context_ = std::make_shared<TracerContext>(std::move (processors), resource, std::move (sampler),
46
- std::move (id_generator));
48
+ context_ =
49
+ std::make_shared<TracerContext>(std::move (processors), resource, std::move (sampler),
50
+ std::move (id_generator), std::move (tracer_configurator));
47
51
}
48
52
49
- TracerProvider::TracerProvider (std::vector<std::unique_ptr<SpanProcessor>> &&processors,
50
- const resource::Resource &resource,
51
- std::unique_ptr<Sampler> sampler,
52
- std::unique_ptr<IdGenerator> id_generator) noexcept
53
+ TracerProvider::TracerProvider (
54
+ std::vector<std::unique_ptr<SpanProcessor>> &&processors,
55
+ const resource::Resource &resource,
56
+ std::unique_ptr<Sampler> sampler,
57
+ std::unique_ptr<IdGenerator> id_generator,
58
+ std::unique_ptr<ScopeConfigurator<TracerConfig>> tracer_configurator) noexcept
53
59
{
54
- context_ = std::make_shared<TracerContext>(std::move (processors), resource, std::move (sampler),
55
- std::move (id_generator));
60
+ context_ =
61
+ std::make_shared<TracerContext>(std::move (processors), resource, std::move (sampler),
62
+ std::move (id_generator), std::move (tracer_configurator));
56
63
}
57
64
58
65
TracerProvider::~TracerProvider ()
@@ -107,8 +114,11 @@ nostd::shared_ptr<trace_api::Tracer> TracerProvider::GetTracer(
107
114
instrumentationscope::InstrumentationScopeAttributes attrs_map (attributes);
108
115
auto scope =
109
116
instrumentationscope::InstrumentationScope::Create (name, version, schema_url, attrs_map);
117
+ const instrumentationscope::InstrumentationScope &scope_reference =
118
+ instrumentationscope::InstrumentationScope (*scope);
119
+ auto tracer_config = context_->GetTracerConfigurator ().ComputeConfig (scope_reference);
110
120
111
- auto tracer = std::shared_ptr<Tracer>(new Tracer (context_, std::move (scope)));
121
+ auto tracer = std::shared_ptr<Tracer>(new Tracer (context_, std::move (scope), tracer_config ));
112
122
tracers_.push_back (tracer);
113
123
return nostd::shared_ptr<trace_api::Tracer>{tracer};
114
124
}
@@ -133,6 +143,12 @@ bool TracerProvider::ForceFlush(std::chrono::microseconds timeout) noexcept
133
143
return context_->ForceFlush (timeout);
134
144
}
135
145
146
+ TracerConfig TracerProvider::GetTracerConfig (
147
+ const InstrumentationScope &instrumentation_scope) const
148
+ {
149
+ return context_->GetTracerConfigurator ().ComputeConfig (instrumentation_scope);
150
+ }
151
+
136
152
} // namespace trace
137
153
} // namespace sdk
138
154
OPENTELEMETRY_END_NAMESPACE
0 commit comments