pub struct SubscribeAnnouncesStateMachine {
state: SubscribeAnnouncesState,
}Expand description
State machine for the SUBSCRIBE_ANNOUNCES flow. Idle → Pending → Active → Done.
Fields§
§state: SubscribeAnnouncesStateImplementations§
Source§impl SubscribeAnnouncesStateMachine
impl SubscribeAnnouncesStateMachine
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new machine in SubscribeAnnouncesState::Idle.
Sourcepub fn state(&self) -> SubscribeAnnouncesState
pub fn state(&self) -> SubscribeAnnouncesState
Returns the current state.
Sourcepub fn on_subscribe_announces_sent(&mut self) -> Result<(), NamespaceError>
pub fn on_subscribe_announces_sent(&mut self) -> Result<(), NamespaceError>
Idle → Pending.
Sourcepub fn on_subscribe_announces_ok(&mut self) -> Result<(), NamespaceError>
pub fn on_subscribe_announces_ok(&mut self) -> Result<(), NamespaceError>
Pending → Active.
Sourcepub fn on_subscribe_announces_error(&mut self) -> Result<(), NamespaceError>
pub fn on_subscribe_announces_error(&mut self) -> Result<(), NamespaceError>
Pending → Done.
Sourcepub fn on_unsubscribe_announces(&mut self) -> Result<(), NamespaceError>
pub fn on_unsubscribe_announces(&mut self) -> Result<(), NamespaceError>
Active → Done (UNSUBSCRIBE_ANNOUNCES sent).
Sourcepub fn on_subscribe_announces_received(&mut self) -> Result<(), NamespaceError>
pub fn on_subscribe_announces_received(&mut self) -> Result<(), NamespaceError>
Idle → Pending (a SUBSCRIBE_ANNOUNCES arrived from the peer).
The mirror of
on_subscribe_announces_sent,
named for the direction it runs in rather than shared with it: the two
state edges coincide, so a message dispatched to the wrong one of them
would move the record silently instead of naming the event it was not.
Sourcepub fn on_subscribe_announces_ok_sent(&mut self) -> Result<(), NamespaceError>
pub fn on_subscribe_announces_ok_sent(&mut self) -> Result<(), NamespaceError>
Pending → Active (this endpoint accepted the peer’s request with a SUBSCRIBE_ANNOUNCES_OK).
Section 5.1: “A publisher MUST send exactly one SUBSCRIBE_ANNOUNCES_OK or SUBSCRIBE_ANNOUNCES_ERROR in response to a SUBSCRIBE_ANNOUNCES.”
One answer and no second one: the record leaves Pending on the first, and a second call finds it somewhere else.
Sourcepub fn on_subscribe_announces_error_sent(
&mut self,
) -> Result<(), NamespaceError>
pub fn on_subscribe_announces_error_sent( &mut self, ) -> Result<(), NamespaceError>
Pending → Done (this endpoint refused the peer’s request with a SUBSCRIBE_ANNOUNCES_ERROR).
The other half of the same sentence: one message back, and this is the other one it can be.
Sourcepub fn on_unsubscribe_announces_received(
&mut self,
) -> Result<(), NamespaceError>
pub fn on_unsubscribe_announces_received( &mut self, ) -> Result<(), NamespaceError>
Active → Done (the peer withdrew the namespace subscription with an UNSUBSCRIBE_ANNOUNCES).
Section 5.1: “An UNSUBSCRIBE_ANNOUNCES withdraws a previous SUBSCRIBE_ANNOUNCES.”
Active is the acceptance, which is the state a namespace subscription reaches by being answered SUBSCRIBE_ANNOUNCES_OK and no other way, so a withdrawal of one never answered is refused here.