use std::sync::Arc; use dashmap::{mapref::one::Ref, DashMap}; use super::Session; #[derive(Default)] pub struct SessionManager { session_map: DashMap>, } impl SessionManager { pub fn add(&self, session: Arc) { self.session_map .insert(session.get_global_session_id(), session); } pub fn get(&self, gateway_id: u32, session_id: u32) -> Option>> { self.session_map .get(&Session::global_id(gateway_id, session_id)) } pub fn remove(&self, gateway_id: u32, session_id: u32) -> Option> { self.session_map .remove(&Session::global_id(gateway_id, session_id)) .map(|kv| kv.1) } }