pub struct CachedBackend<B: Backend> { /* private fields */ }Expand description
Chunked LRU read cache over any backend.
Reads are served chunk-by-chunk from an in-memory map; misses fetch a batched run of chunks from the inner backend (see the module doc). Concurrent misses on the same chunk may fetch it twice (both results are identical; one wins the cache slot) — correctness is unaffected.
Implementations§
Source§impl<B: Backend> CachedBackend<B>
impl<B: Backend> CachedBackend<B>
Sourcepub fn with_capacity(inner: B, chunk_size: usize, max_bytes: usize) -> Self
pub fn with_capacity(inner: B, chunk_size: usize, max_bytes: usize) -> Self
Wraps inner with an explicit chunk size and total byte capacity.
§Panics
Panics if chunk_size is zero.
Sourcepub fn on_fetch(self, fetch: impl Fn(u64, u64) + Send + Sync + 'static) -> Self
pub fn on_fetch(self, fetch: impl Fn(u64, u64) + Send + Sync + 'static) -> Self
Registers a fetch observer: fetch(offset, len) is called after
every inner read a cache miss triggers, with the byte offset and
length actually fetched. Cache hits never call it. The callback runs
on the async runtime, so it must not block.
Trait Implementations§
Source§impl<B: Backend> Backend for CachedBackend<B>
impl<B: Backend> Backend for CachedBackend<B>
Auto Trait Implementations§
impl<B> !Freeze for CachedBackend<B>
impl<B> !RefUnwindSafe for CachedBackend<B>
impl<B> !UnwindSafe for CachedBackend<B>
impl<B> Send for CachedBackend<B>
impl<B> Sync for CachedBackend<B>
impl<B> Unpin for CachedBackend<B>where
B: Unpin,
impl<B> UnsafeUnpin for CachedBackend<B>where
B: UnsafeUnpin,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more