Add session timer

This commit is contained in:
luwenpeng
2023-12-12 18:41:53 +08:00
parent 006315fb7c
commit 2d3e182b5a
11 changed files with 612 additions and 234 deletions

View File

@@ -184,11 +184,6 @@ void session_set_last_time(struct session *sess, uint64_t timestamp)
sess->last_time = timestamp;
}
void session_set_expire_time(struct session *sess, uint64_t timestamp)
{
sess->expire_time = timestamp;
}
uint64_t session_get_create_time(struct session *sess)
{
return sess->create_time;
@@ -199,11 +194,6 @@ uint64_t session_get_last_time(struct session *sess)
return sess->last_time;
}
uint64_t session_get_expire_time(struct session *sess)
{
return sess->expire_time;
}
// session event
bool session_push_event(struct session *sess, uint32_t event)
{
@@ -304,3 +294,34 @@ void session_free_ex_data(struct session *sess, uint8_t idx)
sess->ex_data[idx] = NULL;
}
/******************************************************************************
* session expire
******************************************************************************/
// session expire
void session_set_expirecb(struct session *sess, session_expire_cb fn, uint64_t abs_expire_ts)
{
struct timeout *timeout = &sess->timeout;
timeout_init(timeout, TIMEOUT_ABS);
timeout_setcb(timeout, fn, sess);
sess->abs_expire_ts = abs_expire_ts;
}
void session_del_expirecb(struct session *sess)
{
struct timeout *timeout = &sess->timeout;
timeout_init(timeout, 0);
sess->abs_expire_ts = 0;
}
void session_run_expirecb(struct session *sess)
{
struct timeout *timeout = &sess->timeout;
if (timeout->callback.fn)
{
timeout->callback.fn(timeout->callback.arg);
}
}