1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use crate::{backend::SessionBackend, session::Session};
use std::sync::Arc;
use tokio::sync::Mutex;
#[derive(Clone)]
pub struct SessionManager<B> {
backend: Arc<Mutex<B>>,
}
impl<B> SessionManager<B>
where
B: SessionBackend,
{
pub fn new(backend: B) -> Self {
Self {
backend: Arc::new(Mutex::new(backend)),
}
}
pub fn get_session<I>(&self, id: I) -> Session<B>
where
I: Into<String>,
{
Session::new(id, self.backend.clone())
}
}