Skip to main content

Store

Trait Store 

Source
pub trait Store: Send + Sync {
    // 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 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 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§