From 90a6936fd627e2f63a26e7161012723a5063392d Mon Sep 17 00:00:00 2001 From: luwenpeng Date: Fri, 15 Dec 2023 11:20:05 +0800 Subject: [PATCH] session support get/set current packet --- src/session/session.cpp | 38 +++++++++++++++++++++++++++++++++ src/session/session.h | 20 ++++++++++++++++- src/session/session_manager.cpp | 2 +- src/session/session_private.h | 8 +++++++ 4 files changed, 66 insertions(+), 2 deletions(-) diff --git a/src/session/session.cpp b/src/session/session.cpp index 6102005..baa4721 100644 --- a/src/session/session.cpp +++ b/src/session/session.cpp @@ -294,11 +294,19 @@ void session_set_s2c_1st_md(struct session *sess, struct metadata *md) struct metadata *session_get0_c2s_1st_md(struct session *sess) { + if (sess->c2s_1st_md.len == 0) + { + return NULL; + } return &sess->c2s_1st_md; } struct metadata *session_get0_s2c_1st_md(struct session *sess) { + if (sess->s2c_1st_md.len == 0) + { + return NULL; + } return &sess->s2c_1st_md; } @@ -323,6 +331,36 @@ uint64_t session_get_last_time(struct session *sess) return sess->last_time; } +/****************************************************************************** + * session current packet + ******************************************************************************/ + +// session current packet +void session_set0_cur_pkt(struct session *sess, const struct packet *pkt) +{ + sess->cur_pkt = pkt; +} + +struct packet *session_get0_cur_pkt(struct session *sess) +{ + return sess->cur_pkt; +} + +// session current dir +void session_set_cur_dir(struct session *sess, enum session_dir dir) +{ + sess->cur_dir = dir; +} + +enum session_dir session_get_cur_dir(struct session *sess) +{ + return sess->cur_dir; +} + +/****************************************************************************** + * session event + ******************************************************************************/ + // session event bool session_push_event(struct session *sess, uint32_t event) { diff --git a/src/session/session.h b/src/session/session.h index 1b5a2cf..f390128 100644 --- a/src/session/session.h +++ b/src/session/session.h @@ -64,9 +64,16 @@ struct session_key uint64_t security_zone; }; +enum session_dir +{ + SESSION_DIR_C2S = 0, + SESSION_DIR_S2C = 1, +}; + struct metadata { char data[64]; // TODO + int len; }; struct session; @@ -121,7 +128,18 @@ void session_set_create_time(struct session *sess, uint64_t timestamp); void session_set_last_time(struct session *sess, uint64_t timestamp); uint64_t session_get_create_time(struct session *sess); uint64_t session_get_last_time(struct session *sess); -uint64_t session_get_expire_time(struct session *sess); + +/****************************************************************************** + * session current packet + ******************************************************************************/ + +// session current packet +void session_set0_cur_pkt(struct session *sess, const struct packet *pkt); +struct packet *session_get0_cur_pkt(struct session *sess); + +// session current dir +void session_set_cur_dir(struct session *sess, enum session_dir dir); +enum session_dir session_get_cur_dir(struct session *sess); /****************************************************************************** * session event diff --git a/src/session/session_manager.cpp b/src/session/session_manager.cpp index 38027f2..03f51a4 100644 --- a/src/session/session_manager.cpp +++ b/src/session/session_manager.cpp @@ -168,7 +168,7 @@ void session_manager_set_session_eventcb(struct session_manager *mgr, session_ev mgr->arg = arg; } -struct session *session_manager_find_sessions(struct session_manager *mgr, const struct packet *pkt) +struct session *session_manager_find_session(struct session_manager *mgr, const struct packet *pkt) { struct session_key key; // TODO packet to key diff --git a/src/session/session_private.h b/src/session/session_private.h index e1922cf..4662a32 100644 --- a/src/session/session_private.h +++ b/src/session/session_private.h @@ -49,6 +49,14 @@ struct session uint64_t create_time; uint64_t last_time; + /****************************** + * Session Current Packet + ******************************/ + + // session current packet + struct packet *cur_pkt; + enum session_dir cur_dir; + /****************************** * Session Ev Queue Zone ******************************/