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§
Sourcefn flush<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
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.
Sourcefn fsync<'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,
Asynchronously fsyncs any completed operations to the disk.
Sourcefn fdatasync<'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,
Asynchronously fdatasyncs any completed operations to the disk. Note that an implementation may simply call fsync for fdatasync.
Sourcefn 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 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.
Sourcefn 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 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.
Provided Methods§
Sourcefn 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 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.
Sourcefn 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,
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.