Skip to main content

RemoteCredentialAttachRecovery

Enum RemoteCredentialAttachRecovery 

Source
pub enum RemoteCredentialAttachRecovery {
    HealedFromReceipt {
        value: ServerValue,
        provenance: ParticipantResponseProvenance,
    },
    CommittedFresh {
        value: ServerValue,
        provenance: ParticipantResponseProvenance,
    },
    ReissueRequired {
        result_generation: Option<Generation>,
        current_generation: Generation,
        reason: CredentialAttachReissueReason,
        value: ServerValue,
        provenance: ParticipantResponseProvenance,
    },
    Answered {
        value: ServerValue,
        provenance: ParticipantResponseProvenance,
    },
    AnswerRefused {
        value: ServerValue,
        reason: ClientInboundRefusalReason,
        provenance: ParticipantResponseProvenance,
    },
    PushedBeforeAnswer {
        value: ServerPush,
        provenance: ParticipantResponseProvenance,
    },
    NotPending {
        reason: LostCredentialAttachRefusalReason,
    },
    RerecordRefused {
        request: ClientRequest,
        reason: ClientOperationRecordRefusalReason,
    },
    TransportLost {
        error: SdkError,
        operation_fate: RemoteOperationTransportFate,
        reconnect: RemoteReconnectPermitOutcome,
    },
}
Expand description

Outcome of driving one lost issued credential attach to a server answer.

The three healing-or-terminal arms are the exhaustive server answers to a same-token re-presentation, and the remainder are pass-throughs that hand back exactly what the crate or the transport reported.

Variants§

§

HealedFromReceipt

The server replayed its committed receipt and the crate applied it: the ROTATED credential is now held, and the orphan is over.

This is the designed healing window being spent. The value is the exact replay the server sent — Bound when the receipt still names its origin binding, UnboundReceipt when the tear killed the connection that held it. Both carry the successor generation and the newly minted secret; the difference is only whether the crate lands in Bound or Detached.

Fields

§value: ServerValue

Exact applied replay value.

§provenance: ParticipantResponseProvenance

Connection/attempt that delivered it.

§

CommittedFresh

The attach had never committed, so the re-presentation committed it now.

The kill landed in the window between the client’s send and the server’s commit. Nothing was lost and nothing needed replaying.

Fields

§value: ServerValue

Exact applied AttachBound value.

§provenance: ParticipantResponseProvenance

Connection/attempt that delivered it.

§

ReissueRequired

The committed outcome is permanently unanswerable; operator re-issue is the cure.

THE LOAD-BEARING TERMINAL. It is reached when the client was dead longer than the receipt window the server could hold open, which is policy (config-owned since #39) rather than failure. It is deliberately a state of its own rather than a generic refusal, because it is the exact point at which an embedder should dispose and re-enroll instead of retrying — and no amount of retrying will ever change it.

Fields

§result_generation: Option<Generation>

The generation the lost commit produced, when the server can still prove it. None for StaleOrUnknownReceipt, which makes no commit claim at all — the absence is the server’s honesty, not a gap here.

§current_generation: Generation

The generation the identity is live at now.

§reason: CredentialAttachReissueReason

Which of the two unanswerable classes this is.

§value: ServerValue

Exact applied server value.

§provenance: ParticipantResponseProvenance

Connection/attempt that delivered it.

§

Answered

The crate applied some other correlated answer, carried verbatim.

StaleAuthority, ParticipantUnknown, Retired and their kin arrive here. The driver relabels nothing: an answer it does not classify is handed over as the server sent it.

Fields

§value: ServerValue

Exact applied server value.

§provenance: ParticipantResponseProvenance

Connection/attempt that delivered it.

§

AnswerRefused

The crate refused the answer and retained its correlation unchanged.

Fields

§value: ServerValue

Exact refused server value.

§reason: ClientInboundRefusalReason

Closed crate refusal reason.

§provenance: ParticipantResponseProvenance

Connection/attempt that delivered it.

§

PushedBeforeAnswer

A push arrived where the correlated answer was owed.

The delivery is handed back rather than dropped, and the live response correlation is still held, so a caller may simply keep receiving: the crate applies the answer whenever it does arrive.

Fields

§value: ServerPush

Exact pushed value.

§provenance: ParticipantResponseProvenance

Connection/attempt that delivered it.

§

NotPending

No issued credential-attach testimony was pending; nothing was consumed.

Fields

§reason: LostCredentialAttachRefusalReason

Closed refusal reason.

§

RerecordRefused

The crate refused to re-record the retained envelope.

Fields

§request: ClientRequest

Exact refused request.

§reason: ClientOperationRecordRefusalReason

Closed crate refusal reason.

§

TransportLost

The probe could not be written; both fates were delegated to the crate.

Fields

§error: SdkError

Concrete socket failure.

§operation_fate: RemoteOperationTransportFate

Crate-owned operation-fate result.

§reconnect: RemoteReconnectPermitOutcome

Crate-owned reconnect permit result.

Trait Implementations§

Source§

impl Debug for RemoteCredentialAttachRecovery

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more