#include #include #include #include #include #include #include #include #include #include "monitor/monitor_private.h" #include "stellar/packet.h" #include "stellar/stellar.h" /* main function to drives the stellar library to run, using a delay plugin to increase the running time */ static int sleep_per_packet_ms = 0; static int sleep_before_run_ms = 0; static void delay_packet_cb(struct packet *pkt, enum packet_stage stage, void *plugin_env) { (void)stage; (void)pkt; (void)plugin_env; if (sleep_per_packet_ms) { fprintf(stderr, "packet dump, sleep %d ms....\n", sleep_per_packet_ms); usleep(1000 * sleep_per_packet_ms); } } int main(int argc, char const *argv[]) { if (argc > 1) { if (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0) { fprintf(stderr, "Usage: %s [sleep_before_run_ms] [sleep_per_packet_ms]\n", argv[0]); exit(0); } sleep_before_run_ms = atoi(argv[1]); if (argc >= 3) { sleep_per_packet_ms = atoi(argv[2]); } } struct stellar *st = stellar_new("./conf/stellar.toml"); assert(st); if (NULL == st) { fprintf(stderr, "stellar_new error!\n"); exit(1); } struct stellar_monitor *stm = stellar_monitor_get(); struct module *packet_mgr_mod = module_manager_get_module(stm->mod_mgr_ref, PACKET_MANAGER_MODULE_NAME); struct packet_manager *pkt_mgr = module_to_packet_manager(packet_mgr_mod); int ret = packet_manager_subscribe(pkt_mgr, PACKET_STAGE_INPUT, delay_packet_cb, stm); if (ret < 0) { fprintf(stderr, "packet_manager_subscribe error!\n"); exit(1); } if (sleep_before_run_ms) { fprintf(stderr, "%s, sleep %d ms before run....\n", argv[0], sleep_before_run_ms); usleep(1000 * sleep_before_run_ms); } fprintf(stderr, "%s starting...\r\n", argv[0]); stellar_run(st); stellar_free(st); return 0; }