75 lines
2.1 KiB
C++
75 lines
2.1 KiB
C++
#include <netinet/in.h>
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
#include <stddef.h>
|
|
#include <getopt.h>
|
|
#include <gtest/gtest.h>
|
|
#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;
|
|
}
|