use std::cell::RefCell;
use parking_lot::ReentrantMutex;
use super::*;
#[derive(Debug, Default)]
pub struct Cache(pub ReentrantMutex<RefCell<InnerCache>>);
impl Cache {
#[allow(dead_code, reason = "Public API.")]
pub fn new(path: CachePath) -> Self {
path.into()
}
}
impl From<InnerCache> for Cache {
fn from(value: InnerCache) -> Self {
Self(ReentrantMutex::new(RefCell::new(value)))
}
}
impl From<CachePath> for Cache {
fn from(value: CachePath) -> Self {
Cache::from(InnerCache::from(value))
}
}
impl Cache {
pub fn read(&self, keys: CacheEntryKeys) -> Result<Option<CacheEntryValues>, ReadFromCacheError> {
self.0.lock().borrow_mut().read(keys)
}
pub fn write(&self, entry: NewCacheEntry) -> Result<(), WriteToCacheError> {
self.0.lock().borrow_mut().write(entry)
}
}