#ifndef _SESSION_MANAGER_H #define _SESSION_MANAGER_H #ifdef __cpluscplus extern "C" { #endif #include "session.h" // #define SESSION_LOG_ERROR(format, ...) void(0) #ifndef SESSION_LOG_ERROR #define SESSION_LOG_ERROR(format, ...) \ fprintf(stderr, "ERROR (session), " format "\n", ##__VA_ARGS__); #endif // #define SESSION_LOG_DEBUG(format, ...) void(0) #ifndef SESSION_LOG_DEBUG #define SESSION_LOG_DEBUG(format, ...) \ fprintf(stderr, "DEBUG (session), " format "\n", ##__VA_ARGS__); #endif struct session_manager; struct session_manager *session_manager_create(uint64_t max_session_num); void session_manager_destroy(struct session_manager *mgr); void session_manager_set_timeout_toclosing(struct session_manager *mgr, uint64_t timeout_ms); void session_manager_set_timeout_toclosed(struct session_manager *mgr, uint64_t timeout_ms); struct session *session_manager_lookup(struct session_manager *mgr, const struct packet *pkt); // return null: invalid tuple6 or tcp first packet is not syn struct session *session_manager_update(struct session_manager *mgr, const struct packet *pkt); struct session *session_manager_expire(struct session_manager *mgr); struct session *session_manager_evicte(struct session_manager *mgr); // for debug uint64_t session_manager_get_sessions(struct session_manager *mgr, enum session_type type, enum session_state state); #ifdef __cpluscplus } #endif #endif