Skip to main content

Store

Trait Store 

Source
pub trait Store: Send + Sync {
Show 13 methods // Required methods fn put<'life0, 'async_trait>( &'life0 self, hash: Hash, data: Vec<u8>, ) -> Pin<Box<dyn Future<Output = Result<bool, StoreError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn get<'life0, 'life1, 'async_trait>( &'life0 self, hash: &'life1 Hash, ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, StoreError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn has<'life0, 'life1, 'async_trait>( &'life0 self, hash: &'life1 Hash, ) -> Pin<Box<dyn Future<Output = Result<bool, StoreError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn delete<'life0, 'life1, 'async_trait>( &'life0 self, hash: &'life1 Hash, ) -> Pin<Box<dyn Future<Output = Result<bool, StoreError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; // Provided methods fn put_many<'life0, 'async_trait>( &'life0 self, items: Vec<(Hash, Vec<u8>)>, ) -> Pin<Box<dyn Future<Output = Result<usize, StoreError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn set_max_bytes(&self, _max: u64) { ... } fn max_bytes(&self) -> Option<u64> { ... } fn stats<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = StoreStats> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn evict_if_needed<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<u64, StoreError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn pin<'life0, 'life1, 'async_trait>( &'life0 self, _hash: &'life1 Hash, ) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn unpin<'life0, 'life1, 'async_trait>( &'life0 self, _hash: &'life1 Hash, ) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn pin_count(&self, _hash: &Hash) -> u32 { ... } fn is_pinned(&self, hash: &Hash) -> bool { ... }
}
Expand description

Content-addressed key-value store interface

Required Methods§

Source

fn put<'life0, 'async_trait>( &'life0 self, hash: Hash, data: Vec<u8>, ) -> Pin<Box<dyn Future<Output = Result<bool, StoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Store data by its hash Returns true if newly stored, false if already existed

Source

fn get<'life0, 'life1, 'async_trait>( &'life0 self, hash: &'life1 Hash, ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, StoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Retrieve data by hash Returns data or None if not found

Source

fn has<'life0, 'life1, 'async_trait>( &'life0 self, hash: &'life1 Hash, ) -> Pin<Box<dyn Future<Output = Result<bool, StoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Check if hash exists

Source

fn delete<'life0, 'life1, 'async_trait>( &'life0 self, hash: &'life1 Hash, ) -> Pin<Box<dyn Future<Output = Result<bool, StoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Delete by hash Returns true if deleted, false if didn’t exist

Provided Methods§

Source

fn put_many<'life0, 'async_trait>( &'life0 self, items: Vec<(Hash, Vec<u8>)>, ) -> Pin<Box<dyn Future<Output = Result<usize, StoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Store multiple blobs. Returns the number of newly stored items.

Source

fn set_max_bytes(&self, _max: u64)

Set maximum storage size in bytes. 0 = unlimited.

Source

fn max_bytes(&self) -> Option<u64>

Get maximum storage size. None = unlimited.

Source

fn stats<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = StoreStats> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get storage statistics

Source

fn evict_if_needed<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<u64, StoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Evict unpinned items if over storage limit. Returns number of bytes freed.

Source

fn pin<'life0, 'life1, 'async_trait>( &'life0 self, _hash: &'life1 Hash, ) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Pin a hash (increment ref count). Pinned items are not evicted.

Source

fn unpin<'life0, 'life1, 'async_trait>( &'life0 self, _hash: &'life1 Hash, ) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Unpin a hash (decrement ref count). Item can be evicted when count reaches 0.

Source

fn pin_count(&self, _hash: &Hash) -> u32

Get pin count for a hash. 0 = not pinned.

Source

fn is_pinned(&self, hash: &Hash) -> bool

Check if hash is pinned (pin count > 0)

Implementors§