stellar registers packet_manager as a module; session_manager registers polling callback
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user