Common System 0.2.0
Common interfaces and patterns for system integration
Loading...
Searching...
No Matches
kcenon::common::interfaces::scoped_timer Class Reference

RAII helper for automatic timing measurements. More...

#include <metric_collector_interface.h>

Collaboration diagram for kcenon::common::interfaces::scoped_timer:
Collaboration graph

Public Member Functions

 scoped_timer (IMetricCollector &collector, std::string_view name, metric_labels labels={})
 Construct a scoped timer.
 
 ~scoped_timer ()
 Destructor reports elapsed time to the collector.
 
 scoped_timer (const scoped_timer &)=delete
 
scoped_timeroperator= (const scoped_timer &)=delete
 
 scoped_timer (scoped_timer &&)=delete
 
scoped_timeroperator= (scoped_timer &&)=delete
 
std::chrono::nanoseconds elapsed () const
 Get elapsed time since timer started.
 

Private Attributes

IMetricCollectorcollector_
 
std::string name_
 
metric_labels labels_
 
std::chrono::steady_clock::time_point start_
 

Detailed Description

RAII helper for automatic timing measurements.

Measures elapsed time from construction to destruction and reports it to the metric collector. Useful for timing function execution, request handling, or any scoped operations.

Example usage:

void process_request() {
scoped_timer timer(*collector, "request_processing_time",
{{"handler", "user_api"}});
// ... do work ...
} // Timer automatically reports duration on scope exit
RAII helper for automatic timing measurements.
Note
This class is non-copyable and non-movable to prevent accidental double-reporting.

Definition at line 157 of file metric_collector_interface.h.

Constructor & Destructor Documentation

◆ scoped_timer() [1/3]

kcenon::common::interfaces::scoped_timer::scoped_timer ( IMetricCollector & collector,
std::string_view name,
metric_labels labels = {} )
inline

Construct a scoped timer.

Parameters
collectorReference to the metric collector
nameMetric name for the timing measurement
labelsOptional dimensional labels

Definition at line 165 of file metric_collector_interface.h.

167 {})
168 : collector_(collector)
169 , name_(name)
170 , labels_(std::move(labels))
171 , start_(std::chrono::steady_clock::now()) {}
std::chrono::steady_clock::time_point start_

◆ ~scoped_timer()

kcenon::common::interfaces::scoped_timer::~scoped_timer ( )
inline

Destructor reports elapsed time to the collector.

Definition at line 176 of file metric_collector_interface.h.

176 {
177 auto elapsed = std::chrono::steady_clock::now() - start_;
179 name_,
180 std::chrono::duration_cast<std::chrono::nanoseconds>(elapsed),
181 labels_);
182 }
virtual void timing(std::string_view name, std::chrono::nanoseconds duration, const metric_labels &labels={})=0
Record a timing measurement.
std::chrono::nanoseconds elapsed() const
Get elapsed time since timer started.

References collector_, elapsed(), labels_, name_, start_, and kcenon::common::interfaces::IMetricCollector::timing().

Here is the call graph for this function:

◆ scoped_timer() [2/3]

kcenon::common::interfaces::scoped_timer::scoped_timer ( const scoped_timer & )
delete

◆ scoped_timer() [3/3]

kcenon::common::interfaces::scoped_timer::scoped_timer ( scoped_timer && )
delete

Member Function Documentation

◆ elapsed()

std::chrono::nanoseconds kcenon::common::interfaces::scoped_timer::elapsed ( ) const
inlinenodiscard

Get elapsed time since timer started.

Returns
Duration since construction

Definition at line 194 of file metric_collector_interface.h.

194 {
195 return std::chrono::duration_cast<std::chrono::nanoseconds>(
196 std::chrono::steady_clock::now() - start_);
197 }

References start_.

Referenced by ~scoped_timer().

Here is the caller graph for this function:

◆ operator=() [1/2]

scoped_timer & kcenon::common::interfaces::scoped_timer::operator= ( const scoped_timer & )
delete

◆ operator=() [2/2]

scoped_timer & kcenon::common::interfaces::scoped_timer::operator= ( scoped_timer && )
delete

Member Data Documentation

◆ collector_

IMetricCollector& kcenon::common::interfaces::scoped_timer::collector_
private

Definition at line 200 of file metric_collector_interface.h.

Referenced by ~scoped_timer().

◆ labels_

metric_labels kcenon::common::interfaces::scoped_timer::labels_
private

Definition at line 202 of file metric_collector_interface.h.

Referenced by ~scoped_timer().

◆ name_

std::string kcenon::common::interfaces::scoped_timer::name_
private

Definition at line 201 of file metric_collector_interface.h.

Referenced by ~scoped_timer().

◆ start_

std::chrono::steady_clock::time_point kcenon::common::interfaces::scoped_timer::start_
private

Definition at line 203 of file metric_collector_interface.h.

Referenced by elapsed(), and ~scoped_timer().


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