pub struct Machine {
session_known: bool,
email: Option<String>,
link: Link,
pull_errors: BTreeMap<String, String>,
status: MuxBusDeliveryStatus,
paused_since_ms: Option<i64>,
pause_noted: bool,
sign_in_notified: bool,
}Expand description
Cloud delivery’s state over time, and the episodes that drive the notification and the agents’ notes.
Fields§
§session_known: bool§email: Option<String>§link: Link§pull_errors: BTreeMap<String, String>Agents whose REST pull is failing (agent → reason) though the WebSocket may be open: their messages can’t be fetched, so that is not connected either. An agent’s entry clears when its own pull answers, not another agent’s.
status: MuxBusDeliveryStatus§paused_since_ms: Option<i64>When the current pause began; open until delivery is connected again. A sign-out ends one only if the agents weren’t told about it.
pause_noted: boolThe agents were told about the current pause.
sign_in_notified: boolThe current needs-sign-in episode has had its notification.
Implementations§
Source§impl Machine
impl Machine
pub fn new(now_ms: i64) -> Self
pub fn status(&self) -> &MuxBusDeliveryStatus
Sourcepub fn saw_session(
&mut self,
email: Option<String>,
broker: Option<&CredentialState>,
now_ms: i64,
) -> Vec<Effect>
pub fn saw_session( &mut self, email: Option<String>, broker: Option<&CredentialState>, now_ms: i64, ) -> Vec<Effect>
The subscriber found a sign-in to use (email when it could read one).
Sourcepub fn fresh_sign_in(
&mut self,
email: Option<String>,
now_ms: i64,
) -> Vec<Effect>
pub fn fresh_sign_in( &mut self, email: Option<String>, now_ms: i64, ) -> Vec<Effect>
The user just signed in (muxbus.login saved it): connecting, whatever
the broker still says about the sign-in this one replaces.
Sourcepub fn signed_out(&mut self, now_ms: i64) -> Vec<Effect>
pub fn signed_out(&mut self, now_ms: i64) -> Vec<Effect>
The user signed out on purpose: not a lost sign-in.
pub fn set_link( &mut self, link: Link, broker: Option<&CredentialState>, now_ms: i64, ) -> Vec<Effect>
Sourcepub fn relay_answered(
&mut self,
agent: &str,
broker: Option<&CredentialState>,
now_ms: i64,
) -> Vec<Effect>
pub fn relay_answered( &mut self, agent: &str, broker: Option<&CredentialState>, now_ms: i64, ) -> Vec<Effect>
The relay answered agent’s pull: delivery is healthy as of now_ms.
Sourcepub fn pull_failed(
&mut self,
agent: &str,
reason: String,
broker: Option<&CredentialState>,
now_ms: i64,
) -> Vec<Effect>
pub fn pull_failed( &mut self, agent: &str, reason: String, broker: Option<&CredentialState>, now_ms: i64, ) -> Vec<Effect>
agent’s pull (fetch or claim) got no usable answer from the relay.
Sourcepub fn keep_pull_errors_of(&mut self, agents: &[String])
pub fn keep_pull_errors_of(&mut self, agents: &[String])
Forget pull failures of agents no longer subscribed: they won’t pull again to clear them.
Sourcepub fn tick(
&mut self,
broker: Option<&CredentialState>,
now_ms: i64,
) -> Vec<Effect>
pub fn tick( &mut self, broker: Option<&CredentialState>, now_ms: i64, ) -> Vec<Effect>
Re-derive (the broker may have moved on its own) and release the pause note once it is due.
fn update( &mut self, broker: Option<&CredentialState>, now_ms: i64, ) -> Vec<Effect>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Machine
impl RefUnwindSafe for Machine
impl Send for Machine
impl Sync for Machine
impl Unpin for Machine
impl UnsafeUnpin for Machine
impl UnwindSafe for Machine
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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