#ifndef RPROXY_MONITOR_H #define RPROXY_MONITOR_H #include "types.h" extern system_monitor_t monitor; void monitor_init(const char *db_file); void monitor_cleanup(void); void monitor_update(void); vhost_stats_t* monitor_get_or_create_vhost_stats(const char *vhost_name); void monitor_record_request_start(vhost_stats_t *stats, int is_websocket); void monitor_record_request_end(vhost_stats_t *stats, double start_time); void monitor_record_bytes(vhost_stats_t *stats, long long sent, long long recv); void history_deque_init(history_deque_t *dq, int capacity); void history_deque_push(history_deque_t *dq, double time, double value); void network_history_deque_init(network_history_deque_t *dq, int capacity); void network_history_deque_push(network_history_deque_t *dq, double time, double rx, double tx); void disk_history_deque_init(disk_history_deque_t *dq, int capacity); void disk_history_deque_push(disk_history_deque_t *dq, double time, double read_mbps, double write_mbps); void request_time_deque_init(request_time_deque_t *dq, int capacity); void request_time_deque_push(request_time_deque_t *dq, double time_ms); #endif