Skip to main content

Request

Struct Request 

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

A consumer’s request for a single past group, handed to a handler via track::Dynamic::requested_group.

The handler fulfills it by calling Self::accept, which inserts the group into the track cache (resolving every track::Consumer::fetch_group that joined the attempt) and returns a Producer to fill. A relay typically opens a wire FETCH and waits for the publisher to answer before accepting, so a group the publisher lacks is rejected rather than accepted and then aborted. The request carries its own producer handle, so it works the same whether or not the track has been accepted yet.

Implementations§

Source§

impl Request

Source

pub fn sequence(&self) -> u64

The group sequence the consumer wants.

Source

pub fn priority(&self) -> u8

The delivery priority the consumer requested for this group.

Source

pub fn frame_start(&self) -> u64

The first frame of the group the consumer wants; 0 is the whole group.

The group accept returns already starts here, so the frames a handler writes carry the indices they have in the group rather than restarting at 0. A handler serving from elsewhere moves it with start_at before the first frame.

There is no end: the handler fetches through the end of the group so the result is cacheable for anyone (see group::Fetch::frame_start).

Source

pub fn accept(self, info: impl Into<Option<Info>>) -> Result<Producer>

Insert the fetched group into the track cache, resolving the waiting Consumer::fetch_group, and return a group::Producer to fill.

The group’s timescale comes from the track’s Info. info sets that info if the track hasn’t been accepted yet (a fetch with no live subscription), and is ignored once accepted. Returns Error::Duplicate if the group is already present, or the track’s abort error if it closed while pending.

Source

pub fn reject(self, err: Error)

Reject the fetch, resolving every joined Consumer::fetch_group with err.

Source

pub fn poll_unused(&self, waiter: &Waiter) -> Poll<()>

Poll for the request becoming unused (every waiting Consumer::fetch_group dropped), so a handler can stop serving and drop the request.

Once ready, a later fetch of the group starts a fresh request rather than joining this abandoned one.

Trait Implementations§

Source§

impl Drop for Request

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

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> 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, 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