8 #include "opentelemetry/common/key_value_iterable.h"
9 #include "opentelemetry/nostd/shared_ptr.h"
10 #include "opentelemetry/nostd/string_view.h"
11 #include "opentelemetry/sdk/instrumentationscope/instrumentation_scope.h"
12 #include "opentelemetry/sdk/resource/resource.h"
13 #include "opentelemetry/sdk/trace/id_generator.h"
14 #include "opentelemetry/sdk/trace/processor.h"
15 #include "opentelemetry/sdk/trace/sampler.h"
16 #include "opentelemetry/sdk/trace/tracer_config.h"
17 #include "opentelemetry/sdk/trace/tracer_context.h"
18 #include "opentelemetry/trace/noop.h"
19 #include "opentelemetry/trace/span.h"
20 #include "opentelemetry/trace/span_context_kv_iterable.h"
21 #include "opentelemetry/trace/span_startoptions.h"
22 #include "opentelemetry/trace/tracer.h"
23 #include "opentelemetry/version.h"
31 using namespace opentelemetry::sdk::instrumentationscope;
33 class Tracer final :
public opentelemetry::trace::Tracer,
34 public std::enable_shared_from_this<Tracer>
38 explicit Tracer(std::shared_ptr<TracerContext>
context,
39 std::unique_ptr<InstrumentationScope> instrumentation_scope =
40 InstrumentationScope::Create(
"")) noexcept;
48 #if OPENTELEMETRY_ABI_VERSION_NO >= 2
53 template <
class Rep,
class Period>
54 void ForceFlush(std::chrono::duration<Rep, Period> timeout) noexcept
56 this->ForceFlushWithMicroseconds(
static_cast<uint64_t
>(
57 std::chrono::duration_cast<std::chrono::microseconds>(timeout).count()));
60 void ForceFlushWithMicroseconds(uint64_t timeout) noexcept;
66 template <
class Rep,
class Period>
67 void Close(std::chrono::duration<Rep, Period> timeout) noexcept
69 this->CloseWithMicroseconds(
static_cast<uint64_t
>(
70 std::chrono::duration_cast<std::chrono::microseconds>(timeout).count()));
73 void CloseWithMicroseconds(uint64_t timeout) noexcept;
76 void ForceFlushWithMicroseconds(uint64_t timeout) noexcept
override;
78 void CloseWithMicroseconds(uint64_t timeout) noexcept
override;
90 return *instrumentation_scope_;
94 const InstrumentationScope &GetInstrumentationLibrary() const noexcept
96 return GetInstrumentationScope();
100 const opentelemetry::sdk::resource::Resource &
GetResource() {
return context_->GetResource(); }
108 std::shared_ptr<InstrumentationScope> instrumentation_scope_;
109 std::shared_ptr<TracerContext> context_;
111 static const std::shared_ptr<opentelemetry::trace::NoopTracer> kNoopTracer;