NVIDIA DeepStream SDK API Reference

9.2 Release
includes/opentelemetry/sdk/metrics/state/metric_storage.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 <memory>
7 #include <unordered_map>
8 
9 #include "opentelemetry/common/timestamp.h"
10 #include "opentelemetry/context/context.h"
11 #include "opentelemetry/nostd/function_ref.h"
12 #include "opentelemetry/nostd/span.h"
13 #include "opentelemetry/sdk/metrics/data/metric_data.h"
14 #include "opentelemetry/sdk/metrics/instruments.h"
15 #include "opentelemetry/sdk/metrics/state/attributes_hashmap.h"
16 #include "opentelemetry/version.h"
17 
19 namespace common
20 {
21 class KeyValueIterable;
22 } // namespace common
23 
24 namespace sdk
25 {
26 namespace metrics
27 {
28 
29 /* Represent the storage from which to collect the metrics */
30 class CollectorHandle;
31 
33 {
34 public:
35  MetricStorage() = default;
36  virtual ~MetricStorage() = default;
37 
38  /* collect the metrics from this storage */
39  virtual bool Collect(CollectorHandle *collector,
40  nostd::span<std::shared_ptr<CollectorHandle>> collectors,
41  opentelemetry::common::SystemTimestamp sdk_start_ts,
42  opentelemetry::common::SystemTimestamp collection_ts,
43  nostd::function_ref<bool(MetricData)> callback) noexcept = 0;
44 };
45 
46 /* Represents the sync metric storage */
48 {
49 public:
50  virtual void RecordLong(int64_t value,
51  const opentelemetry::context::Context &context) noexcept = 0;
52 
53  virtual void RecordLong(int64_t value,
54  const opentelemetry::common::KeyValueIterable &attributes,
55  const opentelemetry::context::Context &context) noexcept = 0;
56 
57  virtual void RecordDouble(double value,
58  const opentelemetry::context::Context &context) noexcept = 0;
59 
60  virtual void RecordDouble(double value,
61  const opentelemetry::common::KeyValueIterable &attributes,
62  const opentelemetry::context::Context &context) noexcept = 0;
63 
64  virtual ~SyncWritableMetricStorage() = default;
65 };
66 
67 /* Represents the async metric stroage */
69 {
70 public:
71  AsyncWritableMetricStorage() = default;
72  virtual ~AsyncWritableMetricStorage() = default;
73 
74  /* Records a batch of measurements */
75  virtual void RecordLong(
76  const std::unordered_map<MetricAttributes, int64_t, AttributeHashGenerator> &measurements,
77  opentelemetry::common::SystemTimestamp observation_time) noexcept = 0;
78 
79  virtual void RecordDouble(
80  const std::unordered_map<MetricAttributes, double, AttributeHashGenerator> &measurements,
81  opentelemetry::common::SystemTimestamp observation_time) noexcept = 0;
82 };
83 
85 {
86 public:
87  bool Collect(CollectorHandle * /* collector */,
88  nostd::span<std::shared_ptr<CollectorHandle>> /* collectors */,
89  opentelemetry::common::SystemTimestamp /* sdk_start_ts */,
90  opentelemetry::common::SystemTimestamp /* collection_ts */,
91  nostd::function_ref<bool(MetricData)> callback) noexcept override
92  {
93  MetricData metric_data{};
94  return callback(std::move(metric_data));
95  }
96 };
97 
99 {
100 public:
101  void RecordLong(int64_t value,
102  const opentelemetry::context::Context &context) noexcept override = 0;
103 
104  void RecordLong(int64_t /* value */,
105  const opentelemetry::common::KeyValueIterable & /* attributes */,
106  const opentelemetry::context::Context & /* context */) noexcept override
107  {}
108 
109  void RecordDouble(double /* value */,
110  const opentelemetry::context::Context & /* context */) noexcept override
111  {}
112 
113  void RecordDouble(double /* value */,
114  const opentelemetry::common::KeyValueIterable & /* attributes */,
115  const opentelemetry::context::Context & /* context */) noexcept override
116  {}
117 };
118 
120 {
121 public:
122  void RecordLong(const std::unordered_map<MetricAttributes, int64_t, AttributeHashGenerator>
123  & /* measurements */,
124  opentelemetry::common::SystemTimestamp /* observation_time */) noexcept override
125  {}
126 
127  void RecordDouble(const std::unordered_map<MetricAttributes, double, AttributeHashGenerator>
128  & /* measurements */,
129  opentelemetry::common::SystemTimestamp /* observation_time */) noexcept override
130  {}
131 };
132 
133 } // namespace metrics
134 } // namespace sdk
sdk::metrics::NoopMetricStorage::Collect
bool Collect(CollectorHandle *, nostd::span< std::shared_ptr< CollectorHandle >>, opentelemetry::common::SystemTimestamp, opentelemetry::common::SystemTimestamp, nostd::function_ref< bool(MetricData)> callback) noexcept override
Definition: includes/opentelemetry/sdk/metrics/state/metric_storage.h:87
sdk::metrics::NoopWritableMetricStorage::RecordDouble
void RecordDouble(double, const opentelemetry::common::KeyValueIterable &, const opentelemetry::context::Context &) noexcept override
Definition: includes/opentelemetry/sdk/metrics/state/metric_storage.h:113
sdk::metrics::AsyncWritableMetricStorage::RecordLong
virtual void RecordLong(const std::unordered_map< MetricAttributes, int64_t, AttributeHashGenerator > &measurements, opentelemetry::common::SystemTimestamp observation_time) noexcept=0
nostd::function_ref
Definition: includes/opentelemetry/nostd/function_ref.h:17
sdk::metrics::MetricStorage::~MetricStorage
virtual ~MetricStorage()=default
sdk::metrics::NoopAsyncWritableMetricStorage
Definition: includes/opentelemetry/sdk/metrics/state/metric_storage.h:119
sdk::metrics::SyncWritableMetricStorage::RecordDouble
virtual void RecordDouble(double value, const opentelemetry::context::Context &context) noexcept=0
sdk::metrics::MetricStorage::Collect
virtual bool Collect(CollectorHandle *collector, nostd::span< std::shared_ptr< CollectorHandle >> collectors, opentelemetry::common::SystemTimestamp sdk_start_ts, opentelemetry::common::SystemTimestamp collection_ts, nostd::function_ref< bool(MetricData)> callback) noexcept=0
sdk::metrics::NoopAsyncWritableMetricStorage::RecordLong
void RecordLong(const std::unordered_map< MetricAttributes, int64_t, AttributeHashGenerator > &, opentelemetry::common::SystemTimestamp) noexcept override
Definition: includes/opentelemetry/sdk/metrics/state/metric_storage.h:122
sdk::metrics::CollectorHandle
Definition: includes/opentelemetry/sdk/metrics/state/metric_collector.h:25
sdk::metrics::AsyncWritableMetricStorage
Definition: includes/opentelemetry/sdk/metrics/state/metric_storage.h:68
sdk::metrics::NoopWritableMetricStorage
Definition: includes/opentelemetry/sdk/metrics/state/metric_storage.h:98
sdk::metrics::SyncWritableMetricStorage::~SyncWritableMetricStorage
virtual ~SyncWritableMetricStorage()=default
sdk::metrics::AsyncWritableMetricStorage::~AsyncWritableMetricStorage
virtual ~AsyncWritableMetricStorage()=default
OPENTELEMETRY_BEGIN_NAMESPACE
#define OPENTELEMETRY_BEGIN_NAMESPACE
Definition: includes/opentelemetry/version.h:21
sdk::metrics::SyncWritableMetricStorage
Definition: includes/opentelemetry/sdk/metrics/state/metric_storage.h:47
nostd::span
Back port of std::span.
Definition: includes/opentelemetry/nostd/span.h:51
sdk::metrics::SyncWritableMetricStorage::RecordLong
virtual void RecordLong(int64_t value, const opentelemetry::context::Context &context) noexcept=0
sdk::metrics::AsyncWritableMetricStorage::AsyncWritableMetricStorage
AsyncWritableMetricStorage()=default
context
Definition: includes/opentelemetry/context/context.h:16
sdk::metrics::MetricStorage
Definition: includes/opentelemetry/sdk/metrics/state/metric_storage.h:32
sdk::metrics::NoopWritableMetricStorage::RecordDouble
void RecordDouble(double, const opentelemetry::context::Context &) noexcept override
Definition: includes/opentelemetry/sdk/metrics/state/metric_storage.h:109
sdk::metrics::NoopWritableMetricStorage::RecordLong
void RecordLong(int64_t value, const opentelemetry::context::Context &context) noexcept override=0
OPENTELEMETRY_END_NAMESPACE
#define OPENTELEMETRY_END_NAMESPACE
Definition: includes/opentelemetry/version.h:24
absl::move
constexpr absl::OTABSL_OPTION_NAMESPACE_NAME::remove_reference_t< T > && move(T &&t) noexcept
Definition: includes/opentelemetry/nostd/internal/absl/utility/utility.h:199
sdk::metrics::MetricData
Definition: includes/opentelemetry/sdk/metrics/data/metric_data.h:33
sdk::metrics::AsyncWritableMetricStorage::RecordDouble
virtual void RecordDouble(const std::unordered_map< MetricAttributes, double, AttributeHashGenerator > &measurements, opentelemetry::common::SystemTimestamp observation_time) noexcept=0
sdk::metrics::NoopAsyncWritableMetricStorage::RecordDouble
void RecordDouble(const std::unordered_map< MetricAttributes, double, AttributeHashGenerator > &, opentelemetry::common::SystemTimestamp) noexcept override
Definition: includes/opentelemetry/sdk/metrics/state/metric_storage.h:127
sdk
Definition: includes/opentelemetry/sdk/common/atomic_shared_ptr.h:13
metrics
Definition: includes/opentelemetry/metrics/async_instruments.h:10
sdk::metrics::NoopMetricStorage
Definition: includes/opentelemetry/sdk/metrics/state/metric_storage.h:84
sdk::metrics::MetricStorage::MetricStorage
MetricStorage()=default
sdk::metrics::NoopWritableMetricStorage::RecordLong
void RecordLong(int64_t, const opentelemetry::common::KeyValueIterable &, const opentelemetry::context::Context &) noexcept override
Definition: includes/opentelemetry/sdk/metrics/state/metric_storage.h:104
common
Definition: includes/opentelemetry/common/attribute_value.h:14