Skip to main content

Module file

Module file 

Source
Expand description

File-based storage implementation.

This module provides disk-based persistent storage with support for both traditional file I/O and memory-mapped files (mmap).

§Features

  • Traditional I/O: Buffered reads/writes with configurable buffer size
  • Memory-mapped I/O: High-performance reads using mmap with caching
  • File locking: Concurrent access control
  • Flexible configuration: Buffer size, sync writes, temp directory, etc.

§Memory-Mapped Mode

When FileStorageConfig.use_mmap is enabled:

  • Files are mapped into memory for reading
  • Mapped files are cached for reuse
  • File modifications are detected and cache is invalidated
  • Supports prefaulting and huge pages for performance

§Example

use laurus::storage::file::{FileStorage, FileStorageConfig};
use laurus::storage::Storage;
use std::io::Write;
use tempfile::TempDir;

// Create storage with mmap enabled
let temp_dir = TempDir::new().unwrap();
let mut config = FileStorageConfig::new(temp_dir.path());
config.use_mmap = true;
let storage = FileStorage::new(temp_dir.path(), config)?;

// Write a file
let mut output = storage.create_output("test.dat")?;
output.write_all(b"Hello, world!")?;
output.close()?;

// Read using mmap
let mut input = storage.open_input("test.dat")?;
let mut buffer = Vec::new();
input.read_to_end(&mut buffer)?;

Structs§

FileInput
A file input implementation.
FileLockManager
A file-based lock manager.
FileOutput
A file output implementation.
FileStorage
A file-based storage implementation.
FileStorageConfig
Configuration specific to file-based storage.
MmapInput
A memory-mapped file input implementation.