Trait disk::AsyncDisk

source ·
pub trait AsyncDisk: DiskGetLen + FileSetLen + FileAllocate {
    // Required methods
    fn flush<'life0, 'async_trait>(
        &'life0 self
    ) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn fsync<'life0, 'async_trait>(
        &'life0 self
    ) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn fdatasync<'life0, 'async_trait>(
        &'life0 self
    ) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn read_to_mem<'a, 'async_trait>(
        &'a self,
        file_offset: u64,
        mem: Arc<dyn BackingMemory + Send + Sync>,
        mem_offsets: MemRegionIter<'a>
    ) -> Pin<Box<dyn Future<Output = Result<usize>> + 'async_trait>>
       where Self: 'async_trait,
             'a: 'async_trait;
    fn write_from_mem<'a, 'async_trait>(
        &'a self,
        file_offset: u64,
        mem: Arc<dyn BackingMemory + Send + Sync>,
        mem_offsets: MemRegionIter<'a>
    ) -> Pin<Box<dyn Future<Output = Result<usize>> + 'async_trait>>
       where Self: 'async_trait,
             'a: 'async_trait;
    fn punch_hole<'life0, 'async_trait>(
        &'life0 self,
        file_offset: u64,
        length: u64
    ) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn write_zeroes_at<'life0, 'async_trait>(
        &'life0 self,
        file_offset: u64,
        length: u64
    ) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;

    // Provided methods
    fn read_double_buffered<'life0, 'life1, 'async_trait>(
        &'life0 self,
        file_offset: u64,
        buf: &'life1 mut [u8]
    ) -> Pin<Box<dyn Future<Output = Result<usize>> + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
    fn write_double_buffered<'life0, 'life1, 'async_trait>(
        &'life0 self,
        file_offset: u64,
        buf: &'life1 [u8]
    ) -> Pin<Box<dyn Future<Output = Result<usize>> + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
}
Expand description

An asynchronously accessible disk.

Required Methods§

source

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

Flush intermediary buffers and/or dirty state to file. fsync not required.

source

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

Asynchronously fsyncs any completed operations to the disk.

source

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

Asynchronously fdatasyncs any completed operations to the disk. Note that an implementation may simply call fsync for fdatasync.

source

fn read_to_mem<'a, 'async_trait>( &'a self, file_offset: u64, mem: Arc<dyn BackingMemory + Send + Sync>, mem_offsets: MemRegionIter<'a> ) -> Pin<Box<dyn Future<Output = Result<usize>> + 'async_trait>>
where Self: 'async_trait, 'a: 'async_trait,

Reads from the file at ‘file_offset’ into memory mem at mem_offsets. mem_offsets is similar to an iovec except relative to the start of mem.

source

fn write_from_mem<'a, 'async_trait>( &'a self, file_offset: u64, mem: Arc<dyn BackingMemory + Send + Sync>, mem_offsets: MemRegionIter<'a> ) -> Pin<Box<dyn Future<Output = Result<usize>> + 'async_trait>>
where Self: 'async_trait, 'a: 'async_trait,

Writes to the file at ‘file_offset’ from memory mem at mem_offsets.

source

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

Replaces a range of bytes with a hole.

source

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

Writes up to length bytes of zeroes to the stream, returning how many bytes were written.

Provided Methods§

source

fn read_double_buffered<'life0, 'life1, 'async_trait>( &'life0 self, file_offset: u64, buf: &'life1 mut [u8] ) -> Pin<Box<dyn Future<Output = Result<usize>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Reads from the file at ‘file_offset’ into buf.

Less efficient than read_to_mem because of extra copies and allocations.

source

fn write_double_buffered<'life0, 'life1, 'async_trait>( &'life0 self, file_offset: u64, buf: &'life1 [u8] ) -> Pin<Box<dyn Future<Output = Result<usize>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Writes to the file at ‘file_offset’ from buf.

Less efficient than write_from_mem because of extra copies and allocations.

Implementors§

source§

impl AsyncDisk for AsyncAndroidSparse

source§

impl AsyncDisk for AsyncCompositeDiskFile

source§

impl AsyncDisk for SingleFileDisk

source§

impl AsyncDisk for AsyncZstdDisk

source§

impl<T: 'static + DiskFile + DiskFlush + Send + Sync + FileAllocate + FileSetLen + FileSync + PunchHole + WriteZeroesAt> AsyncDisk for AsyncDiskFileWrapper<T>