storage_manager/backend/page/
mod.rs1pub const PAGE_SIZE: usize = 8192;
3
4pub const PAGE_HEADER_SIZE: u32 = 8;
6
7pub const ITEM_ID_SIZE: u32 = 8;
9
10pub struct Page {
12 pub data: Vec<u8>,
14}
15
16impl Page {
17 pub fn new() -> Self {
19 Self {
20 data: vec![0; PAGE_SIZE],
21 }
22 }
23}
24
25pub fn init_page(page: &mut Page) {
27 page.data[0..4].copy_from_slice(&PAGE_HEADER_SIZE.to_le_bytes());
29
30 page.data[4..8].copy_from_slice(&(PAGE_SIZE as u32).to_le_bytes());
32}
33
34pub fn page_free_space(page: &Page) -> std::io::Result<u32> {
36 let lower = u32::from_le_bytes(page.data[0..4].try_into().unwrap());
37 let upper = u32::from_le_bytes(page.data[4..8].try_into().unwrap());
38 Ok(upper - lower)
39}