Enum Input

Source
pub enum Input {
    Write(WriteReq, WriteFuture),
    Read(ReadReq, ReadFuture),
    Tick(Instant),
    Message(Message),
    PersistRes(PersistRes),
    ReadStateMachineRes(ReadStateMachineRes),
}
Expand description

An input to step.

Inputs include read requests, write requests, an rpc arrival, clock ticks, and the completon of disk IO.

There are no particular constraints on the order that inputs are processed except those described in Output.

Variants§

§

Write(WriteReq, WriteFuture)

A user request to enter a write in the replicated state machine.

The write payload is an opaque Vec<u8> handed as-is to the state machine for intrepretation. The provided future will be resolved when this write completes.

§

Read(ReadReq, ReadFuture)

A user request to read from the replicated state machine.

The read payload is an opaque Vec<u8> handed as-is to the state machine for intrepretation. The provided future will be resolved when this read completes.

§

Tick(Instant)

A communication to the Raft logic of the current time.

Correctness of this Raft implementation (including reads) is entirely independant from clocks. However, Raft very much relies on a periodic clock tick for availability. If ticks are delayed, unnecessary elections and leadership transfers will happen, which affects tail latencies.

TODO: How often should a tick event happen for a given Config?

§

Message(Message)

An rpc resulting from a Output::Message on another node.

§

PersistRes(PersistRes)

A communication that a Output::PersistReq has completed.

§

ReadStateMachineRes(ReadStateMachineRes)

A communication that a Output::ReadStateMachineReq has completed.

Trait Implementations§

Source§

impl Debug for Input

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Input

§

impl RefUnwindSafe for Input

§

impl Send for Input

§

impl Sync for Input

§

impl Unpin for Input

§

impl UnwindSafe for Input

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