diff options
Diffstat (limited to 'src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/trace/tracer.h')
-rw-r--r-- | src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/trace/tracer.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/trace/tracer.h b/src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/trace/tracer.h new file mode 100644 index 000000000..fd9f2c8e8 --- /dev/null +++ b/src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/trace/tracer.h @@ -0,0 +1,70 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/sdk/common/atomic_shared_ptr.h" +#include "opentelemetry/sdk/instrumentationlibrary/instrumentation_library.h" +#include "opentelemetry/sdk/resource/resource.h" +#include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/samplers/always_on.h" +#include "opentelemetry/sdk/trace/tracer_context.h" +#include "opentelemetry/trace/noop.h" +#include "opentelemetry/trace/tracer.h" +#include "opentelemetry/version.h" + +#include <memory> + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace trace +{ + +using namespace opentelemetry::sdk::instrumentationlibrary; + +class Tracer final : public trace_api::Tracer, public std::enable_shared_from_this<Tracer> +{ +public: + /** Construct a new Tracer with the given context pipeline. */ + explicit Tracer(std::shared_ptr<sdk::trace::TracerContext> context, + std::unique_ptr<InstrumentationLibrary> instrumentation_library = + InstrumentationLibrary::Create("")) noexcept; + + nostd::shared_ptr<trace_api::Span> StartSpan( + nostd::string_view name, + const opentelemetry::common::KeyValueIterable &attributes, + const trace_api::SpanContextKeyValueIterable &links, + const trace_api::StartSpanOptions &options = {}) noexcept override; + + void ForceFlushWithMicroseconds(uint64_t timeout) noexcept override; + + void CloseWithMicroseconds(uint64_t timeout) noexcept override; + + /** Returns the configured span processor. */ + SpanProcessor &GetProcessor() noexcept { return context_->GetProcessor(); } + + /** Returns the configured Id generator */ + IdGenerator &GetIdGenerator() const noexcept { return context_->GetIdGenerator(); } + + /** Returns the associated instruementation library */ + const InstrumentationLibrary &GetInstrumentationLibrary() const noexcept + { + return *instrumentation_library_; + } + + /** Returns the currently configured resource **/ + const opentelemetry::sdk::resource::Resource &GetResource() { return context_->GetResource(); } + + // Note: Test only + Sampler &GetSampler() { return context_->GetSampler(); } + +private: + // order of declaration is important here - instrumentation library should destroy after + // tracer-context. + std::shared_ptr<InstrumentationLibrary> instrumentation_library_; + std::shared_ptr<sdk::trace::TracerContext> context_; +}; +} // namespace trace +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE |