summaryrefslogtreecommitdiff
path: root/infra/session_manager
diff options
context:
space:
mode:
author杨威 <[email protected]>2024-10-11 06:08:50 +0000
committer杨威 <[email protected]>2024-10-11 06:08:50 +0000
commit70d21f28c36fc93280352c9284de6529afcbe5be (patch)
tree4bfc3669ca0da512ceb897167feda65dcaefa1af /infra/session_manager
parent2e35a795285499e064b91435ad90777f90419f68 (diff)
Rebase dev 2.0
Diffstat (limited to 'infra/session_manager')
-rw-r--r--infra/session_manager/session_manager.c21
-rw-r--r--infra/session_manager/session_manager_runtime.c10
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);