pub struct TokioFileIO { /* private fields */ }Expand description
Implementation of FileIOService with memory mapping support
This struct provides a high-performance implementation of the file I/O service interface, featuring memory-mapped file access, asynchronous operations, and comprehensive statistics tracking.
§Features
- Memory Mapping: Uses memory-mapped files for optimal performance
- Async I/O: All operations are asynchronous and non-blocking
- Thread Safety: Safe for concurrent access from multiple threads
- Statistics: Tracks detailed I/O performance metrics
- Configuration: Runtime configuration updates supported
§Examples
Implementations§
Source§impl TokioFileIO
impl TokioFileIO
Sourcepub fn new(config: FileIOConfig) -> Self
pub fn new(config: FileIOConfig) -> Self
Creates a new FileIOService instance
Sourcepub fn new_default() -> Self
pub fn new_default() -> Self
Creates a new FileIOService with default configuration
Trait Implementations§
Source§impl FileIOService for TokioFileIO
impl FileIOService for TokioFileIO
Source§fn read_file_chunks<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
options: ReadOptions,
) -> Pin<Box<dyn Future<Output = Result<ReadResult, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_file_chunks<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
options: ReadOptions,
) -> Pin<Box<dyn Future<Output = Result<ReadResult, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Reads a file and returns it as chunks
Source§fn read_file_mmap<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
options: ReadOptions,
) -> Pin<Box<dyn Future<Output = Result<ReadResult, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_file_mmap<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
options: ReadOptions,
) -> Pin<Box<dyn Future<Output = Result<ReadResult, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Reads a file using memory mapping if possible
Source§fn write_file_chunks<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
path: &'life1 Path,
chunks: &'life2 [FileChunk],
options: WriteOptions,
) -> Pin<Box<dyn Future<Output = Result<WriteResult, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn write_file_chunks<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
path: &'life1 Path,
chunks: &'life2 [FileChunk],
options: WriteOptions,
) -> Pin<Box<dyn Future<Output = Result<WriteResult, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Writes chunks to a file
Source§fn write_file_data<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
path: &'life1 Path,
data: &'life2 [u8],
options: WriteOptions,
) -> Pin<Box<dyn Future<Output = Result<WriteResult, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn write_file_data<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
path: &'life1 Path,
data: &'life2 [u8],
options: WriteOptions,
) -> Pin<Box<dyn Future<Output = Result<WriteResult, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Writes data directly to a file
Source§fn get_file_info<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<FileInfo, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_file_info<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<FileInfo, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Gets information about a file
Source§fn file_exists<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<bool, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn file_exists<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<bool, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Checks if a file exists
Source§fn delete_file<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<(), PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_file<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<(), PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Deletes a file
Source§fn copy_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
source: &'life1 Path,
destination: &'life2 Path,
options: WriteOptions,
) -> Pin<Box<dyn Future<Output = Result<WriteResult, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn copy_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
source: &'life1 Path,
destination: &'life2 Path,
options: WriteOptions,
) -> Pin<Box<dyn Future<Output = Result<WriteResult, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Copies a file
Source§fn move_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
source: &'life1 Path,
destination: &'life2 Path,
options: WriteOptions,
) -> Pin<Box<dyn Future<Output = Result<WriteResult, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn move_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
source: &'life1 Path,
destination: &'life2 Path,
options: WriteOptions,
) -> Pin<Box<dyn Future<Output = Result<WriteResult, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Moves a file
Source§fn create_directory<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<(), PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_directory<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<(), PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Creates a directory
Source§fn directory_exists<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<bool, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn directory_exists<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<bool, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Checks if a directory exists
Source§fn list_directory<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<Vec<FileInfo>, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_directory<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<Vec<FileInfo>, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Lists files in a directory
Source§fn get_config(&self) -> FileIOConfig
fn get_config(&self) -> FileIOConfig
Gets the current configuration
Source§fn update_config(&mut self, config: FileIOConfig)
fn update_config(&mut self, config: FileIOConfig)
Updates the configuration
Source§fn get_stats(&self) -> FileIOStats
fn get_stats(&self) -> FileIOStats
Gets I/O statistics
Source§fn reset_stats(&mut self)
fn reset_stats(&mut self)
Resets I/O statistics
Source§fn validate_file_integrity<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
path: &'life1 Path,
expected_checksum: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<bool, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn validate_file_integrity<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
path: &'life1 Path,
expected_checksum: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<bool, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Validates file integrity using checksums
Source§fn calculate_file_checksum<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<String, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn calculate_file_checksum<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<String, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Calculates file checksum
Source§fn stream_file_chunks<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
options: ReadOptions,
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<FileChunk, PipelineError>> + Send>>, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn stream_file_chunks<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 Path,
options: ReadOptions,
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<FileChunk, PipelineError>> + Send>>, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Streams file chunks for processing
Source§fn write_chunk_to_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
path: &'life1 Path,
chunk: &'life2 FileChunk,
options: WriteOptions,
is_first_chunk: bool,
) -> Pin<Box<dyn Future<Output = Result<WriteResult, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn write_chunk_to_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
path: &'life1 Path,
chunk: &'life2 FileChunk,
options: WriteOptions,
is_first_chunk: bool,
) -> Pin<Box<dyn Future<Output = Result<WriteResult, PipelineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Writes a single chunk to a file (for streaming writes)
Auto Trait Implementations§
impl !Freeze for TokioFileIO
impl !RefUnwindSafe for TokioFileIO
impl Send for TokioFileIO
impl Sync for TokioFileIO
impl Unpin for TokioFileIO
impl UnwindSafe for TokioFileIO
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more