Skip to main content

AnnounceStateMachine

Struct AnnounceStateMachine 

Source
pub struct AnnounceStateMachine {
    state: AnnounceState,
}
Expand description

State machine for the ANNOUNCE flow (draft-12). Idle → Pending → Active → Done.

Fields§

§state: AnnounceState

Implementations§

Source§

impl AnnounceStateMachine

Source

pub fn new() -> Self

Creates a new machine in AnnounceState::Idle.

Source

pub fn state(&self) -> AnnounceState

Returns the current state.

Source

pub fn on_announce_sent(&mut self) -> Result<(), NamespaceError>

Idle → Pending (ANNOUNCE sent).

Source

pub fn on_announce_ok(&mut self) -> Result<(), NamespaceError>

Pending → Active (ANNOUNCE_OK received).

Source

pub fn on_announce_error(&mut self) -> Result<(), NamespaceError>

Pending → Done (ANNOUNCE_ERROR received).

Source

pub fn on_unannounce(&mut self) -> Result<(), NamespaceError>

Active → Done (UNANNOUNCE sent — publisher withdrawing).

Source

pub fn on_announce_cancel(&mut self) -> Result<(), NamespaceError>

Active → Done (ANNOUNCE_CANCEL received — subscriber cancelling).

Source§

impl AnnounceStateMachine

The same transitions, named for the end the advertisement arrives at.

An announcement this endpoint accepts passes through the states in the same order as one it makes, with every message going the other way: the ANNOUNCE arrives instead of leaving, the answer leaves instead of arriving, the withdrawal arrives and the cancellation leaves. Sharing the transitions and not the names is what lets a refusal say which event was refused, rather than naming the mirror image of it.

Source

pub fn on_announce_received(&mut self) -> Result<(), NamespaceError>

Idle -> Pending (ANNOUNCE received from the peer).

Source

pub fn on_announce_ok_sent(&mut self) -> Result<(), NamespaceError>

Pending -> Active (ANNOUNCE_OK sent, accepting the announcement).

Source

pub fn on_announce_error_sent(&mut self) -> Result<(), NamespaceError>

Pending -> Done (ANNOUNCE_ERROR sent, refusing the announcement).

Source

pub fn on_unannounce_received(&mut self) -> Result<(), NamespaceError>

Active -> Done (UNANNOUNCE received, the peer withdrawing).

Source

pub fn on_announce_cancel_sent(&mut self) -> Result<(), NamespaceError>

Active -> Done (ANNOUNCE_CANCEL sent, revoking an acceptance).

Active is the acceptance: it is the state an announcement reaches by being answered ANNOUNCE_OK and no other way, which is why a cancellation of one never answered is refused here rather than sent.

Trait Implementations§

Source§

impl Default for AnnounceStateMachine

Source§

fn default() -> Self

Returns the “default value” for a type. 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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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, 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, !>

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

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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