#pragma once #ifdef __cplusplus extern "C" { #endif #include "stellar/packet_manager.h" struct packet_manager *packet_manager_new(struct mq_schema *mq_schema, const char *toml_file); void packet_manager_free(struct packet_manager *pkt_mgr); void packet_manager_runtime_init(struct packet_manager_runtime *pkt_mgr_rt, struct mq_runtime *mq_rt); void packet_manager_runtime_input(struct packet_manager_runtime *pkt_mgr_rt, struct packet *pkt); struct packet *packet_manager_runtime_output(struct packet_manager_runtime *pkt_mgr_rt); void packet_manager_runtime_dispatch(struct packet_manager_runtime *pkt_mgr_rt); /****************************************************************************** * for gtest ******************************************************************************/ #define QUEUE_NUM_MAX (PACKET_STAGE_MAX + 1) // the last queue is for egress struct packet_manager_runtime_stat { uint64_t input_pkts; uint64_t output_pkts; uint64_t claim_pkts; uint64_t schedule_pkts; uint64_t queue_len[QUEUE_NUM_MAX]; }; const char *packet_stage_to_str(enum packet_stage stage); void packet_manager_runtime_print_stat(struct packet_manager_runtime *runtime); struct packet_manager_runtime_stat *packet_manager_runtime_get_stat(struct packet_manager_runtime *runtime); #ifdef __cplusplus } #endif