diff options
| author | 杨威 <[email protected]> | 2024-10-11 06:08:50 +0000 |
|---|---|---|
| committer | 杨威 <[email protected]> | 2024-10-11 06:08:50 +0000 |
| commit | 70d21f28c36fc93280352c9284de6529afcbe5be (patch) | |
| tree | 4bfc3669ca0da512ceb897167feda65dcaefa1af /infra/session_manager | |
| parent | 2e35a795285499e064b91435ad90777f90419f68 (diff) | |
Rebase dev 2.0
Diffstat (limited to 'infra/session_manager')
| -rw-r--r-- | infra/session_manager/session_manager.c | 21 | ||||
| -rw-r--r-- | infra/session_manager/session_manager_runtime.c | 10 |
2 files changed, 25 insertions, 6 deletions
diff --git a/infra/session_manager/session_manager.c b/infra/session_manager/session_manager.c index a2b2fd7..5f3820f 100644 --- a/infra/session_manager/session_manager.c +++ b/infra/session_manager/session_manager.c @@ -11,9 +11,12 @@ #include "session_internal.h" #include "session_manager_runtime.h" +#define SESSION_MANAGER_MODULE_NAME "session_manager_module" + #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-function" + struct session_manager_schema { struct exdata_schema *exdata; @@ -162,14 +165,11 @@ static void clean_session(struct session_manager_runtime *sess_mgr_rt, uint64_t #define MAX_CLEANED_SESS 1024 struct session *sess = NULL; struct session *cleaned_sess[MAX_CLEANED_SESS] = {NULL}; - struct exdata_runtime *exdata_rt = NULL; uint64_t used = session_manager_runtime_clean_session(sess_mgr_rt, now_ms, cleaned_sess, MAX_CLEANED_SESS); for (uint64_t j = 0; j < used; j++) { sess = cleaned_sess[j]; - exdata_rt = (struct exdata_runtime *)session_get_user_data(sess); - exdata_runtime_free(exdata_rt); session_manager_runtime_free_session(sess_mgr_rt, sess); } } @@ -421,12 +421,21 @@ int session_manager_subscribe_tcp_stream(struct session_manager *sess_mgr, on_tc * session manager module ******************************************************************************/ +struct session_manager *stellar_module_get_session_manager(struct stellar_module_manager *mod_mgr) +{ + assert(mod_mgr); + struct stellar_module *sess_mgr_mod = stellar_module_manager_get_module(mod_mgr, SESSION_MANAGER_MODULE_NAME); + if (sess_mgr_mod == NULL) + { + return NULL; + } + return stellar_module_get_ctx(sess_mgr_mod); +} + struct stellar_module *session_manager_on_init(struct stellar_module_manager *mod_mgr) { assert(mod_mgr); - struct stellar_module *pkt_mgr_mod = stellar_module_manager_get_module(mod_mgr, PACKET_MANAGER_MODULE_NAME); - assert(pkt_mgr_mod); - struct packet_manager *pkt_mgr = stellar_module_get_ctx(pkt_mgr_mod); + struct packet_manager *pkt_mgr = stellar_module_get_packet_manager(mod_mgr); assert(pkt_mgr); struct stellar_polling_manager *poll_mgr = stellar_module_get_polling_manager(mod_mgr); assert(poll_mgr); diff --git a/infra/session_manager/session_manager_runtime.c b/infra/session_manager/session_manager_runtime.c index f89176c..efb9e42 100644 --- a/infra/session_manager/session_manager_runtime.c +++ b/infra/session_manager/session_manager_runtime.c @@ -14,6 +14,12 @@ #include "session_transition.h" #include "session_manager_runtime.h" +#include "stellar/exdata.h" + +#define SESSION_MANAGER_RUNTIME_LOG_ERROR(format, ...) STELLAR_LOG_ERROR(__thread_local_logger, "session manager runtime", format, ##__VA_ARGS__) +#define SESSION_MANAGER_RUNTIME_LOG_DEBUG(format, ...) STELLAR_LOG_DEBUG(__thread_local_logger, "session manager runtime", format, ##__VA_ARGS__) +#define SESSION_MANAGER_RUNTIME_LOG_INFO(format, ...) STELLAR_LOG_INFO(__thread_local_logger, "session manager runtime", format, ##__VA_ARGS__) + struct snowflake { uint64_t seed; @@ -1060,6 +1066,10 @@ void session_manager_runtime_free_session(struct session_manager_runtime *sess_m { if (sess) { + struct exdata_runtime *exdata_rt = (struct exdata_runtime *)session_get_user_data(sess); + exdata_runtime_free(exdata_rt); + + SESSION_MANAGER_RUNTIME_LOG_DEBUG("session %lu closed (%s)", session_get_id(sess), closing_reason_to_str(session_get_closing_reason(sess))); SESSION_MANAGER_LOG_DEBUG("session %lu closed (%s)", session_get_id(sess), closing_reason_to_str(session_get_closing_reason(sess))); session_timer_del(sess_mgr_rt->sess_timer, sess); |
