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

Transaction containing multiple operations. More...

#include <data_consistency.h>

Collaboration diagram for kcenon::monitoring::transaction:
Collaboration graph

Public Member Functions

 transaction (const std::string &id, const transaction_config &config)
 
std::string id () const
 
transaction_state state () const
 
size_t operation_count () const
 
bool add_operation (std::unique_ptr< transaction_operation > op)
 
bool commit ()
 
bool abort ()
 
std::chrono::steady_clock::time_point creation_time () const
 

Private Attributes

std::string id_
 
transaction_config config_
 
transaction_state state_
 
std::chrono::steady_clock::time_point creation_time_
 
std::vector< std::unique_ptr< transaction_operation > > operations_
 

Detailed Description

Transaction containing multiple operations.

Definition at line 166 of file data_consistency.h.

Constructor & Destructor Documentation

◆ transaction()

kcenon::monitoring::transaction::transaction ( const std::string & id,
const transaction_config & config )
inline

Definition at line 168 of file data_consistency.h.

169 : id_(id)
170 , config_(config)
172 , creation_time_(std::chrono::steady_clock::now()) {}
std::chrono::steady_clock::time_point creation_time_

Member Function Documentation

◆ abort()

bool kcenon::monitoring::transaction::abort ( )
inline

Definition at line 218 of file data_consistency.h.

218 {
220 return false;
221 }
223 return true;
224 }

References kcenon::monitoring::aborted, kcenon::monitoring::active, and state_.

Referenced by commit(), and TEST_F().

Here is the caller graph for this function:

◆ add_operation()

bool kcenon::monitoring::transaction::add_operation ( std::unique_ptr< transaction_operation > op)
inline

Definition at line 178 of file data_consistency.h.

178 {
180 return false;
181 }
182 operations_.push_back(std::move(op));
183 return true;
184 }
std::vector< std::unique_ptr< transaction_operation > > operations_

References kcenon::monitoring::active, operations_, and state_.

Referenced by TEST_F(), TEST_F(), TEST_F(), and TEST_F().

Here is the caller graph for this function:

◆ commit()

bool kcenon::monitoring::transaction::commit ( )
inline

Definition at line 186 of file data_consistency.h.

186 {
188 return false;
189 }
190
191 // Check for timeout
192 auto now = std::chrono::steady_clock::now();
193 auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(now - creation_time_);
194 if (elapsed > config_.timeout) {
195 abort();
196 return false;
197 }
198
199 // Execute all operations
200 size_t executed_count = 0;
201 for (auto& op : operations_) {
202 auto result = op->execute();
203 if (!result.is_ok()) {
204 // Rollback executed operations in reverse order
205 for (size_t i = executed_count; i > 0; --i) {
206 operations_[i - 1]->rollback();
207 }
209 return false;
210 }
211 ++executed_count;
212 }
213
215 return true;
216 }

References abort(), kcenon::monitoring::aborted, kcenon::monitoring::active, kcenon::monitoring::committed, config_, creation_time_, operations_, state_, and kcenon::monitoring::transaction_config::timeout.

Referenced by TEST_F(), TEST_F(), and TEST_F().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ creation_time()

std::chrono::steady_clock::time_point kcenon::monitoring::transaction::creation_time ( ) const
inline

Definition at line 226 of file data_consistency.h.

226 {
227 return creation_time_;
228 }

References creation_time_.

◆ id()

std::string kcenon::monitoring::transaction::id ( ) const
inline

Definition at line 174 of file data_consistency.h.

174{ return id_; }

References id_.

◆ operation_count()

size_t kcenon::monitoring::transaction::operation_count ( ) const
inline

Definition at line 176 of file data_consistency.h.

176{ return operations_.size(); }

References operations_.

Referenced by TEST_F().

Here is the caller graph for this function:

◆ state()

transaction_state kcenon::monitoring::transaction::state ( ) const
inline

Definition at line 175 of file data_consistency.h.

175{ return state_; }

References state_.

Referenced by TEST_F(), TEST_F(), TEST_F(), and TEST_F().

Here is the caller graph for this function:

Member Data Documentation

◆ config_

transaction_config kcenon::monitoring::transaction::config_
private

Definition at line 232 of file data_consistency.h.

Referenced by commit().

◆ creation_time_

std::chrono::steady_clock::time_point kcenon::monitoring::transaction::creation_time_
private

Definition at line 234 of file data_consistency.h.

Referenced by commit(), and creation_time().

◆ id_

std::string kcenon::monitoring::transaction::id_
private

Definition at line 231 of file data_consistency.h.

Referenced by id().

◆ operations_

std::vector<std::unique_ptr<transaction_operation> > kcenon::monitoring::transaction::operations_
private

Definition at line 235 of file data_consistency.h.

Referenced by add_operation(), commit(), and operation_count().

◆ state_

transaction_state kcenon::monitoring::transaction::state_
private

Definition at line 233 of file data_consistency.h.

Referenced by abort(), add_operation(), commit(), and state().


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