Struct ipfs_sqlite_block_store::cache::InMemCacheTracker
source · [−]pub struct InMemCacheTracker<T, F> { /* private fields */ }
Expand description
keep track of block accesses in memory
Implementations
sourceimpl<T, F> InMemCacheTracker<T, F>where
T: Ord + Clone + Debug,
F: Fn(Duration, BlockInfo) -> Option<T>,
impl<T, F> InMemCacheTracker<T, F>where
T: Ord + Clone + Debug,
F: Fn(Duration, BlockInfo) -> Option<T>,
sourcepub fn new(mk_cache_entry: F) -> Self
pub fn new(mk_cache_entry: F) -> Self
mk_cache_entry will be called on each block access to create or update a cache entry. It allows to customize whether we are interested in an entry at all, and what entries we want to be preserved.
E.g. to just sort entries by their access time, use |access, _, _| Some(access)
.
this will keep entries in the cache based on last access time.
It is also possible to use more sophisticated strategies like only caching certain cid types or caching based on the data size.
Trait Implementations
sourceimpl<T, F> CacheTracker for InMemCacheTracker<T, F>where
T: Ord + Clone + Debug + Send + Sync,
F: Fn(Duration, BlockInfo) -> Option<T> + Send + Sync,
impl<T, F> CacheTracker for InMemCacheTracker<T, F>where
T: Ord + Clone + Debug + Send + Sync,
F: Fn(Duration, BlockInfo) -> Option<T> + Send + Sync,
sourcefn blocks_accessed(&self, blocks: Vec<BlockInfo>)
fn blocks_accessed(&self, blocks: Vec<BlockInfo>)
called whenever blocks were accessed
sourcefn blocks_deleted(&self, blocks: Vec<BlockInfo>)
fn blocks_deleted(&self, blocks: Vec<BlockInfo>)
notification that these ids no longer have to be tracked
sourcefn retain_ids(&self, ids: &[i64])
fn retain_ids(&self, ids: &[i64])
notification that only these ids should be retained
sourcefn sort_ids(&self, ids: &mut [i64])
fn sort_ids(&self, ids: &mut [i64])
sort ids by importance. More important ids should go to the end.
sourcefn has_persistent_state(&self) -> bool
fn has_persistent_state(&self) -> bool
indicate whether
retain_ids
should be called on startupsourcefn blocks_written(&self, blocks: Vec<WriteInfo>)
fn blocks_written(&self, blocks: Vec<WriteInfo>)
called whenever blocks were written Read more
Auto Trait Implementations
impl<T, F> !RefUnwindSafe for InMemCacheTracker<T, F>
impl<T, F> Send for InMemCacheTracker<T, F>where
F: Send,
T: Send,
impl<T, F> Sync for InMemCacheTracker<T, F>where
F: Sync,
T: Send,
impl<T, F> Unpin for InMemCacheTracker<T, F>where
F: Unpin,
impl<T, F> !UnwindSafe for InMemCacheTracker<T, F>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more