Skip to main content

DualCommitStore

Struct DualCommitStore 

Source
pub struct DualCommitStore {
    pub slot0: Option<CommittedGenerationBytes>,
    pub slot1: Option<CommittedGenerationBytes>,
}
Expand description

DualCommitStore

Dual-slot protected commit protocol for encoded ledger generations.

Writers stage a complete generation record into the inactive slot. Readers recover by selecting the highest-generation valid slot. A torn or partial write cannot become authoritative unless its marker and checksum validate.

Fields§

§slot0: Option<CommittedGenerationBytes>

First physical commit slot.

§slot1: Option<CommittedGenerationBytes>

Second physical commit slot.

Implementations§

Source§

impl DualCommitStore

Source

pub const fn is_uninitialized(&self) -> bool

Return true when no commit slot has ever been written.

Source

pub fn authoritative( &self, ) -> Result<&CommittedGenerationBytes, CommitRecoveryError>

Return the highest-generation valid committed record.

Source

pub fn diagnostic(&self) -> CommitStoreDiagnostic

Build a read-only recovery diagnostic for the protected commit slots.

Source

pub fn commit_payload( &mut self, payload: Vec<u8>, ) -> Result<&CommittedGenerationBytes, CommitRecoveryError>

Commit a new payload to the inactive slot.

The returned store models the post-write physical state. If a real substrate traps before the inactive slot is fully written, the prior valid slot remains authoritative under authoritative.

Source

pub fn write_corrupt_inactive_slot(&mut self, generation: u64, payload: Vec<u8>)

Simulate a torn write into the inactive slot.

This helper is intentionally part of the model because recovery behavior is an ABI requirement, not an implementation detail.

Trait Implementations§

Source§

impl Clone for DualCommitStore

Source§

fn clone(&self) -> DualCommitStore

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DualCommitStore

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for DualCommitStore

Source§

fn default() -> DualCommitStore

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for DualCommitStore

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for DualCommitStore

Source§

fn eq(&self, other: &DualCommitStore) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for DualCommitStore

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for DualCommitStore

Source§

impl StructuralPartialEq for DualCommitStore

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,