pub mod polling;
pub mod pull;
#[derive(Debug, Eq, PartialEq)]
pub enum CacheLookupSuccess<Value> {
Miss(Value),
Refresh(Value),
Stale(Value),
Hit(Value),
}
pub trait CacheHydrationStrategy<Key, Value> {
fn get(&mut self, key: &Key) -> Option<CacheLookupSuccess<Value>>;
fn flush(&mut self);
fn stop_tracking(&mut self, key: &Key);
}
pub enum StoreResult {
Valid,
NotFound,
Invalid,
}
impl<Value> CacheLookupSuccess<Value> {
pub fn new(store_result: StoreResult, hydrated: bool, value: Value) -> Self {
match store_result {
StoreResult::Invalid => {
if hydrated {
CacheLookupSuccess::Refresh(value)
} else {
CacheLookupSuccess::Stale(value)
}
}
StoreResult::NotFound => CacheLookupSuccess::Miss(value),
StoreResult::Valid => CacheLookupSuccess::Hit(value),
}
}
}