struct Registration {
tx: UnboundedSender<SeatUpdate>,
role: SubscriberRole,
}Expand description
One subscriber’s end of the fan-out.
The channel is unbounded, and what bounds it instead is the connection.
A bounded channel forces the sender to choose between blocking - which
would hold every seat’s stream behind one slow reader, under this fan-out’s
own lock - and dropping a frame, which rule 25 forbids. So the sender never
waits, and the receiving connection drains continuously: a socket that
stops accepting its frames is cut at WRITE_BOUND (60 s), so a subscriber
that keeps up holds a batch’s worth and one that does not is disconnected
rather than queued against forever. The per-frame weight is a pointer now,
shared with the ring below rather than copied per subscriber.
Fields§
§tx: UnboundedSender<SeatUpdate>§role: SubscriberRoleAuto Trait Implementations§
impl Freeze for Registration
impl RefUnwindSafe for Registration
impl Send for Registration
impl Sync for Registration
impl Unpin for Registration
impl UnsafeUnpin for Registration
impl UnwindSafe for Registration
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§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> ⓘ
Converts
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> ⓘ
Converts
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