NVIDIA DeepStream SDK API Reference

9.2 Release
includes/opentelemetry/metrics/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/metrics/meter_provider.h"
10 #include "opentelemetry/metrics/noop.h"
11 #include "opentelemetry/nostd/shared_ptr.h"
12 #include "opentelemetry/version.h"
13 
15 namespace metrics
16 {
17 
21 class Provider
22 {
23 public:
31  {
32  std::lock_guard<common::SpinLockMutex> guard(GetLock());
33  return nostd::shared_ptr<MeterProvider>(GetProvider());
34  }
35 
39  static void SetMeterProvider(const nostd::shared_ptr<MeterProvider> &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 metrics
nostd::shared_ptr
Provide a type-erased version of std::shared_ptr that has ABI stability.
Definition: includes/opentelemetry/nostd/shared_ptr.h:28
metrics::NoopMeterProvider
No-op implementation of a MeterProvider.
Definition: includes/opentelemetry/metrics/noop.h:237
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
metrics::Provider::SetMeterProvider
static void SetMeterProvider(const nostd::shared_ptr< MeterProvider > &tp) noexcept
Changes the singleton MeterProvider.
Definition: includes/opentelemetry/metrics/provider.h:39
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
metrics::Provider::GetMeterProvider
static nostd::shared_ptr< MeterProvider > GetMeterProvider() noexcept
Returns the singleton MeterProvider.
Definition: includes/opentelemetry/metrics/provider.h:30
metrics
Definition: includes/opentelemetry/metrics/async_instruments.h:10
metrics::Provider
Stores the singleton global MeterProvider.
Definition: includes/opentelemetry/metrics/provider.h:21