Session manager add builtin ex data

This commit is contained in:
luwenpeng
2023-12-22 14:45:31 +08:00
parent fa4cc898d8
commit 2aeb699359
10 changed files with 220 additions and 129 deletions

View File

@@ -20,6 +20,10 @@ struct ex_manager
static struct ex_manager g_ex_manager = {0};
uint8_t tcp_builtin_ex = 0; // built-in ex_data index
uint8_t udp_builtin_ex = 0; // built-in ex_data index
uint8_t c2s_1st_md_ex = 0; // built-in ex_data index
uint8_t s2c_1st_md_ex = 0; // built-in ex_data index
uint8_t c2s_1st_pkt_ex = 0; // built-in ex_data index
uint8_t s2c_1st_pkt_ex = 0; // built-in ex_data index
/******************************************************************************
* ev queue
@@ -164,35 +168,6 @@ uint64_t session_get_s2c_packets(const struct session *sess)
return sess->s2c_packets;
}
// session metadata
void session_set_c2s_1st_md(struct session *sess, struct metadata *md)
{
memcpy(&sess->c2s_1st_md, md, sizeof(struct metadata));
}
void session_set_s2c_1st_md(struct session *sess, struct metadata *md)
{
memcpy(&sess->s2c_1st_md, md, sizeof(struct metadata));
}
const struct metadata *session_get0_c2s_1st_md(const struct session *sess)
{
if (sess->c2s_1st_md.len == 0)
{
return NULL;
}
return &sess->c2s_1st_md;
}
const struct metadata *session_get0_s2c_1st_md(const struct session *sess)
{
if (sess->s2c_1st_md.len == 0)
{
return NULL;
}
return &sess->s2c_1st_md;
}
// session timestamp
void session_set_create_time(struct session *sess, uint64_t timestamp)
{
@@ -337,6 +312,7 @@ void session_free_ex_data(struct session *sess, uint8_t idx)
}
struct ex_schema *schema = &g_ex_manager.schemas[idx];
printf("free ex_data, idx: %d, key: %s, val: %p\n", idx, schema->key, sess->ex_data[idx]);
if (schema->free_cb != NULL && sess->ex_data[idx] != NULL)
{
schema->free_cb(sess, idx, sess->ex_data[idx], schema->args);
@@ -459,8 +435,8 @@ const char *session_event_tostring(enum session_event event)
return "none";
case SESSION_EVENT_OPENING:
return "opening";
case SESSION_EVENT_ACTIVE:
return "active";
case SESSION_EVENT_PACKET:
return "packet";
case SESSION_EVENT_CLOSING:
return "closing";
default:
@@ -478,8 +454,6 @@ const char *session_state_tostring(enum session_state state)
return "opening";
case SESSION_STATE_ACTIVE:
return "active";
case SESSION_STATE_DISCARD:
return "discard";
case SESSION_STATE_CLOSING:
return "closing";
case SESSION_STATE_CLOSED:
@@ -535,8 +509,6 @@ void session_dump(struct session *sess)
printf("session c2s bytes : %" PRIu64 "\n", session_get_c2s_bytes(sess));
printf("session s2c packets : %" PRIu64 "\n", session_get_s2c_packets(sess));
printf("session s2c bytes : %" PRIu64 "\n", session_get_s2c_bytes(sess));
printf("session c2s 1st metadata : %p\n", (void *)session_get0_c2s_1st_md(sess));
printf("session s2c 1st metadata : %p\n", (void *)session_get0_s2c_1st_md(sess));
printf("session create time : %" PRIu64 "\n", session_get_create_time(sess));
printf("session last time : %" PRIu64 "\n", session_get_last_time(sess));
printf("session current packet ptr : %p\n", (void *)session_get0_cur_pkt(sess));