PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
kcenon::pacs::monitoring::operation_counter Struct Reference

Atomic counter for tracking operation success/failure counts. More...

#include <pacs_metrics.h>

Collaboration diagram for kcenon::pacs::monitoring::operation_counter:
Collaboration graph

Public Member Functions

std::uint64_t total_count () const noexcept
 Get total operation count (success + failure)
 
std::uint64_t average_duration_us () const noexcept
 Get average duration in microseconds (0 if no operations)
 
void record_success (std::chrono::microseconds duration) noexcept
 Record a successful operation with duration.
 
void record_failure (std::chrono::microseconds duration) noexcept
 Record a failed operation with duration.
 
void reset () noexcept
 Reset all counters to zero.
 

Public Attributes

std::atomic< std::uint64_t > success_count {0}
 
std::atomic< std::uint64_t > failure_count {0}
 
std::atomic< std::uint64_t > total_duration_us {0}
 Total duration in microseconds.
 
std::atomic< std::uint64_t > min_duration_us {UINT64_MAX}
 
std::atomic< std::uint64_t > max_duration_us {0}
 

Detailed Description

Atomic counter for tracking operation success/failure counts.

Thread-safe counters for tracking the number of successful and failed operations, along with timing statistics.

Definition at line 95 of file pacs_metrics.h.

Member Function Documentation

◆ average_duration_us()

std::uint64_t kcenon::pacs::monitoring::operation_counter::average_duration_us ( ) const
inlinenodiscardnoexcept

Get average duration in microseconds (0 if no operations)

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/monitoring/pacs_metrics.h.

Definition at line 109 of file pacs_metrics.h.

109 {
110 const auto total = total_count();
111 if (total == 0) {
112 return 0;
113 }
114 return total_duration_us.load(std::memory_order_relaxed) / total;
115 }
std::atomic< std::uint64_t > total_duration_us
Total duration in microseconds.
std::uint64_t total_count() const noexcept
Get total operation count (success + failure)

References total_count(), and total_duration_us.

Here is the call graph for this function:

◆ record_failure()

void kcenon::pacs::monitoring::operation_counter::record_failure ( std::chrono::microseconds duration)
inlinenoexcept

Record a failed operation with duration.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/monitoring/pacs_metrics.h.

Definition at line 140 of file pacs_metrics.h.

140 {
141 failure_count.fetch_add(1, std::memory_order_relaxed);
142 const auto duration_us = static_cast<std::uint64_t>(duration.count());
143 total_duration_us.fetch_add(duration_us, std::memory_order_relaxed);
144
145 // Update min/max with CAS loops
146 auto current_min = min_duration_us.load(std::memory_order_relaxed);
147 while (duration_us < current_min &&
148 !min_duration_us.compare_exchange_weak(current_min, duration_us,
149 std::memory_order_relaxed)) {
150 }
151
152 auto current_max = max_duration_us.load(std::memory_order_relaxed);
153 while (duration_us > current_max &&
154 !max_duration_us.compare_exchange_weak(current_max, duration_us,
155 std::memory_order_relaxed)) {
156 }
157 }
std::atomic< std::uint64_t > max_duration_us
std::atomic< std::uint64_t > failure_count
std::atomic< std::uint64_t > min_duration_us

References failure_count, max_duration_us, min_duration_us, and total_duration_us.

Referenced by kcenon::pacs::monitoring::pacs_metrics::record_echo(), kcenon::pacs::monitoring::pacs_metrics::record_get(), kcenon::pacs::monitoring::pacs_metrics::record_move(), kcenon::pacs::monitoring::pacs_metrics::record_query(), and kcenon::pacs::monitoring::pacs_metrics::record_store().

Here is the caller graph for this function:

◆ record_success()

void kcenon::pacs::monitoring::operation_counter::record_success ( std::chrono::microseconds duration)
inlinenoexcept

Record a successful operation with duration.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/monitoring/pacs_metrics.h.

Definition at line 118 of file pacs_metrics.h.

118 {
119 success_count.fetch_add(1, std::memory_order_relaxed);
120 const auto duration_us = static_cast<std::uint64_t>(duration.count());
121 total_duration_us.fetch_add(duration_us, std::memory_order_relaxed);
122
123 // Update min/max with CAS loops
124 auto current_min = min_duration_us.load(std::memory_order_relaxed);
125 while (duration_us < current_min &&
126 !min_duration_us.compare_exchange_weak(current_min, duration_us,
127 std::memory_order_relaxed)) {
128 // Loop until successful
129 }
130
131 auto current_max = max_duration_us.load(std::memory_order_relaxed);
132 while (duration_us > current_max &&
133 !max_duration_us.compare_exchange_weak(current_max, duration_us,
134 std::memory_order_relaxed)) {
135 // Loop until successful
136 }
137 }
std::atomic< std::uint64_t > success_count

References max_duration_us, min_duration_us, success_count, and total_duration_us.

Referenced by kcenon::pacs::monitoring::pacs_metrics::record_echo(), kcenon::pacs::monitoring::pacs_metrics::record_get(), kcenon::pacs::monitoring::pacs_metrics::record_move(), kcenon::pacs::monitoring::pacs_metrics::record_query(), and kcenon::pacs::monitoring::pacs_metrics::record_store().

Here is the caller graph for this function:

◆ reset()

void kcenon::pacs::monitoring::operation_counter::reset ( )
inlinenoexcept

Reset all counters to zero.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/monitoring/pacs_metrics.h.

Definition at line 160 of file pacs_metrics.h.

160 {
161 success_count.store(0, std::memory_order_relaxed);
162 failure_count.store(0, std::memory_order_relaxed);
163 total_duration_us.store(0, std::memory_order_relaxed);
164 min_duration_us.store(UINT64_MAX, std::memory_order_relaxed);
165 max_duration_us.store(0, std::memory_order_relaxed);
166 }

References failure_count, max_duration_us, min_duration_us, success_count, and total_duration_us.

Referenced by kcenon::pacs::monitoring::pacs_metrics::reset().

Here is the caller graph for this function:

◆ total_count()

std::uint64_t kcenon::pacs::monitoring::operation_counter::total_count ( ) const
inlinenodiscardnoexcept

Get total operation count (success + failure)

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/monitoring/pacs_metrics.h.

Definition at line 103 of file pacs_metrics.h.

103 {
104 return success_count.load(std::memory_order_relaxed) +
105 failure_count.load(std::memory_order_relaxed);
106 }

References failure_count, and success_count.

Referenced by average_duration_us().

Here is the caller graph for this function:

Member Data Documentation

◆ failure_count

std::atomic<std::uint64_t> kcenon::pacs::monitoring::operation_counter::failure_count {0}

◆ max_duration_us

std::atomic<std::uint64_t> kcenon::pacs::monitoring::operation_counter::max_duration_us {0}

◆ min_duration_us

std::atomic<std::uint64_t> kcenon::pacs::monitoring::operation_counter::min_duration_us {UINT64_MAX}

◆ success_count

std::atomic<std::uint64_t> kcenon::pacs::monitoring::operation_counter::success_count {0}

◆ total_duration_us

std::atomic<std::uint64_t> kcenon::pacs::monitoring::operation_counter::total_duration_us {0}

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