1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//! Low-level storage primitives.
//!
//! This module is the bottom of the stack. It is responsible for durable page IO and nothing
//! above it should need to understand file offsets, sidecar files, or crash-recovery record
//! layouts.
//!
//! The storage layer centers on a single abstraction:
//!
//! ```text
//! Pager
//! |
//! +-----------+-----------+
//! | | |
//! buffer free pages durability
//! pool + file len (rollback/WAL)
//! ```
//!
//! Responsibilities:
//! - map logical page ids to bytes on disk or bytes in the in-memory backend;
//! - allocate, reuse, and retire pages;
//! - maintain checksum metadata for durable pages;
//! - implement transaction visibility for rollback-journal and WAL modes;
//! - report integrity/accounting information upward without knowing what page contents mean.
//!
//! Extraction boundary:
//! - external callers should treat [`Pager`] plus the re-exported page/id types as the entire
//! storage API;
//! - the other submodules are pager internals and are intentionally hidden so the on-disk
//! representation can evolve without leaking into higher layers;
//! - this is the storage half of the future generic fork point.
pub
pub
pub
pub
pub
pub
pub
pub
pub use ;
pub use ;