#pragma once #ifdef __cplusplus extern "C" { #endif #include "stellar/mq.h" #include "stellar/log.h" #define PACKET_MANAGER_MODULE_NAME "packet_manager_module" #define SESSION_MANAGER_MODULE_NAME "session_manager_module" struct stellar_module; struct stellar_module *stellar_module_new(const char *name, void *ctx); void stellar_module_free(struct stellar_module *mod); void * stellar_module_get_ctx(struct stellar_module *mod); void stellar_module_set_ctx(struct stellar_module *mod, void *ctx); const char *stellar_module_get_name(struct stellar_module* mod); void stellar_module_set_name(struct stellar_module* mod, const char *name); struct stellar_module_manager; typedef struct stellar_module *module_on_init_func(struct stellar_module_manager *mod_mgr); typedef void module_on_exit_func(struct stellar_module_manager *mod_mgr, struct stellar_module *mod); struct stellar_module_manager *stellar_module_manager_new(const char *module_spec_toml_path, int max_thread_num, struct mq_schema *mq_schema, struct logger *logger); void stellar_module_manager_free(struct stellar_module_manager *mod_mgr); void stellar_module_manager_register_thread(struct stellar_module_manager* mod_mgr, int thread_id, struct mq_runtime *mq_rt); // return -1 on error int stellar_module_manager_get_thread_id(struct stellar_module_manager* mod_mgr); struct mq_runtime *stellar_module_manager_get_mq_runtime(struct stellar_module_manager *mod_mgr); struct stellar_module *stellar_module_manager_get_module(struct stellar_module_manager *mod_mgr, const char *module_name); int stellar_module_manager_get_max_thread_num(struct stellar_module_manager* mod_mgr); const char *stellar_module_manager_get_toml_path(struct stellar_module_manager *mod_mgr); struct mq_schema *stellar_module_manager_get_mq_schema(struct stellar_module_manager *mod_mgr); struct logger *stellar_module_manager_get_logger(struct stellar_module_manager *mod_mgr); #ifdef __cplusplus } #endif