Skip to main content

fast_cache/storage/embedded_store_shared/
session.rs

1use super::*;
2
3impl<const SHARDS: usize> SharedEmbeddedStore<SHARDS> {
4    /// Returns a borrowed session value guard.
5    #[inline(always)]
6    pub fn get_session(&self, session_prefix: &[u8], key: &[u8]) -> Option<Ref<'_>> {
7        let route = self.route_session(session_prefix);
8        let key_hash = hash_key(key);
9        let guard = self.stripe(route.shard_id).read();
10        let value = guard.get_session_ref_hashed_shared_no_ttl(session_prefix, key_hash, key)?
11            as *const [u8];
12        Some(Ref {
13            guard,
14            value,
15            _not_send: PhantomData,
16        })
17    }
18
19    /// Inserts or replaces a session-scoped value without a TTL.
20    #[inline(always)]
21    pub fn set_session(&self, session_prefix: &[u8], key: &[u8], value: &[u8]) {
22        let route = self.route_session(session_prefix);
23        let key_hash = hash_key(key);
24        self.stripe(route.shard_id)
25            .write()
26            .set_session_slice_hashed_no_ttl(session_prefix, key_hash, key, value);
27    }
28}