NVIDIA DeepStream SDK API Reference

9.2 Release
includes/opentelemetry/sdk/metrics/data/circular_buffer.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 <limits>
7 #include <vector>
8 
9 #include "opentelemetry/nostd/variant.h"
10 #include "opentelemetry/version.h"
11 
13 namespace sdk
14 {
15 namespace metrics
16 {
17 
30 {
31 public:
32  // Construct an adapting integer array of a given size.
33  explicit AdaptingIntegerArray(size_t size) : backing_(std::vector<uint8_t>(size, 0)) {}
34  AdaptingIntegerArray(const AdaptingIntegerArray &other) = default;
35  AdaptingIntegerArray(AdaptingIntegerArray &&other) = default;
36  AdaptingIntegerArray &operator=(const AdaptingIntegerArray &other) = default;
38 
45  void Increment(size_t index, uint64_t count);
46 
53  uint64_t Get(size_t index) const;
54 
60  size_t Size() const;
61 
65  void Clear();
66 
67 private:
68  void EnlargeToFit(uint64_t value);
69 
71  std::vector<uint16_t>,
72  std::vector<uint32_t>,
73  std::vector<uint64_t>>
74  backing_;
75 };
76 
87 {
88 public:
89  explicit AdaptingCircularBufferCounter(size_t max_size) : backing_(max_size) {}
94 
102  int32_t StartIndex() const { return start_index_; }
103 
111  int32_t EndIndex() const { return end_index_; }
112 
116  bool Empty() const { return base_index_ == kNullIndex; }
117 
121  size_t MaxSize() const { return backing_.Size(); }
122 
124  void Clear();
125 
133  bool Increment(int32_t index, uint64_t delta);
134 
140  uint64_t Get(int32_t index) const;
141 
142 private:
143  size_t ToBufferIndex(int32_t index) const;
144 
145  static constexpr int32_t kNullIndex = (std::numeric_limits<int32_t>::min)();
146 
147  // Index of the first populated element, may be kNullIndex if container is empty.
148  int32_t start_index_ = kNullIndex;
149  // Index of the last populated element, may be kNullIndex if container is empty.
150  int32_t end_index_ = kNullIndex;
151  // Index corresponding to the element located at the start of the backing array, may be kNullIndex
152  // if container is empty.
153  int32_t base_index_ = kNullIndex;
154  AdaptingIntegerArray backing_;
155 };
156 
157 } // namespace metrics
158 } // namespace sdk
absl::OTABSL_OPTION_NAMESPACE_NAME::variant
Definition: includes/opentelemetry/nostd/variant.h:61
sdk::metrics::AdaptingIntegerArray::Clear
void Clear()
Clears the array, resetting all values to zero.
sdk::metrics::AdaptingCircularBufferCounter
A circle-buffer-backed exponential counter.
Definition: includes/opentelemetry/sdk/metrics/data/circular_buffer.h:86
sdk::metrics::AdaptingIntegerArray
An integer array that automatically expands its memory consumption (via copy/allocation) when reachin...
Definition: includes/opentelemetry/sdk/metrics/data/circular_buffer.h:29
OPENTELEMETRY_BEGIN_NAMESPACE
#define OPENTELEMETRY_BEGIN_NAMESPACE
Definition: includes/opentelemetry/version.h:21
sdk::metrics::AdaptingIntegerArray::Size
size_t Size() const
Returns the size of the array.
sdk::metrics::AdaptingCircularBufferCounter::Empty
bool Empty() const
Returns true if no recordings, false if at least one recording.
Definition: includes/opentelemetry/sdk/metrics/data/circular_buffer.h:116
sdk::metrics::AdaptingIntegerArray::AdaptingIntegerArray
AdaptingIntegerArray(size_t size)
Definition: includes/opentelemetry/sdk/metrics/data/circular_buffer.h:33
OPENTELEMETRY_END_NAMESPACE
#define OPENTELEMETRY_END_NAMESPACE
Definition: includes/opentelemetry/version.h:24
sdk::metrics::AdaptingCircularBufferCounter::operator=
AdaptingCircularBufferCounter & operator=(const AdaptingCircularBufferCounter &other)=default
pydeepstreamdoc::tensor::TensorDoc::size
constexpr const char * size
Definition: service-maker/sources/python/src/bindings/docstrings/tensordoc.h:46
sdk::metrics::AdaptingCircularBufferCounter::EndIndex
int32_t EndIndex() const
The last index with a recording.
Definition: includes/opentelemetry/sdk/metrics/data/circular_buffer.h:111
sdk::metrics::AdaptingIntegerArray::operator=
AdaptingIntegerArray & operator=(const AdaptingIntegerArray &other)=default
min
int min(int a, int b)
Compute the component-wise minimum.
Definition: sources/libs/nvmultiobjecttracker/include/modules/cuDCFv2/helper_math.h:70
std
Extensions to the C++ standard library.
Definition: includes/opentelemetry/nostd/string_view.h:212
sdk::metrics::AdaptingCircularBufferCounter::Clear
void Clear()
Resets all bucket counts to zero and resets index start/end tracking.
sdk::metrics::AdaptingCircularBufferCounter::Increment
bool Increment(int32_t index, uint64_t delta)
Persist new data at index, incrementing by delta amount.
sdk
Definition: includes/opentelemetry/sdk/common/atomic_shared_ptr.h:13
metrics
Definition: includes/opentelemetry/metrics/async_instruments.h:10
sdk::metrics::AdaptingCircularBufferCounter::AdaptingCircularBufferCounter
AdaptingCircularBufferCounter(size_t max_size)
Definition: includes/opentelemetry/sdk/metrics/data/circular_buffer.h:89
sdk::metrics::AdaptingIntegerArray::Increment
void Increment(size_t index, uint64_t count)
Increments the value at the specified index by the given count in the array.
sdk::metrics::AdaptingCircularBufferCounter::MaxSize
size_t MaxSize() const
Returns the maximum number of buckets allowed in this counter.
Definition: includes/opentelemetry/sdk/metrics/data/circular_buffer.h:121
sdk::metrics::AdaptingCircularBufferCounter::StartIndex
int32_t StartIndex() const
The first index with a recording.
Definition: includes/opentelemetry/sdk/metrics/data/circular_buffer.h:102
sdk::metrics::AdaptingCircularBufferCounter::Get
uint64_t Get(int32_t index) const
Get the number of recordings for the given index.
sdk::metrics::AdaptingIntegerArray::Get
uint64_t Get(size_t index) const
Returns the value at the specified index from the array.