Class ClientMetrics

Nested Relationships

Nested Types

Class Documentation

class ClientMetrics

Public Functions

ClientMetrics() = default
explicit ClientMetrics(client_metric_io_type io_type, client_metric_flush_type flush_type = client_metric_flush_type::file, int flush_interval = 5)
~ClientMetrics()
void add_event(size_t size, std::chrono::time_point<std::chrono::system_clock> start)
void reset_metrics()
void flush_msgpack()
void flush_loop()
void enable()
void disable()
void zmq_connect(const std::string &ip_port)
bool zmq_is_connected()
const std::string &path() const
void path(const std::string &path, const std::string prefix = "")
int flush_count() const

Private Members

bool metrics_enabled_ = {false}
msgpack_data msgpack_data_ = {}
std::chrono::time_point<std::chrono::system_clock> init_t_
std::mutex data_mtx_ = {}
std::thread flush_thread_ = {}
std::condition_variable flush_thread_cv_ = {}
std::mutex flush_thread_cv_mutex_ = {}
std::atomic<bool> flush_thread_running_ = {false}
client_metric_flush_type flush_type_ = {client_metric_flush_type::file}
int flush_interval_ = {}
std::unique_ptr<zmq::context_t> zmq_flush_context_ = nullptr
std::unique_ptr<zmq::socket_t> zmq_flush_socket_ = nullptr
std::string flush_path_ = {}
int flush_count_ = {0}
struct msgpack_data

Public Functions

template<class T>
inline void pack(T &pack)
inline std::vector<uint8_t> pack_msgpack()

Public Members

uint32_t flush_t_
std::string hostname_
int pid_
std::string io_type_
std::vector<uint32_t> start_t_ = {}
std::vector<uint32_t> end_t_ = {}
std::vector<uint32_t> req_size_ = {}
uint32_t total_bytes_ = {}
int total_iops_ = {0}