enum ProcessedAckResult<S: PixSpec> {
NoProgress,
VerifierNotReady(SsaPolynomialId<<S as PixSpec>::Pseudonym>),
Progressed(SsaRecoveryProgress<<S as PixSpec>::Pseudonym>),
InvalidShare(SsaId<<S as PixSpec>::Pseudonym>, u64),
EarlyRecovery(SsaRecoveryProgress<<S as PixSpec>::Pseudonym>),
FullRecovery(RecoveredSsa<<S as PixSpec>::Pseudonym, <S as PixSpec>::AddressPrivateKey>, SsaRecoveryProgress<<S as PixSpec>::Pseudonym>),
}Expand description
Result of processing a single verified acknowledgement in the SSA reconstructor.
The counters behind SsaRecoveryProgress are updated by process_verified_ack itself, on the
cycle it already holds, so these variants only have to say whether a snapshot is worth emitting
— not what changed. That is why a duplicate, a surplus share and an unmatched acknowledgement all
collapse into NoProgress: none of them moves a counter, so none of them can
make a snapshot differ from the last one sent.
Variants§
NoProgress
Nothing to report: the acknowledgement matched no pending share, or the share was a duplicate, a surplus, or absorbed by an already-failed polynomial.
VerifierNotReady(SsaPolynomialId<<S as PixSpec>::Pseudonym>)
The share is valid but its polynomial’s verifier is not installed yet, so it cannot be
checked. Deferral, not failure: the ack is bucketed under this
SsaPolynomialId and retried once the verifier arrives.
Progressed(SsaRecoveryProgress<<S as PixSpec>::Pseudonym>)
The share advanced reconstruction without finishing it.
The share failed verification. Carries the SSA’s aggregate fault total across all peers.
EarlyRecovery(SsaRecoveryProgress<<S as PixSpec>::Pseudonym>)
The early recovery threshold was crossed.
FullRecovery(RecoveredSsa<<S as PixSpec>::Pseudonym, <S as PixSpec>::AddressPrivateKey>, SsaRecoveryProgress<<S as PixSpec>::Pseudonym>)
Full SSA was recovered. Carries the cycle’s final progress, captured before its state was released — afterwards there is nothing left to read it from.
Auto Trait Implementations§
impl<S> Freeze for ProcessedAckResult<S>
impl<S> RefUnwindSafe for ProcessedAckResult<S>
impl<S> Send for ProcessedAckResult<S>
impl<S> Sync for ProcessedAckResult<S>
impl<S> Unpin for ProcessedAckResult<S>
impl<S> UnsafeUnpin for ProcessedAckResult<S>
impl<S> UnwindSafe for ProcessedAckResult<S>
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
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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