pub struct LiveDispatcher { /* private fields */ }Expand description
Persistent fan-out dispatcher for a streaming cast (bd-772cb2): builds ONE
hold-open sender per resolved endpoint, then routes each command to all of
them with PER-ENDPOINT ERROR ISOLATION (a failed endpoint logs but never
aborts the stream; tcp/relay reconnect on transient errors). Unlike the
one-shot dispatch, tcp/relay endpoints keep their connection open across
the whole stream instead of reconnecting per command.
Implementations§
Source§impl LiveDispatcher
impl LiveDispatcher
Sourcepub fn build(endpoints: &[ResolvedEndpoint]) -> Self
pub fn build(endpoints: &[ResolvedEndpoint]) -> Self
Build hold-open senders for every endpoint. Relay tokens are resolved
from their token_env now; an unset token becomes a sender that reports
the error per cast (preserving per-endpoint isolation).
Sourcepub fn cast(&mut self, cmd: &InjectionCommand) -> Vec<EndpointOutcome>
pub fn cast(&mut self, cmd: &InjectionCommand) -> Vec<EndpointOutcome>
Send one command to every endpoint, returning a per-endpoint outcome (errors are isolated, never propagated). Endpoints are cast to CONCURRENTLY (one scoped thread each, bd-bfc5a2) so a broadcast command reaches every device in ~the slowest endpoint’s time, with outcomes kept in endpoint order; a single endpoint runs inline.
Sourcepub fn endpoint_count(&self) -> usize
pub fn endpoint_count(&self) -> usize
Number of endpoints this dispatcher fans out to.