Add session manager

This commit is contained in:
luwenpeng
2023-12-13 19:20:34 +08:00
parent 1aecef82d6
commit 5620ac211b
8 changed files with 320 additions and 32 deletions

View File

@@ -300,13 +300,15 @@ void session_free_ex_data(struct session *sess, uint8_t idx)
******************************************************************************/
// session expire
void session_set_expirecb(struct session *sess, session_expire_cb fn, uint64_t abs_expire_ts)
void session_set_expirecb(struct session *sess, session_expire_cb expire_cb, void *expire_arg, uint64_t expire_abs_ts)
{
struct timeout *timeout = &sess->timeout;
timeout_init(timeout, TIMEOUT_ABS);
timeout_setcb(timeout, fn, sess);
sess->abs_expire_ts = abs_expire_ts;
timeout_setcb(timeout, NULL, sess);
sess->expire_cb = expire_cb;
sess->expire_arg = expire_arg;
sess->expire_abs_ts = expire_abs_ts;
}
void session_del_expirecb(struct session *sess)
@@ -314,14 +316,15 @@ void session_del_expirecb(struct session *sess)
struct timeout *timeout = &sess->timeout;
timeout_init(timeout, 0);
sess->abs_expire_ts = 0;
sess->expire_cb = NULL;
sess->expire_arg = NULL;
sess->expire_abs_ts = 0;
}
void session_run_expirecb(struct session *sess)
{
struct timeout *timeout = &sess->timeout;
if (timeout->callback.fn)
if (sess->expire_cb)
{
timeout->callback.fn(timeout->callback.arg);
sess->expire_cb(sess, sess->expire_arg);
}
}