Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
database::monitoring::query_timer Class Reference

RAII timer for measuring query execution time. More...

#include <performance_monitor.h>

Collaboration diagram for database::monitoring::query_timer:
Collaboration graph

Public Member Functions

 query_timer (const std::string &query, database_types db_type, std::shared_ptr< performance_monitor > monitor)
 Constructor with explicit performance_monitor (recommended)
 
 ~query_timer ()
 
void set_rows_affected (size_t rows)
 
void set_error (const std::string &error)
 

Private Attributes

query_metrics metrics_
 
std::chrono::steady_clock::time_point start_time_
 
std::shared_ptr< performance_monitormonitor_
 

Detailed Description

RAII timer for measuring query execution time.

Definition at line 169 of file performance_monitor.h.

Constructor & Destructor Documentation

◆ query_timer()

database::monitoring::query_timer::query_timer ( const std::string & query,
database_types db_type,
std::shared_ptr< performance_monitor > monitor )

Constructor with explicit performance_monitor (recommended)

Parameters
queryQuery string
db_typeDatabase type
monitorPerformance monitor instance
Since
Sprint 3 (Task 3.2)

Definition at line 24 of file performance_monitor.cpp.

26 : start_time_(std::chrono::steady_clock::now())
27 , monitor_(std::move(monitor))
28 {
29 metrics_.query_hash = std::to_string(std::hash<std::string>{}(query));
31 metrics_.db_type = db_type;
32 metrics_.success = true; // Assume success unless error is set
33 }
std::shared_ptr< performance_monitor > monitor_
std::chrono::steady_clock::time_point start_time_
std::chrono::steady_clock::time_point start_time

References database::monitoring::query_metrics::db_type, metrics_, database::monitoring::query_metrics::query_hash, database::monitoring::query_metrics::start_time, start_time_, and database::monitoring::query_metrics::success.

◆ ~query_timer()

database::monitoring::query_timer::~query_timer ( )

Definition at line 36 of file performance_monitor.cpp.

37 {
38 metrics_.end_time = std::chrono::steady_clock::now();
39 metrics_.execution_time = std::chrono::duration_cast<std::chrono::microseconds>(
41
42 // Use injected monitor if available
43 if (monitor_) {
44 monitor_->record_query_metrics(metrics_);
45 }
46 // Note: If monitor is not injected, metrics are not recorded.
47 // Always use query_timer with a performance_monitor instance.
48 }
std::chrono::steady_clock::time_point end_time
std::chrono::microseconds execution_time

References database::monitoring::query_metrics::end_time, database::monitoring::query_metrics::execution_time, metrics_, monitor_, and database::monitoring::query_metrics::start_time.

Member Function Documentation

◆ set_error()

void database::monitoring::query_timer::set_error ( const std::string & error)

Definition at line 50 of file performance_monitor.cpp.

51 {
52 metrics_.success = false;
54 }
VoidResult error(const std::string &msg, int code=-1)

References database::monitoring::query_metrics::error_message, metrics_, and database::monitoring::query_metrics::success.

Referenced by TEST_F().

Here is the caller graph for this function:

◆ set_rows_affected()

void database::monitoring::query_timer::set_rows_affected ( size_t rows)
inline

Definition at line 185 of file performance_monitor.h.

References metrics_, and database::monitoring::query_metrics::rows_affected.

Referenced by TEST_F().

Here is the caller graph for this function:

Member Data Documentation

◆ metrics_

query_metrics database::monitoring::query_timer::metrics_
private

Definition at line 189 of file performance_monitor.h.

Referenced by query_timer(), set_error(), set_rows_affected(), and ~query_timer().

◆ monitor_

std::shared_ptr<performance_monitor> database::monitoring::query_timer::monitor_
private

Definition at line 191 of file performance_monitor.h.

Referenced by ~query_timer().

◆ start_time_

std::chrono::steady_clock::time_point database::monitoring::query_timer::start_time_
private

Definition at line 190 of file performance_monitor.h.

Referenced by query_timer().


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