Skip to main content

FileAccess

Trait FileAccess 

Source
pub trait FileAccess {
    // Required methods
    fn read_file_range(
        &self,
        file_id: &FileId,
        offset: u64,
        len: u64,
    ) -> Result<Vec<u8>>;
    fn file_exists(&self, file_id: &FileId) -> bool;
    fn file_length(&self, file_id: &FileId) -> Option<u64>;
    fn read_file(&self, file_id: &FileId) -> Result<Vec<u8>>;
    fn write_file_range(
        &mut self,
        file_id: &FileId,
        offset: u64,
        data: &[u8],
    ) -> Result<()>;

    // Provided methods
    fn read_file_range_into(
        &self,
        file_id: &FileId,
        offset: u64,
        dst: &mut [u8],
    ) -> Result<usize> { ... }
    fn open_sequential_reader(
        &self,
        _file_id: &FileId,
    ) -> Result<Option<Box<dyn Read>>> { ... }
    fn open_range_reader(
        &self,
        _file_id: &FileId,
    ) -> Result<Option<Box<dyn FileRangeReader>>> { ... }
}
Expand description

Abstraction for file I/O during verification and repair.

Required Methods§

Source

fn read_file_range( &self, file_id: &FileId, offset: u64, len: u64, ) -> Result<Vec<u8>>

Read a range of bytes from a file identified by its FileId.

Source

fn file_exists(&self, file_id: &FileId) -> bool

Check if a file exists on disk.

Source

fn file_length(&self, file_id: &FileId) -> Option<u64>

Get the actual length of a file on disk.

Source

fn read_file(&self, file_id: &FileId) -> Result<Vec<u8>>

Read the entire file content.

Source

fn write_file_range( &mut self, file_id: &FileId, offset: u64, data: &[u8], ) -> Result<()>

Write data to a file at the given offset.

Provided Methods§

Source

fn read_file_range_into( &self, file_id: &FileId, offset: u64, dst: &mut [u8], ) -> Result<usize>

Read bytes into a caller-provided buffer, returning the number of bytes read.

Source

fn open_sequential_reader( &self, _file_id: &FileId, ) -> Result<Option<Box<dyn Read>>>

Open a forward-only reader for hot paths that consume a whole file from offset 0.

Source

fn open_range_reader( &self, _file_id: &FileId, ) -> Result<Option<Box<dyn FileRangeReader>>>

Open a reusable seekable reader for range-oriented repair input.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§