NVIDIA DeepStream SDK API Reference

9.2 Release
9.2/includes/opentelemetry/sdk/trace/span_data.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 <chrono>
7 #include <map>
8 #include <memory>
9 #include <string>
10 #include <unordered_map>
11 #include <vector>
12 
13 #include "opentelemetry/common/attribute_value.h"
14 #include "opentelemetry/common/key_value_iterable.h"
15 #include "opentelemetry/common/key_value_iterable_view.h"
16 #include "opentelemetry/common/timestamp.h"
17 #include "opentelemetry/nostd/string_view.h"
18 #include "opentelemetry/sdk/common/attribute_utils.h"
19 #include "opentelemetry/sdk/instrumentationscope/instrumentation_scope.h"
20 #include "opentelemetry/sdk/resource/resource.h"
21 #include "opentelemetry/sdk/trace/recordable.h"
22 #include "opentelemetry/trace/span_context.h"
23 #include "opentelemetry/trace/span_id.h"
24 #include "opentelemetry/trace/span_metadata.h"
25 #include "opentelemetry/trace/trace_flags.h"
26 #include "opentelemetry/trace/trace_id.h"
27 #include "opentelemetry/version.h"
28 
30 namespace sdk
31 {
32 namespace trace
33 {
37 class SpanDataEvent
38 {
39 public:
40  SpanDataEvent(std::string name,
41  opentelemetry::common::SystemTimestamp timestamp,
42  const opentelemetry::common::KeyValueIterable &attributes)
43  : name_(name), timestamp_(timestamp), attribute_map_(attributes)
44  {}
45 
50  std::string GetName() const noexcept { return name_; }
51 
56  opentelemetry::common::SystemTimestamp GetTimestamp() const noexcept { return timestamp_; }
57 
62  const std::unordered_map<std::string, opentelemetry::sdk::common::OwnedAttributeValue> &
63  GetAttributes() const noexcept
64  {
65  return attribute_map_.GetAttributes();
66  }
67 
68 private:
69  std::string name_;
70  opentelemetry::common::SystemTimestamp timestamp_;
71  opentelemetry::sdk::common::AttributeMap attribute_map_;
72 };
73 
77 class SpanDataLink
78 {
79 public:
80  SpanDataLink(opentelemetry::trace::SpanContext span_context,
81  const opentelemetry::common::KeyValueIterable &attributes)
82  : span_context_(span_context), attribute_map_(attributes)
83  {}
84 
89  const std::unordered_map<std::string, opentelemetry::sdk::common::OwnedAttributeValue> &
90  GetAttributes() const noexcept
91  {
92  return attribute_map_.GetAttributes();
93  }
94 
99  const opentelemetry::trace::SpanContext &GetSpanContext() const noexcept { return span_context_; }
100 
101 private:
102  opentelemetry::trace::SpanContext span_context_;
103  opentelemetry::sdk::common::AttributeMap attribute_map_;
104 };
105 
109 class SpanData final : public Recordable
110 {
111 public:
112  SpanData() : resource_{nullptr}, instrumentation_scope_{nullptr} {}
117  opentelemetry::trace::TraceId GetTraceId() const noexcept { return span_context_.trace_id(); }
118 
123  opentelemetry::trace::SpanId GetSpanId() const noexcept { return span_context_.span_id(); }
124 
129  const opentelemetry::trace::SpanContext &GetSpanContext() const noexcept { return span_context_; }
130 
135  opentelemetry::trace::SpanId GetParentSpanId() const noexcept { return parent_span_id_; }
136 
141  opentelemetry::nostd::string_view GetName() const noexcept { return name_; }
142 
147  opentelemetry::trace::TraceFlags GetFlags() const noexcept { return flags_; }
148 
153  opentelemetry::trace::SpanKind GetSpanKind() const noexcept { return span_kind_; }
154 
159  opentelemetry::trace::StatusCode GetStatus() const noexcept { return status_code_; }
160 
165  opentelemetry::nostd::string_view GetDescription() const noexcept { return status_desc_; }
166 
172  const opentelemetry::sdk::resource::Resource &GetResource() const noexcept
173  {
174  if (resource_ == nullptr)
175  {
176  // this shouldn't happen as TraceProvider provides default resources
177  static opentelemetry::sdk::resource::Resource resource =
178  opentelemetry::sdk::resource::Resource::GetEmpty();
179  return resource;
180  }
181  return *resource_;
182  }
183 
189  const opentelemetry::sdk::trace::InstrumentationScope &GetInstrumentationScope() const noexcept
190  {
191  if (instrumentation_scope_ == nullptr)
192  {
193  // this shouldn't happen as Tracer ensures there is valid default instrumentation scope.
194  static std::unique_ptr<opentelemetry::sdk::instrumentationscope::InstrumentationScope>
195  instrumentation_scope =
196  opentelemetry::sdk::instrumentationscope::InstrumentationScope::Create(
197  "unknown_service");
198  return *instrumentation_scope;
199  }
200  return *instrumentation_scope_;
201  }
202 
203  OPENTELEMETRY_DEPRECATED_MESSAGE("Please use GetInstrumentationScope instead")
204  const opentelemetry::sdk::trace::InstrumentationScope &GetInstrumentationLibrary() const noexcept
205  {
206  return GetInstrumentationScope();
207  }
208 
213  opentelemetry::common::SystemTimestamp GetStartTime() const noexcept { return start_time_; }
214 
219  std::chrono::nanoseconds GetDuration() const noexcept { return duration_; }
220 
225  const std::unordered_map<std::string, opentelemetry::sdk::common::OwnedAttributeValue> &
226  GetAttributes() const noexcept
227  {
228  return attribute_map_.GetAttributes();
229  }
230 
235  const std::vector<SpanDataEvent> &GetEvents() const noexcept { return events_; }
236 
241  const std::vector<SpanDataLink> &GetLinks() const noexcept { return links_; }
242 
243  void SetIdentity(const opentelemetry::trace::SpanContext &span_context,
244  opentelemetry::trace::SpanId parent_span_id) noexcept override
245  {
246  span_context_ = span_context;
247  parent_span_id_ = parent_span_id;
248  }
249 
251  const opentelemetry::common::AttributeValue &value) noexcept override
252  {
253  attribute_map_.SetAttribute(key, value);
254  }
255 
257  opentelemetry::common::SystemTimestamp timestamp =
258  opentelemetry::common::SystemTimestamp(std::chrono::system_clock::now()),
259  const opentelemetry::common::KeyValueIterable &attributes =
260  opentelemetry::common::KeyValueIterableView<std::map<std::string, int32_t>>(
261  {})) noexcept override
262  {
263  SpanDataEvent event(std::string(name), timestamp, attributes);
264  events_.push_back(event);
265  }
266 
267  void AddLink(const opentelemetry::trace::SpanContext &span_context,
268  const opentelemetry::common::KeyValueIterable &attributes) noexcept override
269  {
270  SpanDataLink link(span_context, attributes);
271  links_.push_back(link);
272  }
273 
275  nostd::string_view description) noexcept override
276  {
277  status_code_ = code;
278  status_desc_ = std::string(description);
279  }
280 
281  void SetName(nostd::string_view name) noexcept override
282  {
283  name_ = std::string(name.data(), name.length());
284  }
285 
286  void SetTraceFlags(opentelemetry::trace::TraceFlags flags) noexcept override { flags_ = flags; }
287 
288  void SetSpanKind(opentelemetry::trace::SpanKind span_kind) noexcept override
289  {
290  span_kind_ = span_kind;
291  }
292 
293  void SetResource(const opentelemetry::sdk::resource::Resource &resource) noexcept override
294  {
295  resource_ = &resource;
296  }
297 
298  void SetStartTime(opentelemetry::common::SystemTimestamp start_time) noexcept override
299  {
300  start_time_ = start_time;
301  }
302 
303  void SetDuration(std::chrono::nanoseconds duration) noexcept override { duration_ = duration; }
304 
305  void SetInstrumentationScope(const InstrumentationScope &instrumentation_scope) noexcept override
306  {
307  instrumentation_scope_ = &instrumentation_scope;
308  }
309 
310 private:
311  opentelemetry::trace::SpanContext span_context_{false, false};
312  opentelemetry::trace::SpanId parent_span_id_;
313  opentelemetry::common::SystemTimestamp start_time_;
314  std::chrono::nanoseconds duration_{0};
315  std::string name_;
316  opentelemetry::trace::StatusCode status_code_{opentelemetry::trace::StatusCode::kUnset};
317  std::string status_desc_;
318  opentelemetry::sdk::common::AttributeMap attribute_map_;
319  std::vector<SpanDataEvent> events_;
320  std::vector<SpanDataLink> links_;
321  opentelemetry::trace::TraceFlags flags_;
323  const opentelemetry::sdk::resource::Resource *resource_;
324  const InstrumentationScope *instrumentation_scope_;
325 };
326 } // namespace trace
327 } // namespace sdk
sdk::trace::SpanData::SetName
void SetName(nostd::string_view name) noexcept override
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:281
sdk::trace::SpanData::GetName
opentelemetry::nostd::string_view GetName() const noexcept
Get the name for this span.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:141
sdk::trace::SpanDataEvent
Class for storing events in SpanData.
Definition: includes/opentelemetry/sdk/trace/span_data.h:37
trace
Definition: includes/opentelemetry/context/context_value.h:18
sdk::trace::SpanData::GetAttributes
const std::unordered_map< std::string, opentelemetry::sdk::common::OwnedAttributeValue > & GetAttributes() const noexcept
Get the attributes for this span.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:226
sdk::trace::SpanDataEvent::GetTimestamp
opentelemetry::common::SystemTimestamp GetTimestamp() const noexcept
Get the timestamp for this event.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:56
sdk::trace::SpanData::GetDuration
std::chrono::nanoseconds GetDuration() const noexcept
Get the duration for this span.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:219
sdk::trace::SpanData::GetStartTime
opentelemetry::common::SystemTimestamp GetStartTime() const noexcept
Get the start time for this span.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:213
sdk::trace::SpanDataEvent::GetName
std::string GetName() const noexcept
Get the name for this event.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:50
sdk::trace::SpanData::SetInstrumentationScope
void SetInstrumentationScope(const InstrumentationScope &instrumentation_scope) noexcept override
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:305
sdk::trace::SpanData::SetSpanKind
void SetSpanKind(opentelemetry::trace::SpanKind span_kind) noexcept override
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:288
sdk::trace::SpanData::AddLink
void AddLink(const opentelemetry::trace::SpanContext &span_context, const opentelemetry::common::KeyValueIterable &attributes) noexcept override
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:267
trace::SpanKind
SpanKind
Definition: includes/opentelemetry/trace/span_metadata.h:13
sdk::trace::SpanData::GetStatus
opentelemetry::trace::StatusCode GetStatus() const noexcept
Get the status for this span.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:159
pydeepstreamdoc::node::NodeDoc::link
constexpr const char * link
Definition: service-maker/sources/python/src/bindings/docstrings/nodedoc.h:30
sdk::trace::SpanData::GetSpanId
opentelemetry::trace::SpanId GetSpanId() const noexcept
Get the span id for this span.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:123
sdk::trace::SpanDataEvent::GetAttributes
const std::unordered_map< std::string, opentelemetry::sdk::common::OwnedAttributeValue > & GetAttributes() const noexcept
Get the attributes for this event.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:63
sdk::trace::SpanData::GetDescription
opentelemetry::nostd::string_view GetDescription() const noexcept
Get the status description for this span.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:165
sdk::trace::SpanData::GetFlags
opentelemetry::trace::TraceFlags GetFlags() const noexcept
Get the trace flags for this span.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:147
sdk::trace::SpanData::GetTraceId
opentelemetry::trace::TraceId GetTraceId() const noexcept
Get the trace id for this span.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:117
sdk::trace::SpanData::GetInstrumentationLibrary
const opentelemetry::sdk::trace::InstrumentationScope & GetInstrumentationLibrary() const noexcept
Definition: includes/opentelemetry/sdk/trace/span_data.h:204
OPENTELEMETRY_BEGIN_NAMESPACE
#define OPENTELEMETRY_BEGIN_NAMESPACE
Definition: includes/opentelemetry/version.h:21
sdk::trace::SpanData::GetEvents
const std::vector< SpanDataEvent > & GetEvents() const noexcept
Get the events associated with this span.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:235
semconv::rpc::RpcConnectRpcErrorCodeValues::kInternal
static constexpr const char * kInternal
Definition: includes/opentelemetry/semconv/incubating/rpc_attributes.h:177
common::AttributeValue
nostd::variant< bool, int32_t, int64_t, uint32_t, double, const char *, nostd::string_view, nostd::span< const bool >, nostd::span< const int32_t >, nostd::span< const int64_t >, nostd::span< const uint32_t >, nostd::span< const double >, nostd::span< const nostd::string_view >, uint64_t, nostd::span< const uint64_t >, nostd::span< const uint8_t > > AttributeValue
OpenTelemetry signals can be enriched by adding attributes.
Definition: includes/opentelemetry/common/attribute_value.h:58
sdk::trace::SpanData::GetSpanContext
const opentelemetry::trace::SpanContext & GetSpanContext() const noexcept
Get the span context for this span.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:129
sdk::trace::SpanData::GetSpanKind
opentelemetry::trace::SpanKind GetSpanKind() const noexcept
Get the kind of this span.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:153
sdk::trace::SpanDataEvent::SpanDataEvent
SpanDataEvent(std::string name, opentelemetry::common::SystemTimestamp timestamp, const opentelemetry::common::KeyValueIterable &attributes)
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:40
sdk::trace::SpanData::GetInstrumentationScope
const opentelemetry::sdk::trace::InstrumentationScope & GetInstrumentationScope() const noexcept
Get the attributes associated with the resource.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:189
OPENTELEMETRY_END_NAMESPACE
#define OPENTELEMETRY_END_NAMESPACE
Definition: includes/opentelemetry/version.h:24
sdk::trace::SpanData::SetAttribute
void SetAttribute(nostd::string_view key, const opentelemetry::common::AttributeValue &value) noexcept override
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:250
sdk::trace::SpanData::SetDuration
void SetDuration(std::chrono::nanoseconds duration) noexcept override
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:303
nostd::string_view::length
size_type length() const noexcept
Definition: includes/opentelemetry/nostd/string_view.h:60
sdk::trace::SpanData::SetResource
void SetResource(const opentelemetry::sdk::resource::Resource &resource) noexcept override
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:293
trace::StatusCode
StatusCode
Definition: includes/opentelemetry/trace/span_metadata.h:27
sdk::trace::SpanData::SetTraceFlags
void SetTraceFlags(opentelemetry::trace::TraceFlags flags) noexcept override
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:286
sdk::trace::SpanData::SetIdentity
void SetIdentity(const opentelemetry::trace::SpanContext &span_context, opentelemetry::trace::SpanId parent_span_id) noexcept override
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:243
sdk::trace::SpanData::GetParentSpanId
opentelemetry::trace::SpanId GetParentSpanId() const noexcept
Get the parent span id for this span.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:135
sdk
Definition: includes/opentelemetry/sdk/common/atomic_shared_ptr.h:13
nostd::string_view::data
const char * data() const noexcept
Definition: includes/opentelemetry/nostd/string_view.h:56
sdk::trace::SpanData::SetStartTime
void SetStartTime(opentelemetry::common::SystemTimestamp start_time) noexcept override
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:298
sdk::trace::SpanData::SetStatus
void SetStatus(opentelemetry::trace::StatusCode code, nostd::string_view description) noexcept override
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:274
sdk::trace::SpanData::GetLinks
const std::vector< SpanDataLink > & GetLinks() const noexcept
Get the links associated with this span.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:241
sdk::trace::SpanData::SpanData
SpanData()
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:112
sdk::trace::SpanData::AddEvent
void AddEvent(nostd::string_view name, opentelemetry::common::SystemTimestamp timestamp=opentelemetry::common::SystemTimestamp(std::chrono::system_clock::now()), const opentelemetry::common::KeyValueIterable &attributes=opentelemetry::common::KeyValueIterableView< std::map< std::string, int32_t >>({})) noexcept override
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:256
opentelemetry
Definition: includes/opentelemetry/exporters/otlp/otlp_grpc_client.h:38
nostd::string_view
std::string_view string_view
Definition: includes/opentelemetry/std/string_view.h:18
OPENTELEMETRY_DEPRECATED_MESSAGE
#define OPENTELEMETRY_DEPRECATED_MESSAGE(msg)
Definition: includes/opentelemetry/common/macros.h:244
sdk::trace::SpanData::GetResource
const opentelemetry::sdk::resource::Resource & GetResource() const noexcept
Get the attributes associated with the resource.
Definition: 9.2/includes/opentelemetry/sdk/trace/span_data.h:172
nostd::string_view
Back port of std::string_view to work with pre-cpp-17 compilers.
Definition: includes/opentelemetry/nostd/string_view.h:37