hotstuff_rs::pacemaker::protocol

Struct PacemakerState

source
struct PacemakerState {
    timeouts: BTreeMap<ViewNumber, Instant>,
    timeout_vote_collectors: ActiveCollectorPair<TimeoutVoteCollector>,
    last_advance_view: Option<ViewNumber>,
}
Expand description

Internal state of the Pacemaker. Keeps track of the timeouts allocated to current and future views (if any), and the timeout votes collected for the current view.

Fields§

§timeouts: BTreeMap<ViewNumber, Instant>§timeout_vote_collectors: ActiveCollectorPair<TimeoutVoteCollector>§last_advance_view: Option<ViewNumber>

Implementations§

source§

impl PacemakerState

source

fn initialize( config: &PacemakerConfiguration, init_view: ViewNumber, validator_set_state: &ValidatorSetState, ) -> Self

Initializes the PacemakerState on starting the protocol. Should only be called at the start of the protocol.

source

fn initial_timeouts( start_view: ViewNumber, config: &PacemakerConfiguration, ) -> BTreeMap<ViewNumber, Instant>

Return initial timeouts on starting the protocol from a given start view.

source

fn set_timeouts( &mut self, start_view: ViewNumber, config: &PacemakerConfiguration, )

Set the timeout for each view in the epoch starting from a given view.

source

fn extend_epoch_view_timeout( &mut self, epoch_view: ViewNumber, config: &PacemakerConfiguration, )

Extend the timeout of the epoch-change view by another max_view_time.

Required: The caller must ensure that the view is an epoch-change view.

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

source§

type Output = T

Should always be Self
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.
§

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

§

fn vzip(self) -> V