// Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 #include #include #include #include #include "opentelemetry/sdk/instrumentationscope/scope_configurator.h" #include "opentelemetry/sdk/resource/resource.h" #include "opentelemetry/sdk/trace/id_generator.h" #include "opentelemetry/sdk/trace/multi_span_processor.h" #include "opentelemetry/sdk/trace/processor.h" #include "opentelemetry/sdk/trace/sampler.h" #include "opentelemetry/sdk/trace/tracer_config.h" #include "opentelemetry/sdk/trace/tracer_context.h" #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk { namespace trace { namespace resource = opentelemetry::sdk::resource; TracerContext::TracerContext(std::vector> &&processors, const resource::Resource &resource, std::unique_ptr sampler, std::unique_ptr id_generator, std::unique_ptr> tracer_configurator) noexcept : resource_(resource), sampler_(std::move(sampler)), id_generator_(std::move(id_generator)), processor_(std::unique_ptr(new MultiSpanProcessor(std::move(processors)))), tracer_configurator_(std::move(tracer_configurator)) {} Sampler &TracerContext::GetSampler() const noexcept { return *sampler_; } const resource::Resource &TracerContext::GetResource() const noexcept { return resource_; } const instrumentationscope::ScopeConfigurator &TracerContext::GetTracerConfigurator() const noexcept { return *tracer_configurator_; } opentelemetry::sdk::trace::IdGenerator &TracerContext::GetIdGenerator() const noexcept { return *id_generator_; } void TracerContext::AddProcessor(std::unique_ptr processor) noexcept { auto multi_processor = static_cast(processor_.get()); multi_processor->AddProcessor(std::move(processor)); } SpanProcessor &TracerContext::GetProcessor() const noexcept { return *processor_; } bool TracerContext::ForceFlush(std::chrono::microseconds timeout) noexcept { return processor_->ForceFlush(timeout); } bool TracerContext::Shutdown(std::chrono::microseconds timeout) noexcept { return processor_->Shutdown(timeout); } } // namespace trace } // namespace sdk OPENTELEMETRY_END_NAMESPACE