Skip to main content

Module memmap

Module memmap 

Source
Expand description

Memory-mapped typed slot storage with per-slot concurrency and epoch durability

§Example

use frozen_core::memmap::{MemMap, MemMapCfg};
use std::time::Duration;

let dir = tempfile::tempdir().unwrap();
let path = dir.path().join("memmap_demo.bin");

let cfg = MemMapCfg {
    module_id: 1,
    path,
    version: 1,
    initial_t: 512,
    sync_interval: Some(Duration::from_millis(50)),
    page_size: None,
};

let memmap = MemMap::<u64>::new(cfg).unwrap();
assert_eq!(memmap.length(), 512 * std::mem::size_of::<u64>());

let (ticket, _) = memmap.write(0, |v| *v = 0xDEAD_BEEF_CAFE_BABE).unwrap();
ticket.wait().unwrap();
assert!(ticket.is_durable());

assert_eq!(memmap.read(0, |v| *v).unwrap(), 0xDEAD_BEEF_CAFE_BABE);
assert!(memmap.delete().is_ok());

Structs§

MemMap
Custom memory-mapped typed array storage with slot-level locking and epoch durability
MemMapCfg
Configurations for MemMap
MemMapTransaction
Context for grouping multiple conditional writes into a single atomic operation

Enums§

PageSize
Strongly-typed virtual memory page size representing hardware MMU translation granules