pub struct StateAvailabilityBoundary {
    pub pivot_chain: Vec<H256>,
    pub synced_state_height: u64,
    pub full_state_start_height: Option<u64>,
    pub full_state_space: Option<Space>,
    pub lower_bound: u64,
    pub upper_bound: u64,
    pub optimistic_executed_height: Option<u64>,
}

Fields§

§pivot_chain: Vec<H256>

This is the hash of blocks in pivot chain based on current graph.

§synced_state_height: u64§full_state_start_height: Option<u64>

All states of full_state_space are available for reading after this height. None means no full state are kept.

§full_state_space: Option<Space>

None means both spaces are kept. This field is not used if full_state_start_height is None.

§lower_bound: u64

This is the lower boundary height of available state where we can execute new epochs based on it. Note that synced_state_height is within this bound for execution, but its state cannot be accessed through get_state_no_commit.

§upper_bound: u64

This is the upper boundary height of available state.

§optimistic_executed_height: Option<u64>

Implementations§

source§

impl StateAvailabilityBoundary

source

pub fn new( epoch_hash: H256, epoch_height: u64, full_state_start_height: Option<u64>, full_state_space: Option<Space> ) -> Self

source

pub fn check_availability(&self, height: u64, block_hash: &H256) -> bool

Check if the state can be accessed for reading.

source

pub fn check_read_availability( &self, height: u64, block_hash: &H256, space: Option<Space> ) -> bool

source

pub fn contains_space(&self, space: &Option<Space>) -> bool

source

pub fn adjust_upper_bound(&mut self, executed_block: &BlockHeader)

Try to update upper_bound according to a new executed block.

source

pub fn set_synced_state_height(&mut self, synced_state_height: u64)

This function will record the most recent synced_state_height for special case handling.

source

pub fn adjust_lower_bound(&mut self, new_lower_bound: u64)

This function will set a new lower boundary height of available state. Caller should make sure the new lower boundary height should be greater than or equal to current lower boundary height. Caller should also make sure the new lower boundary height should be less than or equal to current upper boundary height.

Trait Implementations§

source§

impl Clone for StateAvailabilityBoundary

source§

fn clone(&self) -> StateAvailabilityBoundary

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for StateAvailabilityBoundary

source§

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

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

impl MallocSizeOf for StateAvailabilityBoundary

source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Measure the heap usage of all descendant heap-allocated structures, but not the space taken up by the value itself.

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, 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> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V