NVIDIA DeepStream SDK API Reference

9.2 Release
includes/opentelemetry/trace/provider.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 <mutex>
7 
8 #include "opentelemetry/common/spin_lock_mutex.h"
9 #include "opentelemetry/nostd/shared_ptr.h"
10 #include "opentelemetry/trace/noop.h"
11 #include "opentelemetry/trace/tracer_provider.h"
12 #include "opentelemetry/version.h"
13 
15 namespace trace
16 {
17 
22 {
23 public:
31  {
32  std::lock_guard<common::SpinLockMutex> guard(GetLock());
33  return nostd::shared_ptr<TracerProvider>(GetProvider());
34  }
35 
39  static void SetTracerProvider(const nostd::shared_ptr<TracerProvider> &tp) noexcept
40  {
41  std::lock_guard<common::SpinLockMutex> guard(GetLock());
42  GetProvider() = tp;
43  }
44 
45 private:
47  {
49  return provider;
50  }
51 
52  OPENTELEMETRY_API_SINGLETON static common::SpinLockMutex &GetLock() noexcept
53  {
54  static common::SpinLockMutex lock;
55  return lock;
56  }
57 };
58 
59 } // namespace trace
trace::Provider
Stores the singleton global TracerProvider.
Definition: includes/opentelemetry/trace/provider.h:21
trace
Definition: includes/opentelemetry/context/context_value.h:18
OPENTELEMETRY_EXPORT
#define OPENTELEMETRY_EXPORT
Definition: includes/opentelemetry/common/macros.h:386
trace::Provider::GetTracerProvider
static nostd::shared_ptr< TracerProvider > GetTracerProvider() noexcept
Returns the singleton TracerProvider.
Definition: includes/opentelemetry/trace/provider.h:30
nostd::shared_ptr
Provide a type-erased version of std::shared_ptr that has ABI stability.
Definition: includes/opentelemetry/nostd/shared_ptr.h:28
OPENTELEMETRY_BEGIN_NAMESPACE
#define OPENTELEMETRY_BEGIN_NAMESPACE
Definition: includes/opentelemetry/version.h:21
common::SpinLockMutex
A Mutex which uses atomic flags and spin-locks instead of halting threads.
Definition: includes/opentelemetry/common/spin_lock_mutex.h:52
OPENTELEMETRY_END_NAMESPACE
#define OPENTELEMETRY_END_NAMESPACE
Definition: includes/opentelemetry/version.h:24
OPENTELEMETRY_API_SINGLETON
#define OPENTELEMETRY_API_SINGLETON
Definition: includes/opentelemetry/common/macros.h:335
trace::Provider::SetTracerProvider
static void SetTracerProvider(const nostd::shared_ptr< TracerProvider > &tp) noexcept
Changes the singleton TracerProvider.
Definition: includes/opentelemetry/trace/provider.h:39
trace::NoopTracerProvider
No-op implementation of a TracerProvider.
Definition: includes/opentelemetry/trace/noop.h:130