use fxhash::FxHashSet;
use sacp::schema::SessionId;
use std::sync::Mutex;
pub struct ResearchState {
active_research_session_ids: Mutex<FxHashSet<SessionId>>,
}
impl ResearchState {
pub fn new() -> Self {
Self {
active_research_session_ids: Mutex::new(FxHashSet::default()),
}
}
pub fn register_session(&self, session_id: &SessionId) {
let mut sessions = self.active_research_session_ids.lock().unwrap();
sessions.insert(session_id.clone());
}
pub fn is_research_session(&self, session_id: &SessionId) -> bool {
let sessions = self.active_research_session_ids.lock().unwrap();
sessions.contains(session_id)
}
pub fn unregister_session(&self, session_id: &SessionId) {
let mut sessions = self.active_research_session_ids.lock().unwrap();
sessions.remove(session_id);
}
}