NVIDIA DeepStream SDK API Reference

9.2 Release
includes/opentelemetry/sdk/metrics/meter_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 <chrono>
7 #include <memory>
8 #include <mutex>
9 
10 #include "opentelemetry/metrics/meter.h"
11 #include "opentelemetry/metrics/meter_provider.h"
12 #include "opentelemetry/nostd/shared_ptr.h"
13 #include "opentelemetry/nostd/string_view.h"
14 #include "opentelemetry/sdk/metrics/export/metric_filter.h"
15 #include "opentelemetry/sdk/metrics/meter_context.h"
16 #include "opentelemetry/sdk/metrics/metric_reader.h"
17 #include "opentelemetry/sdk/metrics/view/instrument_selector.h"
18 #include "opentelemetry/sdk/metrics/view/meter_selector.h"
19 #include "opentelemetry/sdk/metrics/view/view.h"
20 #include "opentelemetry/sdk/metrics/view/view_registry.h"
21 #include "opentelemetry/sdk/resource/resource.h"
22 #include "opentelemetry/version.h"
23 
24 #include "opentelemetry/sdk/instrumentationscope/scope_configurator.h"
25 #include "opentelemetry/sdk/metrics/meter.h"
26 
27 #ifdef ENABLE_METRICS_EXEMPLAR_PREVIEW
28 # include "opentelemetry/sdk/metrics/exemplar/filter_type.h"
29 #endif
30 
32 namespace sdk
33 {
34 namespace metrics
35 {
36 
37 class OPENTELEMETRY_EXPORT MeterProvider final : public opentelemetry::metrics::MeterProvider
38 {
39 public:
48  std::unique_ptr<ViewRegistry> views = std::unique_ptr<ViewRegistry>(new ViewRegistry()),
53  .Build())) noexcept;
54 
59  explicit MeterProvider(std::unique_ptr<MeterContext> context) noexcept;
60 
61  /*
62  Make sure GetMeter() helpers from the API are seen in overload resolution.
63  */
64  using opentelemetry::metrics::MeterProvider::GetMeter;
65 
66 #if OPENTELEMETRY_ABI_VERSION_NO >= 2
68  nostd::string_view name,
70  nostd::string_view schema_url,
71  const opentelemetry::common::KeyValueIterable *attributes) noexcept override;
72 #else
74  nostd::string_view name,
76  nostd::string_view schema_url = "") noexcept override;
77 #endif
78 
79 #if OPENTELEMETRY_ABI_VERSION_NO >= 2
80  void RemoveMeter(nostd::string_view name,
82  nostd::string_view schema_url) noexcept override;
83 #endif
84 
89  const sdk::resource::Resource &GetResource() const noexcept;
90 
102  void AddMetricReader(std::shared_ptr<MetricReader> reader,
103  std::unique_ptr<MetricFilter> metric_filter = nullptr) noexcept;
104 
113  void AddView(std::unique_ptr<InstrumentSelector> instrument_selector,
114  std::unique_ptr<MeterSelector> meter_selector,
115  std::unique_ptr<View> view) noexcept;
116 
117 #ifdef ENABLE_METRICS_EXEMPLAR_PREVIEW
118 
119  void SetExemplarFilter(metrics::ExemplarFilterType exemplar_filter_type =
120  metrics::ExemplarFilterType::kTraceBased) noexcept;
121 
122 #endif
123 
127  bool Shutdown(std::chrono::microseconds timeout = (std::chrono::microseconds::max)()) noexcept;
128 
132  bool ForceFlush(std::chrono::microseconds timeout = (std::chrono::microseconds::max)()) noexcept;
133 
134  ~MeterProvider() override;
135 
136 private:
137  std::shared_ptr<MeterContext> context_;
138  std::mutex lock_;
139 };
140 } // namespace metrics
141 } // namespace sdk
sdk::metrics::ViewRegistry
Definition: includes/opentelemetry/sdk/metrics/view/view_registry.h:41
nostd::unique_ptr
std::unique_ptr< _Types... > unique_ptr
Definition: includes/opentelemetry/std/unique_ptr.h:19
OPENTELEMETRY_EXPORT
#define OPENTELEMETRY_EXPORT
Definition: includes/opentelemetry/common/macros.h:386
sdk::metrics::MeterConfig::Default
static MeterConfig Default()
Returns a MeterConfig that represents a Meter configured with the default behavior.
prometheus::detail::make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: includes/prometheus/detail/future_std.h:28
sdk::resource::Resource::Create
static Resource Create(const ResourceAttributes &attributes, const std::string &schema_url=std::string{})
Returns a newly created Resource with the specified attributes.
nostd::shared_ptr
Provide a type-erased version of std::shared_ptr that has ABI stability.
Definition: includes/opentelemetry/nostd/shared_ptr.h:28
version
int version
Definition: sources/libs/nvll_batch_jpeg_encode/oss/jpeglib.h:908
OPENTELEMETRY_BEGIN_NAMESPACE
#define OPENTELEMETRY_BEGIN_NAMESPACE
Definition: includes/opentelemetry/version.h:21
context
Definition: includes/opentelemetry/context/context.h:16
max
int max(int a, int b)
Compute the component-wise maximum.
Definition: sources/libs/nvmultiobjecttracker/include/modules/cuDCFv2/helper_math.h:60
OPENTELEMETRY_END_NAMESPACE
#define OPENTELEMETRY_END_NAMESPACE
Definition: includes/opentelemetry/version.h:24
sdk::instrumentationscope::ScopeConfigurator::Builder
A builder class for the ScopeConfigurator that facilitates the creation of ScopeConfigurators.
Definition: includes/opentelemetry/sdk/instrumentationscope/scope_configurator.h:26
sdk::instrumentationscope::ScopeConfigurator
A scope configurator is a function that returns the scope config for a given instrumentation scope.
Definition: includes/opentelemetry/sdk/instrumentationscope/scope_configurator.h:20
sdk
Definition: includes/opentelemetry/sdk/common/atomic_shared_ptr.h:13
metrics
Definition: includes/opentelemetry/metrics/async_instruments.h:10
sdk::resource::Resource
Definition: includes/opentelemetry/sdk/resource/resource.h:19
sdk::metrics::MeterProvider
Definition: includes/opentelemetry/sdk/metrics/meter_provider.h:37
nostd::string_view
Back port of std::string_view to work with pre-cpp-17 compilers.
Definition: includes/opentelemetry/nostd/string_view.h:37