NVIDIA DeepStream SDK API Reference

9.2 Release
includes/opentelemetry/logs/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/macros.h"
9 #include "opentelemetry/common/spin_lock_mutex.h"
10 #include "opentelemetry/logs/noop.h"
11 #include "opentelemetry/nostd/shared_ptr.h"
12 #include "opentelemetry/version.h"
13 
15 namespace logs
16 {
17 
18 #if OPENTELEMETRY_ABI_VERSION_NO < 2
19 class EventLoggerProvider;
20 #endif
21 class LoggerProvider;
22 
27 {
28 public:
36  {
37  std::lock_guard<common::SpinLockMutex> guard(GetLock());
38  return nostd::shared_ptr<LoggerProvider>(GetProvider());
39  }
40 
44  static void SetLoggerProvider(const nostd::shared_ptr<LoggerProvider> &tp) noexcept
45  {
46  std::lock_guard<common::SpinLockMutex> guard(GetLock());
47  GetProvider() = tp;
48  }
49 
50 #if OPENTELEMETRY_ABI_VERSION_NO < 2
51 
59  {
60  std::lock_guard<common::SpinLockMutex> guard(GetLock());
61  return nostd::shared_ptr<EventLoggerProvider>(GetEventProvider());
62  }
63 
68  const nostd::shared_ptr<EventLoggerProvider> &tp) noexcept
69  {
70  std::lock_guard<common::SpinLockMutex> guard(GetLock());
71  GetEventProvider() = tp;
72  }
73 #endif
74 
75 private:
77  {
79  return provider;
80  }
81 
82 #if OPENTELEMETRY_ABI_VERSION_NO < 2
85  GetEventProvider() noexcept
86  {
87 # if defined(_MSC_VER)
88 # pragma warning(push)
89 # pragma warning(disable : 4996)
90 # elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
91 # pragma GCC diagnostic push
92 # pragma GCC diagnostic ignored "-Wdeprecated-declarations"
93 # elif defined(__clang__) || defined(__apple_build_version__)
94 # pragma clang diagnostic push
95 # pragma clang diagnostic ignored "-Wdeprecated-declarations"
96 # endif
97 
98  static nostd::shared_ptr<EventLoggerProvider> provider(new NoopEventLoggerProvider);
99  return provider;
100 
101 # if defined(_MSC_VER)
102 # pragma warning(pop)
103 # elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
104 # pragma GCC diagnostic pop
105 # elif defined(__clang__) || defined(__apple_build_version__)
106 # pragma clang diagnostic pop
107 # endif
108  }
109 #endif
110 
111  OPENTELEMETRY_API_SINGLETON static common::SpinLockMutex &GetLock() noexcept
112  {
113  static common::SpinLockMutex lock;
114  return lock;
115  }
116 };
117 
118 } // namespace logs
OPENTELEMETRY_EXPORT
#define OPENTELEMETRY_EXPORT
Definition: includes/opentelemetry/common/macros.h:386
logs::Provider::GetLoggerProvider
static nostd::shared_ptr< LoggerProvider > GetLoggerProvider() noexcept
Returns the singleton LoggerProvider.
Definition: includes/opentelemetry/logs/provider.h:35
logs
Definition: includes/opentelemetry/logs/event_id.h:13
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
logs::Provider::SetLoggerProvider
static void SetLoggerProvider(const nostd::shared_ptr< LoggerProvider > &tp) noexcept
Changes the singleton LoggerProvider.
Definition: includes/opentelemetry/logs/provider.h:44
OPENTELEMETRY_END_NAMESPACE
#define OPENTELEMETRY_END_NAMESPACE
Definition: includes/opentelemetry/version.h:24
logs::Provider::GetEventLoggerProvider
static OPENTELEMETRY_DEPRECATED nostd::shared_ptr< EventLoggerProvider > GetEventLoggerProvider() noexcept
Returns the singleton EventLoggerProvider.
Definition: includes/opentelemetry/logs/provider.h:58
logs::Provider::SetEventLoggerProvider
static OPENTELEMETRY_DEPRECATED void SetEventLoggerProvider(const nostd::shared_ptr< EventLoggerProvider > &tp) noexcept
Changes the singleton EventLoggerProvider.
Definition: includes/opentelemetry/logs/provider.h:67
OPENTELEMETRY_API_SINGLETON
#define OPENTELEMETRY_API_SINGLETON
Definition: includes/opentelemetry/common/macros.h:335
logs::NoopLoggerProvider
No-op implementation of a LoggerProvider.
Definition: includes/opentelemetry/logs/noop.h:75
OPENTELEMETRY_DEPRECATED
#define OPENTELEMETRY_DEPRECATED
Definition: includes/opentelemetry/common/macros.h:228
logs::Provider
Stores the singleton global LoggerProvider.
Definition: includes/opentelemetry/logs/provider.h:26