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, reads FETCH_OK, then accepts. 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
impl Request
Sourcepub fn frame_start(&self) -> u64
pub fn frame_start(&self) -> u64
The first frame of the group the consumer wants; 0 is the whole group.
A handler serving this must start_at it, so the frames
it writes carry the indices they have in the group rather than restarting at 0.
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).
Sourcepub fn accept(self, info: impl Into<Option<Info>>) -> Result<Producer>
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.
Sourcepub fn reject(self, err: Error)
pub fn reject(self, err: Error)
Reject the fetch, resolving every joined Consumer::fetch_group with err.