Trait noosphere_storage::BlockStore
source · pub trait BlockStore: Clone + BlockStoreSendSync {
fn put_block<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
cid: &'life1 Cid,
block: &'life2 [u8]
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn get_block<'life0, 'life1, 'async_trait>(
&'life0 self,
cid: &'life1 Cid
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>>> + Send + 'async_trait>>
where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn put_links<'life0, 'life1, 'life2, 'async_trait, C>(
&'life0 mut self,
cid: &'life1 Cid,
block: &'life2 [u8]
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where
C: Codec + Default + 'async_trait,
Ipld: References<C>,
Self: Send + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
{ ... }
fn put<'life0, 'async_trait, C, T>(
&'life0 mut self,
data: T
) -> Pin<Box<dyn Future<Output = Result<Cid>> + Send + 'async_trait>>
where
C: Codec + Default + 'async_trait,
T: Encode<C> + BlockStoreSend + 'async_trait,
Ipld: References<C>,
Self: Send + 'async_trait,
'life0: 'async_trait,
{ ... }
fn get<'life0, 'life1, 'async_trait, C, T>(
&'life0 self,
cid: &'life1 Cid
) -> Pin<Box<dyn Future<Output = Result<Option<T>>> + Send + 'async_trait>>
where
C: Codec + Default + 'async_trait,
T: Decode<C> + 'async_trait,
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
{ ... }
fn save<'life0, 'async_trait, C, T>(
&'life0 mut self,
data: T
) -> Pin<Box<dyn Future<Output = Result<Cid>> + Send + 'async_trait>>
where
C: Codec + Default + 'async_trait,
T: Serialize + BlockStoreSend + 'async_trait,
Ipld: Encode<C> + References<C>,
Self: Send + 'async_trait,
'life0: 'async_trait,
{ ... }
fn load<'life0, 'life1, 'async_trait, C, T>(
&'life0 self,
cid: &'life1 Cid
) -> Pin<Box<dyn Future<Output = Result<T>> + Send + 'async_trait>>
where
C: Codec + Default + 'async_trait,
T: DeserializeOwned + BlockStoreSend + 'async_trait,
u64: From<C>,
Ipld: Decode<C>,
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
{ ... }
fn require_block<'life0, 'life1, 'async_trait>(
&'life0 self,
cid: &'life1 Cid
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>
where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
{ ... }
}Expand description
Required Methods§
sourcefn put_block<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
cid: &'life1 Cid,
block: &'life2 [u8]
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn put_block<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
cid: &'life1 Cid,
block: &'life2 [u8]
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Given a block and its Cid, persist the block in storage.
Provided Methods§
sourcefn put_links<'life0, 'life1, 'life2, 'async_trait, C>(
&'life0 mut self,
cid: &'life1 Cid,
block: &'life2 [u8]
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
C: Codec + Default + 'async_trait,
Ipld: References<C>,
Self: Send + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn put_links<'life0, 'life1, 'life2, 'async_trait, C>(
&'life0 mut self,
cid: &'life1 Cid,
block: &'life2 [u8]
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
C: Codec + Default + 'async_trait,
Ipld: References<C>,
Self: Send + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Given a CID and a block, store the links (any Cid that is part of the encoded data) in a suitable location for later retrieval. This method is optional, and its default implementation is a no-op. It should be implemented when possible to enable optimized traversal of a DAG given its root.
sourcefn put<'life0, 'async_trait, C, T>(
&'life0 mut self,
data: T
) -> Pin<Box<dyn Future<Output = Result<Cid>> + Send + 'async_trait>>where
C: Codec + Default + 'async_trait,
T: Encode<C> + BlockStoreSend + 'async_trait,
Ipld: References<C>,
Self: Send + 'async_trait,
'life0: 'async_trait,
fn put<'life0, 'async_trait, C, T>(
&'life0 mut self,
data: T
) -> Pin<Box<dyn Future<Output = Result<Cid>> + Send + 'async_trait>>where
C: Codec + Default + 'async_trait,
T: Encode<C> + BlockStoreSend + 'async_trait,
Ipld: References<C>,
Self: Send + 'async_trait,
'life0: 'async_trait,
sourcefn get<'life0, 'life1, 'async_trait, C, T>(
&'life0 self,
cid: &'life1 Cid
) -> Pin<Box<dyn Future<Output = Result<Option<T>>> + Send + 'async_trait>>where
C: Codec + Default + 'async_trait,
T: Decode<C> + 'async_trait,
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get<'life0, 'life1, 'async_trait, C, T>(
&'life0 self,
cid: &'life1 Cid
) -> Pin<Box<dyn Future<Output = Result<Option<T>>> + Send + 'async_trait>>where
C: Codec + Default + 'async_trait,
T: Decode<C> + 'async_trait,
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
sourcefn save<'life0, 'async_trait, C, T>(
&'life0 mut self,
data: T
) -> Pin<Box<dyn Future<Output = Result<Cid>> + Send + 'async_trait>>where
C: Codec + Default + 'async_trait,
T: Serialize + BlockStoreSend + 'async_trait,
Ipld: Encode<C> + References<C>,
Self: Send + 'async_trait,
'life0: 'async_trait,
fn save<'life0, 'async_trait, C, T>(
&'life0 mut self,
data: T
) -> Pin<Box<dyn Future<Output = Result<Cid>> + Send + 'async_trait>>where
C: Codec + Default + 'async_trait,
T: Serialize + BlockStoreSend + 'async_trait,
Ipld: Encode<C> + References<C>,
Self: Send + 'async_trait,
'life0: 'async_trait,
sourcefn load<'life0, 'life1, 'async_trait, C, T>(
&'life0 self,
cid: &'life1 Cid
) -> Pin<Box<dyn Future<Output = Result<T>> + Send + 'async_trait>>where
C: Codec + Default + 'async_trait,
T: DeserializeOwned + BlockStoreSend + 'async_trait,
u64: From<C>,
Ipld: Decode<C>,
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn load<'life0, 'life1, 'async_trait, C, T>(
&'life0 self,
cid: &'life1 Cid
) -> Pin<Box<dyn Future<Output = Result<T>> + Send + 'async_trait>>where
C: Codec + Default + 'async_trait,
T: DeserializeOwned + BlockStoreSend + 'async_trait,
u64: From<C>,
Ipld: Decode<C>,
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
sourcefn require_block<'life0, 'life1, 'async_trait>(
&'life0 self,
cid: &'life1 Cid
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn require_block<'life0, 'life1, 'async_trait>(
&'life0 self,
cid: &'life1 Cid
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Same as load, but returns an error if no block is found locally for the given Cid