[][src]Struct sc_client::leaves::LeafSet

pub struct LeafSet<H, N> { /* fields omitted */ }

list of leaf hashes ordered by number (descending). stored in memory for fast access. this allows very fast checking and modification of active leaves.

Methods

impl<H, N> LeafSet<H, N> where
    H: Clone + PartialEq + Decode + Encode,
    N: Debug + Clone + AtLeast32Bit + Decode + Encode
[src]

pub fn new() -> Self[src]

Construct a new, blank leaf set.

pub fn read_from_db(
    db: &dyn KeyValueDB,
    column: u32,
    prefix: &[u8]
) -> Result<Self>
[src]

Read the leaf list from the DB, using given prefix for keys.

pub fn import(
    &mut self,
    hash: H,
    number: N,
    parent_hash: H
) -> Option<ImportDisplaced<H, N>>
[src]

update the leaf list on import. returns a displaced leaf if there was one.

pub fn finalize_height(&mut self, number: N) -> FinalizationDisplaced<H, N>[src]

Note a block height finalized, displacing all leaves with number less than the finalized block's.

Although it would be more technically correct to also prune out leaves at the same number as the finalized block, but with different hashes, the current behavior is simpler and our assumptions about how finalization works means that those leaves will be pruned soon afterwards anyway.

pub fn undo(&mut self) -> Undo<H, N>[src]

Undo all pending operations.

This returns an Undo struct, where any Displaced objects that have returned by previous method calls should be passed to via the appropriate methods. Otherwise, the on-disk state may get out of sync with in-memory state.

pub fn revert(&mut self, best_hash: H, best_number: N)[src]

Revert to the given block height by dropping all leaves in the leaf set with a block number higher than the target.

pub fn hashes(&self) -> Vec<H>[src]

returns an iterator over all hashes in the leaf set ordered by their block number descending.

pub fn count(&self) -> usize[src]

Number of known leaves

pub fn prepare_transaction(
    &mut self,
    tx: &mut DBTransaction,
    column: u32,
    prefix: &[u8]
)
[src]

Write the leaf list to the database transaction.

Trait Implementations

impl<H: Clone, N: Clone> Clone for LeafSet<H, N>[src]

impl<H: Debug, N: Debug> Debug for LeafSet<H, N>[src]

impl<H: Eq, N: Eq> Eq for LeafSet<H, N>[src]

impl<H: PartialEq, N: PartialEq> PartialEq<LeafSet<H, N>> for LeafSet<H, N>[src]

impl<H, N> StructuralEq for LeafSet<H, N>[src]

impl<H, N> StructuralPartialEq for LeafSet<H, N>[src]

Auto Trait Implementations

impl<H, N> RefUnwindSafe for LeafSet<H, N> where
    H: RefUnwindSafe,
    N: RefUnwindSafe

impl<H, N> Send for LeafSet<H, N> where
    H: Send,
    N: Send

impl<H, N> Sync for LeafSet<H, N> where
    H: Sync,
    N: Sync

impl<H, N> Unpin for LeafSet<H, N> where
    H: Unpin,
    N: Unpin

impl<H, N> UnwindSafe for LeafSet<H, N> where
    H: RefUnwindSafe + UnwindSafe,
    N: RefUnwindSafe + UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> CheckedConversion for T[src]

impl<Q, K> Equivalent<K> for Q where
    K: Borrow<Q> + ?Sized,
    Q: Eq + ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, Outer> IsWrappedBy<Outer> for T where
    Outer: AsRef<T> + AsMut<T> + From<T>,
    T: From<Outer>, 
[src]

fn from_ref(outer: &Outer) -> &T[src]

Get a reference to the inner from the outer.

fn from_mut(outer: &mut Outer) -> &mut T[src]

Get a mutable reference to the inner from the outer.

impl<T> MaybeDebug for T where
    T: Debug
[src]

impl<T> MaybeDebug for T where
    T: Debug

impl<T> MaybeRefUnwindSafe for T where
    T: RefUnwindSafe

impl<T> Member for T where
    T: 'static + Clone + PartialEq<T> + Eq + Send + Sync + Debug
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> SaturatedConversion for T

impl<T> SendSyncUnwindSafe for T where
    T: Send + Sync + UnwindSafe + ?Sized

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<S, T> UncheckedInto<T> for S where
    T: UncheckedFrom<S>, 
[src]

impl<T, S> UniqueSaturatedInto<T> for S where
    S: TryInto<T>,
    T: Bounded

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