stellar registers packet_manager as a module; session_manager registers polling callback

This commit is contained in:
luwenpeng
2024-10-09 10:01:20 +08:00
parent d9d9b4728d
commit 0f082d975e
16 changed files with 208 additions and 141 deletions

View File

@@ -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");
}
}