pub struct VoteTracker<S: Scheme, D: Digest> { /* private fields */ }Expand description
Tracks notarize/nullify/finalize votes for a view.
Each vote type is stored in its own AttributableMap so a validator can only
contribute one vote per phase. The tracker is reused across rounds/views to keep
allocations stable.
Implementations§
Source§impl<S: Scheme, D: Digest> VoteTracker<S, D>
impl<S: Scheme, D: Digest> VoteTracker<S, D>
Sourcepub fn insert_notarize(&mut self, vote: Notarize<S, D>) -> bool
pub fn insert_notarize(&mut self, vote: Notarize<S, D>) -> bool
Inserts a notarize vote if the signer has not already voted.
Sourcepub fn insert_nullify(&mut self, vote: Nullify<S>) -> bool
pub fn insert_nullify(&mut self, vote: Nullify<S>) -> bool
Inserts a nullify vote if the signer has not already voted.
Sourcepub fn insert_finalize(&mut self, vote: Finalize<S, D>) -> bool
pub fn insert_finalize(&mut self, vote: Finalize<S, D>) -> bool
Inserts a finalize vote if the signer has not already voted.
Sourcepub fn notarize(&self, signer: Participant) -> Option<&Notarize<S, D>>
pub fn notarize(&self, signer: Participant) -> Option<&Notarize<S, D>>
Returns the notarize vote for signer, if present.
Sourcepub fn nullify(&self, signer: Participant) -> Option<&Nullify<S>>
pub fn nullify(&self, signer: Participant) -> Option<&Nullify<S>>
Returns the nullify vote for signer, if present.
Sourcepub fn finalize(&self, signer: Participant) -> Option<&Finalize<S, D>>
pub fn finalize(&self, signer: Participant) -> Option<&Finalize<S, D>>
Returns the finalize vote for signer, if present.
Sourcepub fn iter_notarizes(&self) -> impl Iterator<Item = &Notarize<S, D>>
pub fn iter_notarizes(&self) -> impl Iterator<Item = &Notarize<S, D>>
Iterates over notarize votes in signer order.
Sourcepub fn iter_nullifies(&self) -> impl Iterator<Item = &Nullify<S>>
pub fn iter_nullifies(&self) -> impl Iterator<Item = &Nullify<S>>
Iterates over nullify votes in signer order.
Sourcepub fn iter_finalizes(&self) -> impl Iterator<Item = &Finalize<S, D>>
pub fn iter_finalizes(&self) -> impl Iterator<Item = &Finalize<S, D>>
Iterates over finalize votes in signer order.
Sourcepub fn len_notarizes(&self) -> u32
pub fn len_notarizes(&self) -> u32
Returns how many notarize votes have been recorded.
Sourcepub fn len_nullifies(&self) -> u32
pub fn len_nullifies(&self) -> u32
Returns how many nullify votes have been recorded.
Sourcepub fn len_finalizes(&self) -> u32
pub fn len_finalizes(&self) -> u32
Returns how many finalize votes have been recorded.
Sourcepub fn has_notarize(&self, signer: Participant) -> bool
pub fn has_notarize(&self, signer: Participant) -> bool
Returns true if the given signer has a notarize vote recorded.
Sourcepub fn has_nullify(&self, signer: Participant) -> bool
pub fn has_nullify(&self, signer: Participant) -> bool
Returns true if a nullify vote has been recorded for signer.
Sourcepub fn has_finalize(&self, signer: Participant) -> bool
pub fn has_finalize(&self, signer: Participant) -> bool
Returns true if a finalize vote has been recorded for signer.
Sourcepub fn clear_notarizes(&mut self)
pub fn clear_notarizes(&mut self)
Clears all notarize votes but keeps the allocations for reuse.
Sourcepub fn clear_finalizes(&mut self)
pub fn clear_finalizes(&mut self)
Clears all finalize votes but keeps the allocations for reuse.
Auto Trait Implementations§
impl<S, D> Freeze for VoteTracker<S, D>
impl<S, D> RefUnwindSafe for VoteTracker<S, D>
impl<S, D> Send for VoteTracker<S, D>
impl<S, D> Sync for VoteTracker<S, D>
impl<S, D> Unpin for VoteTracker<S, D>
impl<S, D> UnwindSafe for VoteTracker<S, D>
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
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>
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