NVIDIA DeepStream SDK API Reference

9.2 Release
includes/opentelemetry/trace/noop.h
Go to the documentation of this file.
1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
3 
4 #pragma once
5 // Please refer to provider.h for documentation on how to obtain a Tracer object.
6 //
7 // This file is part of the internal implementation of OpenTelemetry. Nothing in this file should be
8 // used directly. Please refer to span.h and tracer.h for documentation on these interfaces.
9 
10 #include <stdint.h>
11 #include <utility>
12 
13 #include "opentelemetry/common/attribute_value.h"
14 #include "opentelemetry/common/key_value_iterable.h"
15 #include "opentelemetry/common/timestamp.h"
16 #include "opentelemetry/context/context_value.h"
17 #include "opentelemetry/nostd/shared_ptr.h"
18 #include "opentelemetry/nostd/string_view.h"
19 #include "opentelemetry/nostd/unique_ptr.h"
20 #include "opentelemetry/trace/span.h"
21 #include "opentelemetry/trace/span_context.h"
22 #include "opentelemetry/trace/span_context_kv_iterable.h"
23 #include "opentelemetry/trace/span_metadata.h"
24 #include "opentelemetry/trace/span_startoptions.h"
25 #include "opentelemetry/trace/tracer.h"
26 #include "opentelemetry/trace/tracer_provider.h"
27 #include "opentelemetry/version.h"
28 
29 namespace trace_api = opentelemetry::trace;
30 
32 namespace trace
33 {
37 class OPENTELEMETRY_EXPORT NoopSpan final : public Span
38 {
39 public:
40  explicit NoopSpan(const std::shared_ptr<Tracer> &tracer) noexcept
41  : tracer_{tracer}, span_context_{new SpanContext(false, false)}
42  {}
43 
44  explicit NoopSpan(const std::shared_ptr<Tracer> &tracer,
45  nostd::unique_ptr<SpanContext> span_context) noexcept
46  : tracer_{tracer}, span_context_{std::move(span_context)}
47  {}
48 
50  const common::AttributeValue & /*value*/) noexcept override
51  {}
52 
53  void AddEvent(nostd::string_view /*name*/) noexcept override {}
54 
56  common::SystemTimestamp /*timestamp*/) noexcept override
57  {}
58 
59  void AddEvent(nostd::string_view /* name */,
60  const common::KeyValueIterable & /* attributes */) noexcept override
61  {}
62 
64  common::SystemTimestamp /*timestamp*/,
65  const common::KeyValueIterable & /*attributes*/) noexcept override
66  {}
67 
68 #if OPENTELEMETRY_ABI_VERSION_NO >= 2
69  void AddLink(const SpanContext & /* target */,
70  const common::KeyValueIterable & /* attrs */) noexcept override
71  {}
72 
73  void AddLinks(const SpanContextKeyValueIterable & /* links */) noexcept override {}
74 #endif
75 
76  void SetStatus(StatusCode /*code*/, nostd::string_view /*description*/) noexcept override {}
77 
78  void UpdateName(nostd::string_view /*name*/) noexcept override {}
79 
80  void End(const EndSpanOptions & /*options*/) noexcept override {}
81 
82  bool IsRecording() const noexcept override { return false; }
83 
84  SpanContext GetContext() const noexcept override { return *span_context_.get(); }
85 
86 private:
87  std::shared_ptr<Tracer> tracer_;
88  nostd::unique_ptr<SpanContext> span_context_;
89 };
90 
94 class OPENTELEMETRY_EXPORT NoopTracer final : public Tracer,
95  public std::enable_shared_from_this<NoopTracer>
96 {
97 public:
98  // Tracer
100  {
101 #if OPENTELEMETRY_ABI_VERSION_NO >= 2
102  UpdateEnabled(false);
103 #endif
104  }
105 
107  const common::KeyValueIterable & /*attributes*/,
108  const SpanContextKeyValueIterable & /*links*/,
109  const StartSpanOptions & /*options*/) noexcept override
110  {
111  // Don't allocate a no-op span for every StartSpan call, but use a static
112  // singleton for this case.
113  static nostd::shared_ptr<trace::Span> noop_span(new trace::NoopSpan{this->shared_from_this()});
114 
115  return noop_span;
116  }
117 
118 #if OPENTELEMETRY_ABI_VERSION_NO == 1
119 
120  void ForceFlushWithMicroseconds(uint64_t /*timeout*/) noexcept override {}
121 
122  void CloseWithMicroseconds(uint64_t /*timeout*/) noexcept override {}
123 
124 #endif /* OPENTELEMETRY_ABI_VERSION_NO */
125 };
126 
131 {
132 public:
135  {}
136 
137 #if OPENTELEMETRY_ABI_VERSION_NO >= 2
139  nostd::string_view /* name */,
140  nostd::string_view /* version */,
141  nostd::string_view /* schema_url */,
142  const common::KeyValueIterable * /* attributes */) noexcept override
143  {
144  return tracer_;
145  }
146 #else
148  nostd::string_view /* version */,
149  nostd::string_view /* schema_url */) noexcept override
150  {
151  return tracer_;
152  }
153 #endif
154 
155 private:
157 };
158 } // namespace trace
trace::EndSpanOptions
EndSpanOptions provides options to set properties of a Span when it is ended.
Definition: includes/opentelemetry/trace/span_metadata.h:38
trace
Definition: includes/opentelemetry/context/context_value.h:18
OPENTELEMETRY_EXPORT
#define OPENTELEMETRY_EXPORT
Definition: includes/opentelemetry/common/macros.h:386
trace::StartSpanOptions
StartSpanOptions provides options to set properties of a Span at the time of its creation.
Definition: includes/opentelemetry/trace/span_startoptions.h:21
trace::NoopSpan::UpdateName
void UpdateName(nostd::string_view) noexcept override
Definition: includes/opentelemetry/trace/noop.h:78
trace::SpanContextKeyValueIterable
Supports internal iteration over a collection of SpanContext/key-value pairs.
Definition: includes/opentelemetry/trace/span_context_kv_iterable.h:18
absl::OTABSL_OPTION_NAMESPACE_NAME::variant
Definition: includes/opentelemetry/nostd/variant.h:61
trace::NoopSpan::AddEvent
void AddEvent(nostd::string_view) noexcept override
Definition: includes/opentelemetry/trace/noop.h:53
trace::SpanContext
Definition: includes/opentelemetry/trace/span_context.h:24
trace::NoopSpan
No-op implementation of Span.
Definition: includes/opentelemetry/trace/noop.h:37
nostd::unique_ptr
Provide a simplified port of std::unique_ptr that has ABI stability.
Definition: includes/opentelemetry/nostd/unique_ptr.h:45
trace::NoopTracerProvider::GetTracer
nostd::shared_ptr< trace::Tracer > GetTracer(nostd::string_view, nostd::string_view, nostd::string_view) noexcept override
Definition: includes/opentelemetry/trace/noop.h:147
trace::NoopSpan::AddEvent
void AddEvent(nostd::string_view, const common::KeyValueIterable &) noexcept override
Definition: includes/opentelemetry/trace/noop.h:59
nostd::shared_ptr
Provide a type-erased version of std::shared_ptr that has ABI stability.
Definition: includes/opentelemetry/nostd/shared_ptr.h:28
trace::Span
A Span represents a single operation within a Trace.
Definition: includes/opentelemetry/trace/span.h:54
trace::NoopSpan::NoopSpan
NoopSpan(const std::shared_ptr< Tracer > &tracer) noexcept
Definition: includes/opentelemetry/trace/noop.h:40
trace::NoopSpan::AddEvent
void AddEvent(nostd::string_view, common::SystemTimestamp) noexcept override
Definition: includes/opentelemetry/trace/noop.h:55
common::SystemTimestamp
A timepoint relative to the system clock epoch.
Definition: includes/opentelemetry/common/timestamp.h:19
trace::Tracer
Handles span creation and in-process context propagation.
Definition: includes/opentelemetry/trace/tracer.h:27
trace::NoopSpan::GetContext
SpanContext GetContext() const noexcept override
Definition: includes/opentelemetry/trace/noop.h:84
OPENTELEMETRY_BEGIN_NAMESPACE
#define OPENTELEMETRY_BEGIN_NAMESPACE
Definition: includes/opentelemetry/version.h:21
trace::NoopSpan::AddEvent
void AddEvent(nostd::string_view, common::SystemTimestamp, const common::KeyValueIterable &) noexcept override
Definition: includes/opentelemetry/trace/noop.h:63
trace::TracerProvider
Creates new Tracer instances.
Definition: includes/opentelemetry/trace/tracer_provider.h:21
trace::NoopTracer
No-op implementation of Tracer.
Definition: includes/opentelemetry/trace/noop.h:94
OPENTELEMETRY_END_NAMESPACE
#define OPENTELEMETRY_END_NAMESPACE
Definition: includes/opentelemetry/version.h:24
absl::move
constexpr absl::OTABSL_OPTION_NAMESPACE_NAME::remove_reference_t< T > && move(T &&t) noexcept
Definition: includes/opentelemetry/nostd/internal/absl/utility/utility.h:199
common::KeyValueIterable
Supports internal iteration over a collection of key-value pairs.
Definition: includes/opentelemetry/common/key_value_iterable.h:17
trace::NoopSpan::SetAttribute
void SetAttribute(nostd::string_view, const common::AttributeValue &) noexcept override
Definition: includes/opentelemetry/trace/noop.h:49
trace::StatusCode
StatusCode
Definition: includes/opentelemetry/trace/span_metadata.h:27
trace::NoopSpan::NoopSpan
NoopSpan(const std::shared_ptr< Tracer > &tracer, nostd::unique_ptr< SpanContext > span_context) noexcept
Definition: includes/opentelemetry/trace/noop.h:44
trace::NoopSpan::SetStatus
void SetStatus(StatusCode, nostd::string_view) noexcept override
Definition: includes/opentelemetry/trace/noop.h:76
trace::NoopTracer::StartSpan
nostd::shared_ptr< Span > StartSpan(nostd::string_view, const common::KeyValueIterable &, const SpanContextKeyValueIterable &, const StartSpanOptions &) noexcept override
Definition: includes/opentelemetry/trace/noop.h:106
trace::NoopSpan::IsRecording
bool IsRecording() const noexcept override
Definition: includes/opentelemetry/trace/noop.h:82
trace::NoopSpan::End
void End(const EndSpanOptions &) noexcept override
Definition: includes/opentelemetry/trace/noop.h:80
trace::NoopTracerProvider::NoopTracerProvider
NoopTracerProvider() noexcept
Definition: includes/opentelemetry/trace/noop.h:133
trace::NoopTracer::NoopTracer
NoopTracer()
Definition: includes/opentelemetry/trace/noop.h:99
nostd::string_view
Back port of std::string_view to work with pre-cpp-17 compilers.
Definition: includes/opentelemetry/nostd/string_view.h:37
trace::NoopTracerProvider
No-op implementation of a TracerProvider.
Definition: includes/opentelemetry/trace/noop.h:130