#pragma once #ifdef __cplusplus extern "C" { #endif #include "packet_io.h" #include "ip_reassembly.h" #include "session_manager.h" struct thread_stat { struct packet_io_stat *pkt_io; struct ip_reassembly_stat *ip_reass; struct session_manager_stat *sess_mgr; }; struct stellar_stat_config { uint16_t nr_worker_thread; // range [1, MAX_THREAD_NUM] uint64_t merge_interval_ms; // range: [0, 60000] (ms) uint64_t output_interval_ms; // range: [0, 60000] (ms) }; struct stellar_stat_config *stellar_stat_config_new(const char *toml_file); void stellar_stat_config_free(struct stellar_stat_config *cfg); void stellar_stat_config_print(const struct stellar_stat_config *cfg); struct stellar_stat; struct stellar_stat *stellar_stat_new(const struct stellar_stat_config *cfg, uint64_t now_ms); void stellar_stat_free(struct stellar_stat *stat); void stellar_stat_output(struct stellar_stat *stat, uint64_t now_ms); void stellar_stat_merge(struct stellar_stat *stat, const struct thread_stat *thr_stat, uint16_t thr_idx, uint64_t now_ms); void stellar_stat_print(struct stellar_stat *stat, const struct thread_stat *thr_stat, uint16_t thr_idx); #ifdef __cplusplus } #endif