Skip to main content

Consumer

Struct Consumer 

Source
pub struct Consumer { /* private fields */ }
Expand description

A handle to a single track within a broadcast.

Obtained from broadcast::Consumer::track. Holding it sends nothing to the publisher; it just names a track you can subscribe to (a live, ongoing stream of groups) later. The same handle can be subscribed to multiple times, and clones are cheap.

A track reached through a route-fed broadcast is spliced: it is backed by one or more per-session tracks joined at group boundaries, and this handle reads across them transparently.

Implementations§

Source§

impl Consumer

Source

pub fn name(&self) -> &str

The track name this handle is bound to.

Source

pub fn broadcast(&self) -> &Info

The broadcast this track belongs to, as reached through the handle it came from. Its path is what a catalog’s relative broadcast references resolve against.

Source

pub fn subscribe( &self, subscription: impl Into<Option<Subscription>>, ) -> Pending<Subscribing> ⓘ

Open a live subscription.

Registers the subscription on the track and returns a kio::Pending that resolves to the Subscriber once the track info is available, or the track’s abort error (or Error::Dropped) if it is already closed.

The read cursor starts at the group the subscription named (its floor), or 0. Subscription::max_age is what asks for data: delivery skips everything above the floor that the budget convicts, so the default budget of zero delivers only the latest group and a larger one reaches back over what it can still use.

Source

pub fn fetch_group( &self, sequence: u64, options: impl Into<Option<Fetch>>, ) -> Pending<Fetching> ⓘ

Fetching a single past group, without holding a live subscription.

Returns a kio::Pending that resolves to the group::Consumer: immediately if the group is cached, otherwise once a Dynamic serves the request (a wire FETCH for a relay). options accepts None, a group::Fetch, or group::Fetch::default().

The returned future resolves to Error::NotFound when the group can never be served (past the final sequence, or no Dynamic on the track), the handler’s rejection (a relay’s upstream miss is StreamError::NotFound), or the track’s abort error if it’s already closed. Concurrent fetches for the same sequence coalesce onto one handler request.

Source

pub fn query(&self) -> Pending<Querying> ⓘ

Resolve the track’s Info without subscribing.

A Consumer is a lazy handle, so the info may not be known yet: this waits for the producer to Request::accept the track (a wire TRACK_INFO round-trip for a relay), and errors with the track’s abort error if it closes first. Subscriber::info is the already-resolved counterpart.

Source

pub fn latest(&self) -> Option<u64>

Return the latest group sequence in the track, or None before any group.

Trait Implementations§

Source§

impl Clone for Consumer

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Consume<Consumer> for Producer

Source§

fn consume(&self) -> Consumer

Derive a read view (a consumer) from this handle.
Source§

impl Consume<Consumer> for Consumer

Source§

fn consume(&self) -> Consumer

Derive a read view (a consumer) from this handle.

Auto Trait Implementations§

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<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> MaybeSend for T
where T: Send,

Source§

impl<T> MaybeSend for T
where T: Send + ?Sized,

Source§

impl<T> MaybeSend for T
where T: Send,

Source§

impl<T> MaybeSync for T
where T: Sync,

Source§

impl<T> MaybeSync for T
where T: Sync,

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 = !

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

fn try_from(value: U) -> Result<T, !>

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