Monitoring System 0.1.0
System resource monitoring with pluggable collectors and alerting
Loading...
Searching...
No Matches
kcenon::monitoring::compact_metric_value Struct Reference

Memory-efficient metric value storage. More...

#include <metric_types.h>

Collaboration diagram for kcenon::monitoring::compact_metric_value:
Collaboration graph

Public Types

using value_type
 

Public Member Functions

 compact_metric_value () noexcept
 
 compact_metric_value (const metric_metadata &meta, double val) noexcept
 
 compact_metric_value (const metric_metadata &meta, int64_t val) noexcept
 
 compact_metric_value (const metric_metadata &meta, std::string val) noexcept
 
double as_double () const
 Get value as double.
 
int64_t as_int64 () const
 Get value as integer.
 
std::string as_string () const
 Get value as string.
 
std::chrono::system_clock::time_point get_timestamp () const
 Get timestamp as time_point.
 
bool is_numeric () const noexcept
 Check if metric is numeric.
 
size_t memory_footprint () const noexcept
 Get memory footprint in bytes.
 

Public Attributes

metric_metadata metadata
 
value_type value
 
uint64_t timestamp_us
 

Detailed Description

Memory-efficient metric value storage.

Examples
custom_metric_types_example.cpp.

Definition at line 95 of file metric_types.h.

Member Typedef Documentation

◆ value_type

Initial value:
std::variant<
double,
int64_t,
std::string
>

Definition at line 96 of file metric_types.h.

Constructor & Destructor Documentation

◆ compact_metric_value() [1/4]

kcenon::monitoring::compact_metric_value::compact_metric_value ( )
inlinenoexcept

◆ compact_metric_value() [2/4]

kcenon::monitoring::compact_metric_value::compact_metric_value ( const metric_metadata & meta,
double val )
inlinenoexcept

Definition at line 109 of file metric_types.h.

110 : metadata(meta), value(val) {
111 timestamp_us = std::chrono::duration_cast<std::chrono::microseconds>(
112 std::chrono::system_clock::now().time_since_epoch()).count();
113 }

References timestamp_us.

◆ compact_metric_value() [3/4]

kcenon::monitoring::compact_metric_value::compact_metric_value ( const metric_metadata & meta,
int64_t val )
inlinenoexcept

Definition at line 115 of file metric_types.h.

116 : metadata(meta), value(val) {
117 timestamp_us = std::chrono::duration_cast<std::chrono::microseconds>(
118 std::chrono::system_clock::now().time_since_epoch()).count();
119 }

References timestamp_us.

◆ compact_metric_value() [4/4]

kcenon::monitoring::compact_metric_value::compact_metric_value ( const metric_metadata & meta,
std::string val )
inlinenoexcept

Definition at line 121 of file metric_types.h.

122 : metadata(meta), value(std::move(val)) {
123 timestamp_us = std::chrono::duration_cast<std::chrono::microseconds>(
124 std::chrono::system_clock::now().time_since_epoch()).count();
125 }

References timestamp_us.

Member Function Documentation

◆ as_double()

double kcenon::monitoring::compact_metric_value::as_double ( ) const
inline

Get value as double.

Definition at line 130 of file metric_types.h.

130 {
131 if (std::holds_alternative<double>(value)) {
132 return std::get<double>(value);
133 } else if (std::holds_alternative<int64_t>(value)) {
134 return static_cast<double>(std::get<int64_t>(value));
135 }
136 return 0.0;
137 }

References value.

Referenced by demonstrate_metric_metadata(), and TEST_F().

Here is the caller graph for this function:

◆ as_int64()

int64_t kcenon::monitoring::compact_metric_value::as_int64 ( ) const
inline

Get value as integer.

Definition at line 142 of file metric_types.h.

142 {
143 if (std::holds_alternative<int64_t>(value)) {
144 return std::get<int64_t>(value);
145 } else if (std::holds_alternative<double>(value)) {
146 return static_cast<int64_t>(std::get<double>(value));
147 }
148 return 0;
149 }

References value.

Referenced by TEST_F().

Here is the caller graph for this function:

◆ as_string()

std::string kcenon::monitoring::compact_metric_value::as_string ( ) const
inline

Get value as string.

Definition at line 154 of file metric_types.h.

154 {
155 if (std::holds_alternative<std::string>(value)) {
156 return std::get<std::string>(value);
157 } else if (std::holds_alternative<double>(value)) {
158 return std::to_string(std::get<double>(value));
159 } else if (std::holds_alternative<int64_t>(value)) {
160 return std::to_string(std::get<int64_t>(value));
161 }
162 return "";
163 }

References value.

Referenced by TEST_F().

Here is the caller graph for this function:

◆ get_timestamp()

std::chrono::system_clock::time_point kcenon::monitoring::compact_metric_value::get_timestamp ( ) const
inline

Get timestamp as time_point.

Definition at line 168 of file metric_types.h.

168 {
169 return std::chrono::system_clock::time_point(
170 std::chrono::microseconds(timestamp_us));
171 }

References timestamp_us.

◆ is_numeric()

bool kcenon::monitoring::compact_metric_value::is_numeric ( ) const
inlinenoexcept

Check if metric is numeric.

Definition at line 176 of file metric_types.h.

176 {
177 return std::holds_alternative<double>(value) ||
178 std::holds_alternative<int64_t>(value);
179 }

References value.

Referenced by TEST_F().

Here is the caller graph for this function:

◆ memory_footprint()

size_t kcenon::monitoring::compact_metric_value::memory_footprint ( ) const
inlinenoexcept

Get memory footprint in bytes.

Definition at line 184 of file metric_types.h.

184 {
185 size_t base_size = sizeof(metric_metadata) + sizeof(timestamp_us) + sizeof(value_type);
186 if (std::holds_alternative<std::string>(value)) {
187 base_size += std::get<std::string>(value).capacity();
188 }
189 return base_size;
190 }
std::variant< double, int64_t, std::string > value_type

References timestamp_us, and value.

Referenced by demonstrate_metric_metadata().

Here is the caller graph for this function:

Member Data Documentation

◆ metadata

metric_metadata kcenon::monitoring::compact_metric_value::metadata

Definition at line 102 of file metric_types.h.

◆ timestamp_us

uint64_t kcenon::monitoring::compact_metric_value::timestamp_us

◆ value

value_type kcenon::monitoring::compact_metric_value::value

Definition at line 103 of file metric_types.h.

Referenced by as_double(), as_int64(), as_string(), is_numeric(), and memory_footprint().


The documentation for this struct was generated from the following file: