pub struct Context<D: Digest, P: PublicKey> {
pub round: Round,
pub leader: P,
pub parent: (View, D),
}Expand description
Context is a collection of metadata from consensus about a given payload. It provides information about the current epoch/view and the parent payload that new proposals are built on.
Fields§
§round: RoundCurrent round of consensus.
leader: PLeader of the current round.
parent: (View, D)Parent the payload is built on.
When the current view is not a term start, the parent must be the immediately previous view. When the current view is a term start, the parent may be an older certified view as long as the participant possesses nullifications covering every skipped term (a nullification covers the view it was created for and the remainder of that term); any uncovered view may eventually be finalized and skipping it would result in a fork. A certified parent remains valid even if a later nullification in its own term covers the parent view.
A pipelined handoff request instead names the previous view as its parent before that
view certifies (see crate::CertifiableAutomaton::prepare).
A certified parent may never be finalized. Later proposals can skip it once a nullification
covers its view, and a competing payload can then be finalized in its place. Only treat the
parent as final once the Reporter receives an
Activity::Finalization for it or one of its descendants.
Trait Implementations§
Source§impl<D: Digest, P: PublicKey> EncodeSize for Context<D, P>
impl<D: Digest, P: PublicKey> EncodeSize for Context<D, P>
Source§fn encode_size(&self) -> usize
fn encode_size(&self) -> usize
Source§fn encode_inline_size(&self) -> usize
fn encode_inline_size(&self) -> usize
BufsMut::push
during Write::write_bufs. Used to size the fixed working buffer for
inline writes, so it must not be less than the bytes written inline.
Override alongside Write::write_bufs for types where large
byte fields go via push, or the working buffer will over-allocate.impl<D: Eq + Digest, P: Eq + PublicKey> Eq for Context<D, P>
Source§impl<D: Digest, P: PublicKey> MaxEncodeSize for Context<D, P>
impl<D: Digest, P: PublicKey> MaxEncodeSize for Context<D, P>
Source§const MAX_ENCODE_SIZE: usize
const MAX_ENCODE_SIZE: usize
Source§impl<D: Digest, P: PublicKey> Read for Context<D, P>
impl<D: Digest, P: PublicKey> Read for Context<D, P>
impl<D: PartialEq + Digest, P: PartialEq + PublicKey> StructuralPartialEq for Context<D, P>
Source§impl<D: Digest, P: PublicKey> Write for Context<D, P>
impl<D: Digest, P: PublicKey> Write for Context<D, P>
Source§fn write_bufs(&self, buf: &mut impl BufsMut)
fn write_bufs(&self, buf: &mut impl BufsMut)
BufsMut, allowing existing byte chunks to be
appended via BufsMut::push instead of written inline. Must encode
to the same format as Write::write. Defaults to Write::write.Auto Trait Implementations§
impl<D, P> Freeze for Context<D, P>
impl<D, P> RefUnwindSafe for Context<D, P>
impl<D, P> Send for Context<D, P>
impl<D, P> Sync for Context<D, P>
impl<D, P> Unpin for Context<D, P>
impl<D, P> UnsafeUnpin for Context<D, P>
impl<D, P> UnwindSafe for Context<D, P>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> Codec for T
Source§impl<T> Encode for Twhere
T: Write + EncodeSize,
impl<T> Encode for Twhere
T: Write + EncodeSize,
Source§impl<T> EncodeExt for Twhere
T: EncodeSize + Write,
impl<T> EncodeExt for Twhere
T: EncodeSize + Write,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more