pub struct Voter<H, N, E: Environment<H, N>, GlobalIn, GlobalOut>where
    H: Clone + Eq + Ord + Debug,
    N: Copy + BlockNumberOps + Debug,
    GlobalIn: Stream<Item = Result<CommunicationIn<H, N, E::Signature, E::Id>, E::Error>> + Unpin,
    GlobalOut: Sink<CommunicationOut<H, N, E::Signature, E::Id>, Error = E::Error> + Unpin,
{ /* private fields */ }
Expand description

A future that maintains and multiplexes between different rounds, and caches votes.

This voter also implements the commit protocol. The commit protocol allows a node to broadcast a message that finalizes a given block and includes a set of precommits as proof.

  • When a round is completable and we precommitted we start a commit timer and start accepting commit messages;
  • When we receive a commit message if it targets a block higher than what we’ve finalized we validate it and import its precommits if valid;
  • When our commit timer triggers we check if we’ve received any commit message for a block equal to what we’ve finalized, if we haven’t then we broadcast a commit.

Additionally, we also listen to commit messages from rounds that aren’t currently running, we validate the commit and dispatch a finalization notification (if any) to the environment.

Implementations§

Returns an object allowing to query the voter state.

Create new Voter tracker with given round number and base block.

Provide data about the last completed round. If there is no known last completed round, the genesis state (round number 0, no votes, genesis base), should be provided. When available, all messages required to complete the last round should be provided.

The input stream for commit messages should provide commits which correspond to known blocks only (including all its precommits). It is also responsible for validating the signature data in commit messages.

Trait Implementations§

The type of value produced on completion.
Attempt to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Converts self into T using Into<T>. Read more
Causes self to use its Binary implementation when Debug-formatted. Read more
Causes self to use its Display implementation when Debug-formatted. Read more
Causes self to use its LowerExp implementation when Debug-formatted. Read more
Causes self to use its LowerHex implementation when Debug-formatted. Read more
Causes self to use its Octal implementation when Debug-formatted. Read more
Causes self to use its Pointer implementation when Debug-formatted. Read more
Causes self to use its UpperExp implementation when Debug-formatted. Read more
Causes self to use its UpperHex implementation when Debug-formatted. Read more
Formats each item in a sequence. Read more

Returns the argument unchanged.

Map this future’s output to a different type, returning a new future of the resulting type. Read more
Map this future’s output to a different type, returning a new future of the resulting type. Read more
Chain on a computation for when a future finished, passing the result of the future to the provided closure f. Read more
Wrap this future in an Either future, making it the left-hand variant of that Either. Read more
Wrap this future in an Either future, making it the right-hand variant of that Either. Read more
Convert this future into a single element stream. Read more
Flatten the execution of this future when the output of this future is itself another future. Read more
Flatten the execution of this future when the successful result of this future is a stream. Read more
Fuse a future such that poll will never again be called once it has completed. This method can be used to turn any Future into a FusedFuture. Read more
Do something with the output of a future before passing it on. Read more
Catches unwinding panics while polling the future. Read more
Create a cloneable handle to this future where all handles will resolve to the same result. Read more
Turn this future into a future that yields () on completion and sends its output to another future on a separate task. Read more
Wrap the future in a Box, pinning it. Read more
Wrap the future in a Box, pinning it. Read more
A convenience for calling Future::poll on Unpin future types.
Evaluates and consumes the future, returning the resulting output if the future is ready after the first call to Future::poll. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The output that the future will produce on completion.
Which kind of future are we turning this into?
Creates a future from a value. Read more
Pipes by value. This is generally the method you want to use. Read more
Borrows self and passes that borrow into the pipe function. Read more
Mutably borrows self and passes that borrow into the pipe function. Read more
Borrows self, then passes self.borrow() into the pipe function. Read more
Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Borrows self, then passes self.as_ref() into the pipe function.
Mutably borrows self, then passes self.as_mut() into the pipe function. Read more
Borrows self, then passes self.deref() into the pipe function.
Mutably borrows self, then passes self.deref_mut() into the pipe function. Read more
Immutable access to a value. Read more
Mutable access to a value. Read more
Immutable access to the Borrow<B> of a value. Read more
Mutable access to the BorrowMut<B> of a value. Read more
Immutable access to the AsRef<R> view of a value. Read more
Mutable access to the AsMut<R> view of a value. Read more
Immutable access to the Deref::Target of a value. Read more
Mutable access to the Deref::Target of a value. Read more
Calls .tap() only in debug builds, and is erased in release builds.
Calls .tap_mut() only in debug builds, and is erased in release builds. Read more
Calls .tap_borrow() only in debug builds, and is erased in release builds. Read more
Calls .tap_borrow_mut() only in debug builds, and is erased in release builds. Read more
Calls .tap_ref() only in debug builds, and is erased in release builds. Read more
Calls .tap_ref_mut() only in debug builds, and is erased in release builds. Read more
Calls .tap_deref() only in debug builds, and is erased in release builds. Read more
Calls .tap_deref_mut() only in debug builds, and is erased in release builds. Read more
Attempts to convert self into T using TryInto<T>. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type of successful values yielded by this future
The type of failures yielded by this future
Poll this TryFuture as if it were a Future. Read more
Flattens the execution of this future when the successful result of this future is a Sink. Read more
Maps this future’s success value to a different value. Read more
Maps this future’s success value to a different value, and permits for error handling resulting in the same type. Read more
Maps this future’s error value to a different value. Read more
Maps this future’s Error to a new error type using the Into trait. Read more
Maps this future’s Ok to a new type using the Into trait. Read more
Executes another future after this one resolves successfully. The success value is passed to a closure to create this subsequent future. Read more
Executes another future if this one resolves to an error. The error value is passed to a closure to create this subsequent future. Read more
Do something with the success value of a future before passing it on. Read more
Do something with the error value of a future before passing it on. Read more
Flatten the execution of this future when the successful result of this future is another future. Read more
Flatten the execution of this future when the successful result of this future is a stream. Read more
Unwraps this future’s output, producing a future with this future’s Ok type as its Output type. Read more
Wraps a TryFuture into a type that implements Future. Read more
A convenience method for calling TryFuture::try_poll on Unpin future types. Read more
The type returned in the event of a conversion error.
Performs the conversion.