diff options
| author | luwenpeng <[email protected]> | 2024-10-09 10:01:20 +0800 |
|---|---|---|
| committer | luwenpeng <[email protected]> | 2024-10-09 10:02:42 +0800 |
| commit | 0f082d975ec067e268d868b0855083caaeff9522 (patch) | |
| tree | 7bcecc3aa50aa0a2941361797bdedbdf6e0af9a4 /infra/packet_manager | |
| parent | d9d9b4728dbb9b8c4aaef17a41067eb173744cb9 (diff) | |
stellar registers packet_manager as a module; session_manager registers polling callback
Diffstat (limited to 'infra/packet_manager')
| -rw-r--r-- | infra/packet_manager/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | infra/packet_manager/packet_manager.c | 59 |
2 files changed, 56 insertions, 5 deletions
diff --git a/infra/packet_manager/CMakeLists.txt b/infra/packet_manager/CMakeLists.txt index 24cae44..9b9c132 100644 --- a/infra/packet_manager/CMakeLists.txt +++ b/infra/packet_manager/CMakeLists.txt @@ -11,6 +11,6 @@ target_include_directories(packet_manager PUBLIC ${CMAKE_SOURCE_DIR}/deps/uthash target_include_directories(packet_manager PUBLIC ${CMAKE_SOURCE_DIR}/deps/logger) target_include_directories(packet_manager PUBLIC ${CMAKE_SOURCE_DIR}/include) target_include_directories(packet_manager PUBLIC ${CMAKE_SOURCE_DIR}/infra) -target_link_libraries(packet_manager tuple logger dablooms mq exdata) +target_link_libraries(packet_manager tuple logger dablooms mq exdata module_manager) add_subdirectory(test)
\ No newline at end of file diff --git a/infra/packet_manager/packet_manager.c b/infra/packet_manager/packet_manager.c index 2c422d3..d9e5305 100644 --- a/infra/packet_manager/packet_manager.c +++ b/infra/packet_manager/packet_manager.c @@ -1,7 +1,9 @@ #include <assert.h> -#include "utils.h" #include "stellar/mq.h" +#include "stellar/module_manager.h" + +#include "utils.h" #include "packet_internal.h" #include "packet_manager_internal.h" @@ -272,11 +274,14 @@ void packet_manager_free(struct packet_manager *pkt_mgr) { if (pkt_mgr) { - for (uint16_t i = 0; i < pkt_mgr->cfg->nr_worker_thread; i++) + if (pkt_mgr->cfg) { - if (pkt_mgr->runtime[i]) + for (uint16_t i = 0; i < pkt_mgr->cfg->nr_worker_thread; i++) { - packet_manager_runtime_free(pkt_mgr->runtime[i]); + if (pkt_mgr->runtime[i]) + { + packet_manager_runtime_free(pkt_mgr->runtime[i]); + } } } @@ -300,6 +305,9 @@ int packet_manager_subscribe(struct packet_manager *pkt_mgr, enum packet_stage s void packet_manager_init(struct packet_manager *pkt_mgr, uint16_t thread_id, struct mq_runtime *mq_rt) { + assert(pkt_mgr); + assert(thread_id < pkt_mgr->cfg->nr_worker_thread); + assert(mq_rt); struct packet_manager_runtime *runtime = pkt_mgr->runtime[thread_id]; runtime->mq = mq_rt; @@ -432,3 +440,46 @@ void packet_manager_print_stat(struct packet_manager *pkt_mgr, uint16_t thread_i runtime->stat.queue[i].pkts_schedule); } } + +/****************************************************************************** + * packet manager module + ******************************************************************************/ + +struct stellar_module *packet_manager_on_init(struct stellar_module_manager *mod_mgr) +{ + assert(mod_mgr); + struct mq_schema *mq_schema = stellar_module_manager_get_mq_schema(mod_mgr); + assert(mq_schema); + const char *toml_file = stellar_module_manager_get_toml_path(mod_mgr); + assert(toml_file); + + struct packet_manager *pkt_mgr = packet_manager_new(mq_schema, toml_file); + if (pkt_mgr == NULL) + { + return NULL; + } + + struct stellar_module *pkt_mgr_mod = stellar_module_new(PACKET_MANAGER_MODULE_NAME, NULL); + if (pkt_mgr_mod == NULL) + { + PACKET_MANAGER_LOG_ERROR("failed to create packet_manager"); + packet_manager_free(pkt_mgr); + return NULL; + } + stellar_module_set_ctx(pkt_mgr_mod, pkt_mgr); + + PACKET_MANAGER_LOG_INFO("packet_manager initialized"); + return pkt_mgr_mod; +} + +void packet_manager_on_exit(struct stellar_module_manager *mod_mgr __attribute__((unused)), struct stellar_module *mod) +{ + if (mod) + { + struct packet_manager *pkt_mgr = stellar_module_get_ctx(mod); + + packet_manager_free(pkt_mgr); + stellar_module_free(mod); + PACKET_MANAGER_LOG_INFO("packet_manager exited"); + } +}
\ No newline at end of file |
