Monitoring System 0.1.0
System resource monitoring with pluggable collectors and alerting
Loading...
Searching...
No Matches
kcenon::monitoring::cached_value_strategy< T > Class Template Reference

Cached value fallback strategy. More...

#include <error_boundary.h>

Inheritance diagram for kcenon::monitoring::cached_value_strategy< T >:
Inheritance graph
Collaboration diagram for kcenon::monitoring::cached_value_strategy< T >:
Collaboration graph

Public Member Functions

 cached_value_strategy (std::chrono::seconds ttl=std::chrono::seconds(60))
 
void update_cache (const T &value)
 
common::Result< T > get_fallback (const error_info &, degradation_level) override
 
- Public Member Functions inherited from kcenon::monitoring::fallback_strategy_interface< T >
virtual ~fallback_strategy_interface ()=default
 

Private Attributes

std::chrono::seconds ttl_
 
cached_value_
 
std::chrono::steady_clock::time_point cache_time_
 
bool has_value_
 
std::mutex mutex_
 

Detailed Description

template<typename T>
class kcenon::monitoring::cached_value_strategy< T >

Cached value fallback strategy.

Definition at line 138 of file error_boundary.h.

Constructor & Destructor Documentation

◆ cached_value_strategy()

template<typename T >
kcenon::monitoring::cached_value_strategy< T >::cached_value_strategy ( std::chrono::seconds ttl = std::chrono::seconds(60))
inlineexplicit

Definition at line 140 of file error_boundary.h.

Member Function Documentation

◆ get_fallback()

template<typename T >
common::Result< T > kcenon::monitoring::cached_value_strategy< T >::get_fallback ( const error_info & ,
degradation_level  )
inlineoverridevirtual

Implements kcenon::monitoring::fallback_strategy_interface< T >.

Definition at line 150 of file error_boundary.h.

150 {
151 std::lock_guard<std::mutex> lock(mutex_);
152 if (!has_value_) {
153 return common::Result<T>::err(error_info(monitoring_error_code::operation_failed, "No cached value available").to_common_error());
154 }
155
156 auto now = std::chrono::steady_clock::now();
157 auto age = std::chrono::duration_cast<std::chrono::seconds>(now - cache_time_);
158 if (age > ttl_) {
159 return common::Result<T>::err(error_info(monitoring_error_code::operation_failed, "Cached value expired").to_common_error());
160 }
161
162 return common::ok(cached_value_);
163 }
std::chrono::steady_clock::time_point cache_time_

References kcenon::monitoring::cached_value_strategy< T >::cache_time_, kcenon::monitoring::cached_value_strategy< T >::cached_value_, kcenon::monitoring::cached_value_strategy< T >::has_value_, kcenon::monitoring::cached_value_strategy< T >::mutex_, kcenon::monitoring::operation_failed, and kcenon::monitoring::cached_value_strategy< T >::ttl_.

◆ update_cache()

template<typename T >
void kcenon::monitoring::cached_value_strategy< T >::update_cache ( const T & value)
inline

Member Data Documentation

◆ cache_time_

template<typename T >
std::chrono::steady_clock::time_point kcenon::monitoring::cached_value_strategy< T >::cache_time_
private

◆ cached_value_

◆ has_value_

◆ mutex_

◆ ttl_

template<typename T >
std::chrono::seconds kcenon::monitoring::cached_value_strategy< T >::ttl_
private

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