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

Statistics for lock-free queue operations. More...

#include <lockfree_queue.h>

Collaboration diagram for kcenon::monitoring::lockfree_queue_statistics:
Collaboration graph

Public Member Functions

 lockfree_queue_statistics ()=default
 
 lockfree_queue_statistics (const lockfree_queue_statistics &other)
 
double get_push_success_rate () const
 Get push success rate.
 
double get_pop_success_rate () const
 Get pop success rate.
 
void reset ()
 Reset all statistics.
 

Public Attributes

std::atomic< size_t > push_attempts {0}
 
std::atomic< size_t > push_successes {0}
 
std::atomic< size_t > push_failures {0}
 
std::atomic< size_t > pop_attempts {0}
 
std::atomic< size_t > pop_successes {0}
 
std::atomic< size_t > pop_failures {0}
 

Detailed Description

Statistics for lock-free queue operations.

Definition at line 57 of file lockfree_queue.h.

Constructor & Destructor Documentation

◆ lockfree_queue_statistics() [1/2]

kcenon::monitoring::lockfree_queue_statistics::lockfree_queue_statistics ( )
default

◆ lockfree_queue_statistics() [2/2]

kcenon::monitoring::lockfree_queue_statistics::lockfree_queue_statistics ( const lockfree_queue_statistics & other)
inline

Definition at line 66 of file lockfree_queue.h.

67 : push_attempts(other.push_attempts.load())
68 , push_successes(other.push_successes.load())
69 , push_failures(other.push_failures.load())
70 , pop_attempts(other.pop_attempts.load())
71 , pop_successes(other.pop_successes.load())
72 , pop_failures(other.pop_failures.load()) {}

Member Function Documentation

◆ get_pop_success_rate()

double kcenon::monitoring::lockfree_queue_statistics::get_pop_success_rate ( ) const
inline

Get pop success rate.

Returns
Success rate between 0.0 and 100.0

Definition at line 90 of file lockfree_queue.h.

90 {
91 auto attempts = pop_attempts.load();
92 if (attempts == 0) {
93 return 100.0;
94 }
95 return (static_cast<double>(pop_successes.load()) / static_cast<double>(attempts)) * 100.0;
96 }

References pop_attempts, and pop_successes.

◆ get_push_success_rate()

double kcenon::monitoring::lockfree_queue_statistics::get_push_success_rate ( ) const
inline

Get push success rate.

Returns
Success rate between 0.0 and 100.0

Definition at line 78 of file lockfree_queue.h.

78 {
79 auto attempts = push_attempts.load();
80 if (attempts == 0) {
81 return 100.0;
82 }
83 return (static_cast<double>(push_successes.load()) / static_cast<double>(attempts)) * 100.0;
84 }

References push_attempts, and push_successes.

◆ reset()

void kcenon::monitoring::lockfree_queue_statistics::reset ( )
inline

Reset all statistics.

Definition at line 101 of file lockfree_queue.h.

101 {
102 push_attempts.store(0);
103 push_successes.store(0);
104 push_failures.store(0);
105 pop_attempts.store(0);
106 pop_successes.store(0);
107 pop_failures.store(0);
108 }

References pop_attempts, pop_failures, pop_successes, push_attempts, push_failures, and push_successes.

Referenced by kcenon::monitoring::lockfree_queue< T >::reset_statistics().

Here is the caller graph for this function:

Member Data Documentation

◆ pop_attempts

std::atomic<size_t> kcenon::monitoring::lockfree_queue_statistics::pop_attempts {0}

Definition at line 61 of file lockfree_queue.h.

61{0};

Referenced by get_pop_success_rate(), kcenon::monitoring::lockfree_queue< T >::pop(), and reset().

◆ pop_failures

std::atomic<size_t> kcenon::monitoring::lockfree_queue_statistics::pop_failures {0}

Definition at line 63 of file lockfree_queue.h.

63{0};

Referenced by kcenon::monitoring::lockfree_queue< T >::pop(), and reset().

◆ pop_successes

std::atomic<size_t> kcenon::monitoring::lockfree_queue_statistics::pop_successes {0}

Definition at line 62 of file lockfree_queue.h.

62{0};

Referenced by get_pop_success_rate(), kcenon::monitoring::lockfree_queue< T >::pop(), and reset().

◆ push_attempts

std::atomic<size_t> kcenon::monitoring::lockfree_queue_statistics::push_attempts {0}

◆ push_failures

std::atomic<size_t> kcenon::monitoring::lockfree_queue_statistics::push_failures {0}

Definition at line 60 of file lockfree_queue.h.

60{0};

Referenced by kcenon::monitoring::lockfree_queue< T >::push_impl(), and reset().

◆ push_successes

std::atomic<size_t> kcenon::monitoring::lockfree_queue_statistics::push_successes {0}

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