Class AdaptingCircularBufferCounter
Defined in File circular_buffer.h
Class Documentation
-
class AdaptingCircularBufferCounter
A circle-buffer-backed exponential counter.
The first recorded value becomes the ‘base_index’. Going backwards leads to start/stop index.
This expand start/end index as it sees values.
This class is NOT thread-safe. It is expected to be behind a synchronized incrementer.
Public Functions
-
inline explicit AdaptingCircularBufferCounter(size_t max_size)
-
AdaptingCircularBufferCounter(const AdaptingCircularBufferCounter &other) = default
-
AdaptingCircularBufferCounter(AdaptingCircularBufferCounter &&other) = default
-
AdaptingCircularBufferCounter &operator=(const AdaptingCircularBufferCounter &other) = default
-
AdaptingCircularBufferCounter &operator=(AdaptingCircularBufferCounter &&other) = default
-
inline int32_t StartIndex() const
The first index with a recording. May be negative.
Note: the returned value is not meaningful when Empty returns true.
- Returns:
the first index with a recording.
-
inline int32_t EndIndex() const
The last index with a recording. May be negative.
Note: the returned value is not meaningful when Empty returns true.
- Returns:
The last index with a recording.
-
inline bool Empty() const
Returns true if no recordings, false if at least one recording.
-
inline size_t MaxSize() const
Returns the maximum number of buckets allowed in this counter.
-
void Clear()
Resets all bucket counts to zero and resets index start/end tracking.
-
bool Increment(int32_t index, uint64_t delta)
Persist new data at index, incrementing by delta amount.
- Parameters:
index – The index of where to perform the incrementation.
delta – How much to increment the index by.
- Returns:
success status.
-
uint64_t Get(int32_t index)
Get the number of recordings for the given index.
- Returns:
the number of recordings for the index, or 0 if the index is out of bounds.
-
inline explicit AdaptingCircularBufferCounter(size_t max_size)