Skip to main content

ExactSlotStorage

Trait ExactSlotStorage 

Source
pub trait ExactSlotStorage: Send + Sync {
    // Required methods
    fn provider_binding<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<ResolvedProviderBinding, CloudHomeError>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;
    fn allocate_slot<'life0, 'life1, 'async_trait>(
        &'life0 self,
        logical_key: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = Result<ObjectSlot, CloudHomeError>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             Self: 'async_trait;
    fn create_at<'life0, 'life1, 'life2, 'life3, 'async_trait>(
        &'life0 self,
        slot: &'life1 ObjectSlot,
        body: BlobBody,
        progress: &'life2 (dyn Fn(u64) + Sync + Send + 'life3),
    ) -> Pin<Box<dyn Future<Output = Result<(), CloudHomeError>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             'life3: 'async_trait,
             Self: 'async_trait;
    fn read_at<'life0, 'life1, 'async_trait>(
        &'life0 self,
        slot: &'life1 ObjectSlot,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, CloudHomeError>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             Self: 'async_trait;
    fn read_range_at<'life0, 'life1, 'async_trait>(
        &'life0 self,
        slot: &'life1 ObjectSlot,
        start: u64,
        end: u64,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, CloudHomeError>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             Self: 'async_trait;
    fn read_at_to_file<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        slot: &'life1 ObjectSlot,
        destination: &'life2 Path,
    ) -> Pin<Box<dyn Future<Output = Result<(), CloudFileReadError>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             Self: 'async_trait;
    fn delete_at<'life0, 'life1, 'async_trait>(
        &'life0 self,
        slot: &'life1 ObjectSlot,
    ) -> Pin<Box<dyn Future<Output = Result<(), CloudHomeError>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             Self: 'async_trait;

    // Provided method
    fn cross_principal_evidence<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<CrossPrincipalProviderEvidence, CloudHomeError>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait { ... }
}
Expand description

Low-level cloud storage. Implementations handle a single store.

All methods deal in raw bytes. No encryption or path layout logic.

Required Methods§

Source

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

Source

fn allocate_slot<'life0, 'life1, 'async_trait>( &'life0 self, logical_key: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<ObjectSlot, CloudHomeError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Source

fn create_at<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, slot: &'life1 ObjectSlot, body: BlobBody, progress: &'life2 (dyn Fn(u64) + Sync + Send + 'life3), ) -> Pin<Box<dyn Future<Output = Result<(), CloudHomeError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, Self: 'async_trait,

Source

fn read_at<'life0, 'life1, 'async_trait>( &'life0 self, slot: &'life1 ObjectSlot, ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, CloudHomeError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Source

fn read_range_at<'life0, 'life1, 'async_trait>( &'life0 self, slot: &'life1 ObjectSlot, start: u64, end: u64, ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, CloudHomeError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Source

fn read_at_to_file<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, slot: &'life1 ObjectSlot, destination: &'life2 Path, ) -> Pin<Box<dyn Future<Output = Result<(), CloudFileReadError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, Self: 'async_trait,

Source

fn delete_at<'life0, 'life1, 'async_trait>( &'life0 self, slot: &'life1 ObjectSlot, ) -> Pin<Box<dyn Future<Output = Result<(), CloudHomeError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Provided Methods§

Source

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

Implementors§