NVIDIA DeepStream SDK API Reference

9.2 Release
9.2/includes/opentelemetry/trace/trace_id.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 #include <cstring>
8 
9 #include "opentelemetry/nostd/span.h"
10 #include "opentelemetry/version.h"
11 
13 namespace trace
14 {
15 
16 // TraceId represents an opaque 128-bit trace identifier. The trace identifier
17 // remains constant across the trace. A valid trace identifier is a 16-byte array with at
18 // least one non-zero byte.
19 class TraceId final
20 {
21 public:
22  // The size in bytes of the TraceId.
23  static constexpr int kSize = 16;
24 
25  // An invalid TraceId (all zeros).
26  TraceId() noexcept : rep_{0} {}
27 
28  // Creates a TraceId with the given ID.
30  {
31  memcpy(rep_, id.data(), kSize);
32  }
33 
34  // Populates the buffer with the lowercase base16 representation of the ID.
35  void ToLowerBase16(nostd::span<char, 2 * kSize> buffer) const noexcept
36  {
37  constexpr char kHex[] = "0123456789abcdef";
38  for (int i = 0; i < kSize; ++i)
39  {
40  buffer[i * 2 + 0] = kHex[(rep_[i] >> 4) & 0xF];
41  buffer[i * 2 + 1] = kHex[(rep_[i] >> 0) & 0xF];
42  }
43  }
44 
45  // Returns a nostd::span of the ID.
47  {
49  }
50 
51  bool operator==(const TraceId &that) const noexcept
52  {
53  return memcmp(rep_, that.rep_, kSize) == 0;
54  }
55 
56  bool operator!=(const TraceId &that) const noexcept { return !(*this == that); }
57 
58  // Returns false if the TraceId is all zeros.
59  bool IsValid() const noexcept { return *this != TraceId(); }
60 
61  // Copies the opaque TraceId data to dest.
62  void CopyBytesTo(nostd::span<uint8_t, kSize> dest) const noexcept
63  {
64  memcpy(dest.data(), rep_, kSize);
65  }
66 
67 private:
68  uint8_t rep_[kSize];
69 };
70 
71 } // namespace trace
trace::TraceId
Definition: includes/opentelemetry/trace/trace_id.h:19
trace
Definition: includes/opentelemetry/context/context_value.h:18
trace::TraceId::Id
nostd::span< const uint8_t, kSize > Id() const noexcept
Definition: 9.2/includes/opentelemetry/trace/trace_id.h:46
trace::TraceId::CopyBytesTo
void CopyBytesTo(nostd::span< uint8_t, kSize > dest) const noexcept
Definition: 9.2/includes/opentelemetry/trace/trace_id.h:62
trace::TraceId::IsValid
bool IsValid() const noexcept
Definition: 9.2/includes/opentelemetry/trace/trace_id.h:59
trace::TraceId::ToLowerBase16
void ToLowerBase16(nostd::span< char, 2 *kSize > buffer) const noexcept
Definition: 9.2/includes/opentelemetry/trace/trace_id.h:35
trace::TraceId::TraceId
TraceId() noexcept
Definition: 9.2/includes/opentelemetry/trace/trace_id.h:26
trace::TraceId::kSize
static constexpr int kSize
Definition: includes/opentelemetry/trace/trace_id.h:23
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::TraceId::TraceId
TraceId(nostd::span< const uint8_t, kSize > id) noexcept
Definition: 9.2/includes/opentelemetry/trace/trace_id.h:29
OPENTELEMETRY_END_NAMESPACE
#define OPENTELEMETRY_END_NAMESPACE
Definition: includes/opentelemetry/version.h:24
trace::TraceId::operator==
bool operator==(const TraceId &that) const noexcept
Definition: 9.2/includes/opentelemetry/trace/trace_id.h:51
trace::TraceId::operator!=
bool operator!=(const TraceId &that) const noexcept
Definition: 9.2/includes/opentelemetry/trace/trace_id.h:56
data
JSAMPIMAGE data
Definition: sources/libs/nvll_batch_jpeg_encode/oss/jpeglib.h:967