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

Degradable service wrapper. More...

#include <graceful_degradation.h>

Collaboration diagram for kcenon::monitoring::degradable_service< T >:
Collaboration graph

Public Types

using normal_operation = std::function<common::Result<T>()>
 
using degraded_operation = std::function<common::Result<T>(degradation_level)>
 

Public Member Functions

 degradable_service (const std::string &name, std::shared_ptr< graceful_degradation_manager > manager, normal_operation normal_op, degraded_operation degraded_op)
 
common::Result< T > execute ()
 Execute the service operation.
 
const std::string & get_name () const
 Get service name.
 

Private Attributes

std::string name_
 
std::shared_ptr< graceful_degradation_managermanager_
 
normal_operation normal_op_
 
degraded_operation degraded_op_
 

Detailed Description

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

Degradable service wrapper.

Wraps a service with degradation support.

Definition at line 344 of file graceful_degradation.h.

Member Typedef Documentation

◆ degraded_operation

template<typename T >
using kcenon::monitoring::degradable_service< T >::degraded_operation = std::function<common::Result<T>(degradation_level)>

Definition at line 347 of file graceful_degradation.h.

◆ normal_operation

template<typename T >
using kcenon::monitoring::degradable_service< T >::normal_operation = std::function<common::Result<T>()>

Definition at line 346 of file graceful_degradation.h.

Constructor & Destructor Documentation

◆ degradable_service()

template<typename T >
kcenon::monitoring::degradable_service< T >::degradable_service ( const std::string & name,
std::shared_ptr< graceful_degradation_manager > manager,
normal_operation normal_op,
degraded_operation degraded_op )
inline

Definition at line 349 of file graceful_degradation.h.

353 : name_(name)
354 , manager_(std::move(manager))
355 , normal_op_(std::move(normal_op))
356 , degraded_op_(std::move(degraded_op)) {}
std::shared_ptr< graceful_degradation_manager > manager_

Member Function Documentation

◆ execute()

template<typename T >
common::Result< T > kcenon::monitoring::degradable_service< T >::execute ( )
inline

Execute the service operation.

Definition at line 361 of file graceful_degradation.h.

361 {
362 if (!manager_) {
363 return normal_op_();
364 }
365
366 auto level = manager_->get_service_level(name_);
367 if (level == degradation_level::normal) {
368 return normal_op_();
369 }
370
371 if (degraded_op_) {
372 return degraded_op_(level);
373 }
374
375 return common::Result<T>::err(error_info(monitoring_error_code::service_degraded, "Service is degraded and no fallback available").to_common_error());
376 }

References kcenon::monitoring::degradable_service< T >::degraded_op_, kcenon::monitoring::degradable_service< T >::manager_, kcenon::monitoring::degradable_service< T >::name_, kcenon::monitoring::normal, kcenon::monitoring::degradable_service< T >::normal_op_, and kcenon::monitoring::service_degraded.

◆ get_name()

template<typename T >
const std::string & kcenon::monitoring::degradable_service< T >::get_name ( ) const
inline

Get service name.

Definition at line 381 of file graceful_degradation.h.

381 {
382 return name_;
383 }

References kcenon::monitoring::degradable_service< T >::name_.

Member Data Documentation

◆ degraded_op_

template<typename T >
degraded_operation kcenon::monitoring::degradable_service< T >::degraded_op_
private

◆ manager_

template<typename T >
std::shared_ptr<graceful_degradation_manager> kcenon::monitoring::degradable_service< T >::manager_
private

◆ name_

◆ normal_op_

template<typename T >
normal_operation kcenon::monitoring::degradable_service< T >::normal_op_
private

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