reddb_engine/storage/
page_store.rs1use super::page::{Page, PageType};
3use super::pager::{Pager, PagerError, WalBarrier};
4use reddb_file::VfsFile;
5
6pub trait PageStore {
7 fn read_page(&self, page_id: u32) -> Result<Page, PagerError>;
8 fn write_page(&self, page_id: u32, page: Page) -> Result<(), PagerError>;
9 fn allocate_page(&self, page_type: PageType) -> Result<Page, PagerError>;
10 fn free_page(&self, page_id: u32) -> Result<(), PagerError>;
11 fn page_count(&self) -> Result<u32, PagerError>;
12 fn prefetch_hint(&self, _page_id: u32) {}
13}
14
15impl<F: VfsFile, W: WalBarrier> PageStore for Pager<F, W> {
16 fn read_page(&self, id: u32) -> Result<Page, PagerError> {
17 self.read_page(id)
18 }
19 fn write_page(&self, id: u32, page: Page) -> Result<(), PagerError> {
20 self.write_page(id, page)
21 }
22 fn allocate_page(&self, kind: PageType) -> Result<Page, PagerError> {
23 self.allocate_page(kind)
24 }
25 fn free_page(&self, id: u32) -> Result<(), PagerError> {
26 self.free_page(id)
27 }
28 fn page_count(&self) -> Result<u32, PagerError> {
29 self.page_count()
30 }
31}