Skip to main content

LoggedEpochChange

Struct LoggedEpochChange 

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

A sequence of epochs whose current position survives a restart.

Implementations§

Source§

impl LoggedEpochChange

Source

pub fn new( me: NodeId, peers: impl IntoIterator<Item = NodeId>, timing: Timing, ) -> Self

Epoch-change among peers, over a leader detector with the given heartbeat and timeout and stubborn children retransmitting every retransmit.

Source

pub fn last_timestamp(&self) -> u64

startts — the epoch this process has entered, as its durable record has it.

Source

pub fn last_leader(&self) -> NodeId

start — who leads the epoch this process has entered.

Source

pub fn trusted(&self) -> NodeId

Who this process currently trusts.

Source

pub fn candidate(&self) -> u64

ts — this process’s own next candidate. Volatile; see the module documentation.

Trait Implementations§

Source§

impl Debug for LoggedEpochChange

Source§

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

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

impl Protocol for LoggedEpochChange

Source§

type Entry = Infallible

Nothing accumulates: the epoch entered is one value, rewritten.

Source§

fn on_init(&mut self, cx: &mut ProtoCx<'_, Self>)

upon event ⟨ lec, Init ⟩ — the state is set in new; this starts the detector.

Source§

fn on_recovery(&mut self, cx: &mut ProtoCx<'_, Self>)

upon event ⟨ lec, Recovery ⟩ do retrieve(startts, start).

No StartEpoch is raised. The epoch is not new — this process entered it before it went down, and told the layer above so at the time. Re-raising it would announce as fresh an epoch whose consensus instance already exists, which is the layer above’s business to reconstruct from its own record and not this layer’s to invent.

Source§

type Cmd = Infallible

Requests from the layer above.
Source§

type Ind = Ind

Indications to the layer above — this protocol delivering on its guarantee.
Source§

type Msg = Wire

What crosses the wire to a peer running the same protocol.
Source§

type Scope = Infallible

Scopes whose boundaries this protocol’s guarantees depend on, and which it can observe. Read more
Source§

type Note = Note

The vocabulary in which this protocol narrates its decisions. Read more
Source§

type Meta = Started

The durable value this protocol rewrites: a position, a count, an epoch. Small enough that rewriting it costs nothing. Read more
Source§

fn on_cmd(&mut self, cmd: Cmd, _: &mut ProtoCx<'_, Self>)

Handle a request from the layer above.
Source§

fn on_msg(&mut self, from: NodeId, msg: Wire, cx: &mut ProtoCx<'_, Self>)

Handle a message received from from.
Source§

fn on_timer(&mut self, id: TimerId, cx: &mut ProtoCx<'_, Self>)

Handle a timer that fired somewhere in this protocol or in what it composes. Read more
§

fn on_scope_event( &mut self, _scope: Self::Scope, _cx: &mut Cx<'_, Self::Msg, Self::Ind, Self::Note, Self::Meta, Self::Entry>, )

Handle a boundary of a scope this protocol’s guarantees depend on — its end, or the beginning of the one that succeeds it. Read more

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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.

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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