NVIDIA DeepStream SDK API Reference

9.2 Release
includes/opentelemetry/trace/trace_flags.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 
6 #include <cstdint>
7 
8 #include "opentelemetry/nostd/span.h"
9 #include "opentelemetry/version.h"
10 
12 namespace trace
13 {
14 
15 // TraceFlags represents options for a Trace. These options are propagated to all child Spans
16 // and determine features such as whether a Span should be traced. TraceFlags
17 // are implemented as a bitmask.
18 class TraceFlags final
19 {
20 public:
21  static constexpr uint8_t kIsSampled = 1;
22  static constexpr uint8_t kIsRandom = 2;
23 
28  static constexpr uint8_t kAllW3CTraceContext1Flags = kIsSampled;
29 
34  static constexpr uint8_t kAllW3CTraceContext2Flags = kIsSampled | kIsRandom;
35 
36  TraceFlags() noexcept : rep_{0} {}
37 
38  explicit TraceFlags(uint8_t flags) noexcept : rep_(flags) {}
39 
40  bool IsSampled() const noexcept { return rep_ & kIsSampled; }
41 
42  bool IsRandom() const noexcept { return rep_ & kIsRandom; }
43 
44  // Populates the buffer with the lowercase base16 representation of the flags.
45  void ToLowerBase16(nostd::span<char, 2> buffer) const noexcept
46  {
47  constexpr char kHex[] = "0123456789ABCDEF";
48  buffer[0] = kHex[(rep_ >> 4) & 0xF];
49  buffer[1] = kHex[(rep_ >> 0) & 0xF];
50  }
51 
52  uint8_t flags() const noexcept { return rep_; }
53 
54  bool operator==(const TraceFlags &that) const noexcept { return rep_ == that.rep_; }
55 
56  bool operator!=(const TraceFlags &that) const noexcept { return !(*this == that); }
57 
58  // Copies the TraceFlags to dest.
59  void CopyBytesTo(nostd::span<uint8_t, 1> dest) const noexcept { dest[0] = rep_; }
60 
61 private:
62  uint8_t rep_;
63 };
64 
65 } // namespace trace
trace::TraceFlags::operator!=
bool operator!=(const TraceFlags &that) const noexcept
Definition: includes/opentelemetry/trace/trace_flags.h:56
trace
Definition: includes/opentelemetry/context/context_value.h:18
trace::TraceFlags::kIsRandom
static constexpr uint8_t kIsRandom
Definition: includes/opentelemetry/trace/trace_flags.h:22
OPENTELEMETRY_BEGIN_NAMESPACE
#define OPENTELEMETRY_BEGIN_NAMESPACE
Definition: includes/opentelemetry/version.h:21
nostd::span
Back port of std::span.
Definition: includes/opentelemetry/nostd/span.h:51
trace::TraceFlags::IsRandom
bool IsRandom() const noexcept
Definition: includes/opentelemetry/trace/trace_flags.h:42
trace::TraceFlags::TraceFlags
TraceFlags(uint8_t flags) noexcept
Definition: includes/opentelemetry/trace/trace_flags.h:38
trace::TraceFlags::IsSampled
bool IsSampled() const noexcept
Definition: includes/opentelemetry/trace/trace_flags.h:40
OPENTELEMETRY_END_NAMESPACE
#define OPENTELEMETRY_END_NAMESPACE
Definition: includes/opentelemetry/version.h:24
trace::TraceFlags::ToLowerBase16
void ToLowerBase16(nostd::span< char, 2 > buffer) const noexcept
Definition: includes/opentelemetry/trace/trace_flags.h:45
trace::TraceFlags::TraceFlags
TraceFlags() noexcept
Definition: includes/opentelemetry/trace/trace_flags.h:36
trace::TraceFlags::CopyBytesTo
void CopyBytesTo(nostd::span< uint8_t, 1 > dest) const noexcept
Definition: includes/opentelemetry/trace/trace_flags.h:59
trace::TraceFlags::kAllW3CTraceContext2Flags
static constexpr uint8_t kAllW3CTraceContext2Flags
Valid flags in W3C Trace Context version 2.
Definition: includes/opentelemetry/trace/trace_flags.h:34
trace::TraceFlags::kIsSampled
static constexpr uint8_t kIsSampled
Definition: includes/opentelemetry/trace/trace_flags.h:21
trace::TraceFlags
Definition: includes/opentelemetry/trace/trace_flags.h:18
trace::TraceFlags::operator==
bool operator==(const TraceFlags &that) const noexcept
Definition: includes/opentelemetry/trace/trace_flags.h:54
trace::TraceFlags::flags
uint8_t flags() const noexcept
Definition: includes/opentelemetry/trace/trace_flags.h:52
trace::TraceFlags::kAllW3CTraceContext1Flags
static constexpr uint8_t kAllW3CTraceContext1Flags
Valid flags in W3C Trace Context version 1.
Definition: includes/opentelemetry/trace/trace_flags.h:28