NVIDIA DeepStream SDK API Reference

9.2 Release
9.2/includes/opentelemetry/sdk/metrics/observer_result.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 <unordered_map>
7 
8 #include "opentelemetry/common/attribute_value.h"
9 #include "opentelemetry/common/key_value_iterable.h"
10 #include "opentelemetry/metrics/observer_result.h"
11 #include "opentelemetry/nostd/string_view.h"
12 #include "opentelemetry/sdk/metrics/state/attributes_hashmap.h"
13 #include "opentelemetry/sdk/metrics/view/attributes_processor.h"
14 #include "opentelemetry/version.h"
15 
17 namespace sdk
18 {
19 namespace metrics
20 {
21 template <class T>
22 class ObserverResultT final : public opentelemetry::metrics::ObserverResultT<T>
23 {
24 public:
25  explicit ObserverResultT(const AttributesProcessor *attributes_processor = nullptr)
26  : attributes_processor_(attributes_processor)
27  {}
28 
29  ~ObserverResultT() override = default;
30 
31  void Observe(T value) noexcept override
32  {
33  data_[MetricAttributes{{}, attributes_processor_}] = value;
34  }
35 
36  void Observe(T value, const opentelemetry::common::KeyValueIterable &attributes) noexcept override
37  {
38  data_[MetricAttributes{attributes, attributes_processor_}] =
39  value; // overwrites the previous value if present
40  }
41 
42  const std::unordered_map<MetricAttributes, T, AttributeHashGenerator> &GetMeasurements()
43  {
44  return data_;
45  }
46 
47 private:
48  std::unordered_map<MetricAttributes, T, AttributeHashGenerator> data_;
49  const AttributesProcessor *attributes_processor_;
50 };
51 } // namespace metrics
52 } // namespace sdk
53 
sdk::metrics::ObserverResultT::ObserverResultT
ObserverResultT(const AttributesProcessor *attributes_processor=nullptr)
Definition: 9.2/includes/opentelemetry/sdk/metrics/observer_result.h:25
sdk::metrics::ObserverResultT::Observe
void Observe(T value) noexcept override
Definition: 9.2/includes/opentelemetry/sdk/metrics/observer_result.h:31
OPENTELEMETRY_BEGIN_NAMESPACE
#define OPENTELEMETRY_BEGIN_NAMESPACE
Definition: includes/opentelemetry/version.h:21
sdk::metrics::ObserverResultT::GetMeasurements
const std::unordered_map< MetricAttributes, T, AttributeHashGenerator > & GetMeasurements()
Definition: 9.2/includes/opentelemetry/sdk/metrics/observer_result.h:42
sdk::metrics::MetricAttributes
opentelemetry::sdk::metrics::FilteredOrderedAttributeMap MetricAttributes
Definition: includes/opentelemetry/sdk/metrics/instruments.h:216
OPENTELEMETRY_END_NAMESPACE
#define OPENTELEMETRY_END_NAMESPACE
Definition: includes/opentelemetry/version.h:24
sdk::metrics::ObserverResultT::Observe
void Observe(T value, const opentelemetry::common::KeyValueIterable &attributes) noexcept override
Definition: 9.2/includes/opentelemetry/sdk/metrics/observer_result.h:36
sdk::metrics::ObserverResultT::~ObserverResultT
~ObserverResultT() override=default
sdk::metrics::AttributesProcessor
The AttributesProcessor is responsible for customizing which attribute(s) are to be reported as metri...
Definition: includes/opentelemetry/sdk/metrics/view/attributes_processor.h:37
sdk
Definition: includes/opentelemetry/sdk/common/atomic_shared_ptr.h:13
metrics
Definition: includes/opentelemetry/metrics/async_instruments.h:10