1use std::{error::Error, future::Future};
2
3#[cfg_attr(nightly, doc(cfg(feature = "fs-backend")))]
5#[cfg(feature = "fs-backend")]
6pub mod fs;
7
8#[cfg_attr(nightly, doc(cfg(feature = "redis-backend")))]
10#[cfg(feature = "redis-backend")]
11pub mod redis;
12
13pub trait SessionBackend {
15 type Error: Error + Send + Sync + 'static;
17
18 fn get_sessions(&mut self) -> impl Future<Output = Result<Vec<String>, Self::Error>> + Send;
20
21 fn get_session_age(&mut self, session_id: &str) -> impl Future<Output = Result<Option<u64>, Self::Error>> + Send;
29
30 fn remove_session(&mut self, session_id: &str) -> impl Future<Output = Result<(), Self::Error>> + Send;
36
37 fn read_value(
42 &mut self,
43 session_id: &str,
44 key: &str,
45 ) -> impl Future<Output = Result<Option<Vec<u8>>, Self::Error>> + Send;
46
47 fn write_value(
55 &mut self,
56 session_id: &str,
57 key: &str,
58 value: &[u8],
59 ) -> impl Future<Output = Result<(), Self::Error>> + Send;
60
61 fn remove_value(&mut self, session_id: &str, key: &str) -> impl Future<Output = Result<(), Self::Error>> + Send;
66}