refactor: change session key from address list to six tuple
This commit is contained in:
@@ -28,12 +28,12 @@ struct session_manager
|
||||
* private API
|
||||
******************************************************************************/
|
||||
|
||||
static void session_manager_handle_new_session(struct session_manager *mgr, struct session *sess, const struct packet *pkt, struct session_address *addr)
|
||||
static void session_manager_handle_new_session(struct session_manager *mgr, struct session_key *key, struct session *sess, const struct packet *pkt)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
static void session_manager_handle_old_session(struct session_manager *mgr, struct session *sess, const struct packet *pkt, struct session_address *addr)
|
||||
static void session_manager_handle_old_session(struct session_manager *mgr, struct session_key *key, struct session *sess, const struct packet *pkt)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
@@ -95,7 +95,7 @@ static void handshake_expire_cb(struct session *sess, void *arg)
|
||||
assert(mgr != NULL);
|
||||
|
||||
session_set_state(sess, SESSION_STATE_DISCARD);
|
||||
session_push_event(sess, SESSION_EVENT_DISCARD);
|
||||
session_push_event(sess, SESSION_EVENT_CLOSING);
|
||||
session_manager_enqueue_ready_session(mgr, sess);
|
||||
}
|
||||
|
||||
@@ -168,24 +168,12 @@ void session_manager_set_session_eventcb(struct session_manager *mgr, session_ev
|
||||
mgr->arg = arg;
|
||||
}
|
||||
|
||||
struct session *session_manager_find_session_by_id(struct session_manager *mgr, uint64_t id)
|
||||
struct session *session_manager_find_sessions(struct session_manager *mgr, const struct packet *pkt)
|
||||
{
|
||||
struct session *sess = session_table_find_session_by_id(mgr->sess_table, id);
|
||||
if (sess)
|
||||
{
|
||||
session_set_last_time(sess, timestamp_get_msec());
|
||||
// TODO
|
||||
}
|
||||
struct session_key key;
|
||||
// TODO packet to key
|
||||
|
||||
return sess;
|
||||
}
|
||||
|
||||
struct session *session_manager_find_session_by_packet(struct session_manager *mgr, const struct packet *pkt)
|
||||
{
|
||||
struct session_address addr;
|
||||
session_address_init(&addr, pkt);
|
||||
|
||||
struct session *sess = session_table_find_session_by_addr(mgr->sess_table, &addr);
|
||||
struct session *sess = session_table_find_session(mgr->sess_table, &key);
|
||||
if (sess == NULL)
|
||||
{
|
||||
if (session_pool_get_count(mgr->sess_pool) == 1)
|
||||
@@ -193,18 +181,18 @@ struct session *session_manager_find_session_by_packet(struct session_manager *m
|
||||
struct session *oldest_sess = session_table_find_oldest_session(mgr->sess_table);
|
||||
assert(oldest_sess == NULL);
|
||||
session_set_state(oldest_sess, SESSION_STATE_DISCARD);
|
||||
session_push_event(oldest_sess, SESSION_EVENT_DISCARD);
|
||||
session_push_event(oldest_sess, SESSION_EVENT_CLOSING);
|
||||
session_manager_enqueue_ready_session(mgr, oldest_sess);
|
||||
}
|
||||
|
||||
sess = session_pool_alloc(mgr->sess_pool);
|
||||
assert(sess != NULL);
|
||||
|
||||
session_manager_handle_new_session(mgr, sess, pkt, &addr);
|
||||
session_manager_handle_new_session(mgr, &key, sess, pkt);
|
||||
}
|
||||
else
|
||||
{
|
||||
session_manager_handle_old_session(mgr, sess, pkt, &addr);
|
||||
session_manager_handle_old_session(mgr, &key, sess, pkt);
|
||||
}
|
||||
|
||||
return sess;
|
||||
|
||||
Reference in New Issue
Block a user