pub struct PublishNamespaceStateMachine {
state: PublishNamespaceState,
}Expand description
State machine for PUBLISH_NAMESPACE flow. Idle -> Pending -> Active -> Done.
Fields§
§state: PublishNamespaceStateImplementations§
Source§impl PublishNamespaceStateMachine
impl PublishNamespaceStateMachine
Sourcepub fn on_publish_namespace_received(&mut self) -> Result<(), NamespaceError>
pub fn on_publish_namespace_received(&mut self) -> Result<(), NamespaceError>
Idle -> Pending (PUBLISH_NAMESPACE received from the peer).
Sourcepub fn on_publish_namespace_ok_sent(&mut self) -> Result<(), NamespaceError>
pub fn on_publish_namespace_ok_sent(&mut self) -> Result<(), NamespaceError>
Pending -> Active (REQUEST_OK written on the peer’s stream).
Sourcepub fn on_publish_namespace_error_sent(&mut self) -> Result<(), NamespaceError>
pub fn on_publish_namespace_error_sent(&mut self) -> Result<(), NamespaceError>
Pending -> Done (REQUEST_ERROR written on the peer’s stream).
Source§impl PublishNamespaceStateMachine
impl PublishNamespaceStateMachine
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new machine in PublishNamespaceState::Idle.
Sourcepub fn state(&self) -> PublishNamespaceState
pub fn state(&self) -> PublishNamespaceState
Returns the current state of the publish-namespace flow.
Sourcepub fn on_publish_namespace_sent(&mut self) -> Result<(), NamespaceError>
pub fn on_publish_namespace_sent(&mut self) -> Result<(), NamespaceError>
Idle -> Pending.
Sourcepub fn on_publish_namespace_ok(&mut self) -> Result<(), NamespaceError>
pub fn on_publish_namespace_ok(&mut self) -> Result<(), NamespaceError>
Pending -> Active.
Sourcepub fn on_publish_namespace_error(&mut self) -> Result<(), NamespaceError>
pub fn on_publish_namespace_error(&mut self) -> Result<(), NamespaceError>
Pending -> Done.
Sourcepub fn on_request_cancelled(&mut self) -> Result<(), NamespaceError>
pub fn on_request_cancelled(&mut self) -> Result<(), NamespaceError>
Pending | Active -> Done, Done -> Done (this request’s stream was cancelled).
This draft has neither PUBLISH_NAMESPACE_DONE nor PUBLISH_NAMESPACE_CANCEL: a publisher withdraws its advertisement, and a receiver refuses one, by terminating the stream the PUBLISH_NAMESPACE opened. Section 3.3.2: “Once a request stream has been opened, the request MAY be cancelled by either endpoint.”
Idle is refused, on the other half of the same sentence: nothing has
been written, so there is no stream to terminate. Done stays Done —
nothing finishes a request stream’s send half on the ordinary path, so a
caller that walks away from a request that has already ended still
resets the stream, and that reset is an ordinary end rather than a
fault.