Skip to main content

BroadcastSlotHandle

Struct BroadcastSlotHandle 

Source
pub struct BroadcastSlotHandle<M, K>
where M: Send + Sync + Clone + 'static, K: Send + Sync + Clone + 'static,
{ /* private fields */ }
Available on crate features extractors and reassembler and session only.
Expand description

Per-subscriber broadcast handle. Each Clone yields a new subscriber with its own private queue; every push to the owning slot fans out to every live subscriber.

§Comparison with super::SlotHandle

AspectSlotHandleBroadcastSlotHandle
Clone semanticsCompetitive consumer (MPMC)Broadcast (every clone sees every message)
Per-push costO(1) atomicO(subscribers) clones + pushes
M boundSendSend + Clone
Memory per subscriberShares one queueOne private queue each

§Drop semantics

Dropping a subscriber removes its queue from the broadcast set on the next push (best-effort prune via Weak::upgrade). Slow subscribers’ queues grow until they’re drained or dropped — bound externally via Self::drain_n from plan 149.

Implementations§

Source§

impl<M, K> BroadcastSlotHandle<M, K>
where M: Send + Sync + Clone + 'static, K: Send + Sync + Clone + 'static,

Source

pub fn drain(&mut self, out: &mut Vec<SlotMessage<M, K>>) -> usize

Drain every message this subscriber has received since the last call, into out. Returns the count.

Source

pub fn drain_n(&mut self, out: &mut Vec<SlotMessage<M, K>>, max: usize) -> usize

Bounded variant — drain at most max messages.

Source

pub fn pending(&self) -> usize

Pending message count for this subscriber.

Source

pub fn subscribers(&self) -> usize

Active subscriber count across the broadcast set (best-effort; read under a lock).

Source

pub fn parser_kind(&self) -> ParserKind

Parser-kind identity from registration.

Trait Implementations§

Source§

impl<M, K> Clone for BroadcastSlotHandle<M, K>
where M: Send + Sync + Clone + 'static, K: Send + Sync + Clone + 'static,

Source§

fn clone(&self) -> Self

New subscriber: gets its own queue inside the broadcast set. Subsequent pushes go to every live queue. The new subscriber sees only messages pushed AFTER this clone call (no replay of earlier pushes).

1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<M, K> Debug for BroadcastSlotHandle<M, K>
where M: Send + Sync + Clone + 'static, K: Send + Sync + Clone + 'static,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<M, K> SlotDrain<M, K> for BroadcastSlotHandle<M, K>
where M: Send + Sync + Clone + 'static, K: Send + Sync + Clone + 'static,

Source§

fn drain(&mut self, out: &mut Vec<SlotMessage<M, K>>) -> usize

Drain all currently-queued messages into out. Returns the count drained.
Source§

fn drain_n(&mut self, out: &mut Vec<SlotMessage<M, K>>, max: usize) -> usize

Drain at most max messages into out. Returns the count drained (<= max).
Source§

fn pending(&self) -> usize

Number of messages currently queued for this handle.
Source§

fn parser_kind(&self) -> ParserKind

Typed parser-kind identity for the registered parser.

Auto Trait Implementations§

§

impl<M, K> Freeze for BroadcastSlotHandle<M, K>

§

impl<M, K> RefUnwindSafe for BroadcastSlotHandle<M, K>

§

impl<M, K> Send for BroadcastSlotHandle<M, K>

§

impl<M, K> Sync for BroadcastSlotHandle<M, K>

§

impl<M, K> Unpin for BroadcastSlotHandle<M, K>

§

impl<M, K> UnsafeUnpin for BroadcastSlotHandle<M, K>

§

impl<M, K> UnwindSafe for BroadcastSlotHandle<M, K>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more