Skip to main content

Producer

Struct Producer 

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

Writes frames to a group in order.

Each group is delivered independently over a QUIC stream. Use Self::write_frame for simple single-buffer frames, or Self::create_frame for multi-chunk streaming writes.

Implementations§

Source§

impl Producer

Source

pub fn timescale(&self) -> Timescale

The parent track’s timescale.

Source

pub fn write_frame<B: IntoBytes>( &mut self, timestamp: Timestamp, data: B, ) -> Result<()>

A helper method to write a frame from a single byte buffer.

If you want to write multiple chunks, use Self::create_frame to get a frame producer. But an upfront size is required.

timestamp is converted into the parent track’s timescale. For data without a presentation time, pass Timestamp::now explicitly.

Source

pub fn write_frames<const N: usize>( &mut self, frames: &mut Buffer<N>, ) -> Result<()>

Write a whole batch of frames at once, draining frames.

One lock covers the batch, so an ingest with several frames in hand pays the group mutex and the track’s eviction settle once rather than per frame. Build the batch with frame::Buffer::push.

The batch is validated before anything is written, so a rejected frame leaves both the group and the buffer exactly as they were, ready to retry or redirect. Returns Error::FrameOpen if another handle is streaming a frame into this group, since appending around it would reorder the group.

Source

pub fn create_frame(&mut self, frame: Info) -> Result<Producer<'_>>

Create a frame with an upfront size and presentation timestamp, streamed in chunks. Borrows the group exclusively until the returned frame::Producer is finished or dropped, so only one frame is open at a time.

The timestamp is converted into the parent track’s timescale, so the scale you build it with doesn’t have to match the track. Returns Error::FrameTooLarge if the declared size exceeds the group’s byte budget (refused before allocating) or Error::TimestampMismatch if the timestamp can’t be converted (overflow).

Source

pub fn frame_count(&self) -> usize

Return the number of frames written so far (completed plus any in-flight).

Source

pub fn finish(&mut self) -> Result<()>

Mark the group as complete; no more frames will be written.

Borrows rather than consumes, so a later failure can still be reported through abort. The handle also keeps the cached frames readable.

Source

pub fn abort(self, err: Error) -> Result<()>

Abort the group with the given error.

Consumes the handle. Drops the cached frames so a stale Consumer can’t pin their buffers in memory forever; consumers that haven’t drained yet surface the abort error instead of the leftover cache.

Source

pub fn consume(&self) -> Consumer

Create a new consumer for the group.

Source

pub async fn closed(&self) -> Error

Block until the group is closed or aborted.

Source

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

Poll until the group is closed or aborted; ready with the cause.

Source

pub async fn unused(&self) -> Result<()>

Block until there are no active consumers.

Trait Implementations§

Source§

impl Clone for Producer

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 Deref for Producer

Source§

type Target = Info

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

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,

Source§

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

Source§

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

Source§

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

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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