use crate::backend::native::graph_file::{FileManager, IOOperationsManager};
use super::GraphFile;
impl GraphFile {
pub fn path(&self) -> &std::path::Path {
&self.file_path
}
pub fn validate_file_size(&self) -> crate::backend::native::types::NativeResult<()> {
let file_size = self.file_size()?;
FileManager::validate_file_size(file_size, &self.persistent_header)
}
pub fn grow(
&mut self,
additional_bytes: u64,
) -> crate::backend::native::types::NativeResult<()> {
FileManager::grow_file(&mut self.file, additional_bytes)
}
pub fn read_bytes_managed(
&mut self,
offset: u64,
buffer: &mut [u8],
) -> crate::backend::native::types::NativeResult<()> {
IOOperationsManager::read_bytes(self, offset, buffer)
}
pub fn write_bytes_managed(
&mut self,
offset: u64,
data: &[u8],
) -> crate::backend::native::types::NativeResult<()> {
IOOperationsManager::write_bytes(self, offset, data)
}
pub fn write_bytes_direct(
&mut self,
offset: u64,
data: &[u8],
) -> crate::backend::native::types::NativeResult<()> {
IOOperationsManager::write_bytes_direct(self, offset, data)
}
pub fn flush(&mut self) -> crate::backend::native::types::NativeResult<()> {
IOOperationsManager::flush(self)
}
pub fn invalidate_read_buffer(&mut self) {
IOOperationsManager::invalidate_read_buffer(&mut self.read_buffer)
}
pub fn flush_write_buffer(&mut self) -> crate::backend::native::types::NativeResult<()> {
IOOperationsManager::flush_write_buffer(&mut self.file, &mut self.write_buffer)?;
Ok(())
}
pub fn get_memory_usage(
&self,
) -> crate::backend::native::graph_file::memory_resource_manager::MemoryManagementStatistics
{
crate::backend::native::graph_file::memory_resource_manager::MemoryManagementStatistics {
read_buffer_capacity: self.read_buffer.len(),
write_buffer_pending_ops: self.write_buffer.len(),
mmap_enabled: false, io_mode:
crate::backend::native::graph_file::memory_resource_manager::MemoryIOMode::Standard,
}
}
pub fn prefetch(
&mut self,
offset: u64,
length: u64,
) -> crate::backend::native::types::NativeResult<()> {
IOOperationsManager::prefetch(self, offset, length)
}
pub fn read_with_ahead(
&mut self,
offset: u64,
buffer: &mut [u8],
) -> crate::backend::native::types::NativeResult<()> {
IOOperationsManager::read_with_ahead(&mut self.file, offset, buffer)
}
#[cfg(feature = "v2_experimental")]
pub fn mmap_ensure_size(
&mut self,
len: u64,
) -> crate::backend::native::types::NativeResult<()> {
FileManager::mmap_ensure_size(&mut self.file, &self.file_path, len, &mut self.mmap)
}
#[cfg(feature = "v2_experimental")]
pub fn mmap_read_bytes(
&self,
offset: u64,
buffer: &mut [u8],
) -> crate::backend::native::types::NativeResult<()> {
crate::backend::native::graph_file::memory_mapping::MemoryMappingManager::mmap_read_bytes(
&self.mmap, offset, buffer,
)
}
#[cfg(feature = "v2_experimental")]
pub fn mmap_write_bytes(
&mut self,
offset: u64,
data: &[u8],
) -> crate::backend::native::types::NativeResult<()> {
crate::backend::native::graph_file::memory_mapping::MemoryMappingManager::mmap_write_bytes(
&mut self.file,
&self.file_path,
&mut self.write_buffer,
&mut self.mmap,
offset,
data,
)
}
#[cfg(feature = "v2_experimental")]
fn ensure_mmap_covers(
&mut self,
min_len: u64,
) -> crate::backend::native::types::NativeResult<()> {
crate::backend::native::graph_file::memory_mapping::MemoryMappingManager::ensure_mmap_covers(
&mut self.file,
&mut self.write_buffer,
&mut self.mmap,
min_len,
)
}
}