Skip to main content

StorageEngine

Struct StorageEngine 

Source
pub struct StorageEngine { /* private fields */ }
Expand description

The unified storage engine for MenteDB.

Coordinates page allocation, caching, and write-ahead logging to provide crash-safe, page-oriented storage for memory nodes.

Implementations§

Source§

impl StorageEngine

Source

pub fn open(path: &Path) -> MenteResult<Self>

Open (or create) a storage engine rooted at path.

path must be a directory; it will be created if it does not exist. After opening, any uncommitted WAL entries are replayed for crash recovery.

Source

pub fn recover(&mut self) -> MenteResult<usize>

Replay WAL entries to recover writes that were not checkpointed.

For each PageWrite entry the serialized data is written back to its page. After replay the WAL is truncated. Returns the number of entries replayed.

Source

pub fn close(&mut self) -> MenteResult<()>

Gracefully shut down: flush dirty pages, sync files.

Source

pub fn allocate_page(&mut self) -> MenteResult<PageId>

Allocate a fresh page.

Source

pub fn read_page(&mut self, page_id: PageId) -> MenteResult<Box<Page>>

Read a page through the buffer pool.

Source

pub fn write_page(&mut self, page_id: PageId, data: &[u8]) -> MenteResult<()>

Write data into a page with WAL protection.

Source

pub fn store_memory(&mut self, node: &MemoryNode) -> MenteResult<PageId>

Serialize and store a MemoryNode into a single page.

Returns the PageId where the node was stored.

Source

pub fn load_memory(&mut self, page_id: PageId) -> MenteResult<MemoryNode>

Load and deserialize a MemoryNode from the given page.

Source

pub fn checkpoint(&mut self) -> MenteResult<()>

Checkpoint: flush all dirty pages, sync to disk, and truncate the WAL.

Source

pub fn scan_all_memories(&mut self) -> Vec<(MemoryId, PageId)>

Scan all pages and return (MemoryId, PageId) pairs for every valid memory node.

Used to rebuild the page map on startup.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more