Skip to main content

TrackConsumer

Struct TrackConsumer 

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

A consumer for a track, used to read groups.

Implementations§

Source§

impl TrackConsumer

Source

pub fn poll_recv_group( &mut self, waiter: &Waiter, ) -> Poll<Result<Option<GroupConsumer>>>

Poll for the next group in arrival order, without blocking.

Returns every group exactly once in the order it landed on the wire — which may be out of sequence due to network reordering or loss. Use Self::poll_next_group if you only want groups whose sequence number is higher than any previously returned.

Returns Poll::Ready(Ok(Some(group))) when a group is available, Poll::Ready(Ok(None)) when the track is finished, Poll::Ready(Err(e)) when the track has been aborted, or Poll::Pending when no group is available yet.

Source

pub async fn recv_group(&mut self) -> Result<Option<GroupConsumer>>

Receive the next group in arrival order.

Every group is returned exactly once, in the order it landed on the wire — which may be out of sequence due to network reordering or loss. Use Self::next_group if you only want groups whose sequence number is higher than any previously returned.

Source

pub fn poll_next_group( &mut self, waiter: &Waiter, ) -> Poll<Result<Option<GroupConsumer>>>

Poll for the next group with a higher sequence number than any previously returned.

Late arrivals (sequence at or below the last returned) are silently skipped, so this produces a monotonically increasing sequence at the cost of dropping out-of-order groups. Use Self::poll_recv_group to see every group in arrival order instead.

Source

pub async fn next_group(&mut self) -> Result<Option<GroupConsumer>>

Return the next group with a higher sequence number than any previously returned.

Late arrivals (sequence at or below the last returned) are silently skipped, so this produces a monotonically increasing sequence at the cost of dropping out-of-order groups. Use Self::recv_group to see every group in arrival order instead.

Source

pub fn poll_read_frame( &mut self, waiter: &Waiter, ) -> Poll<Result<Option<Bytes>>>

A helper that calls Self::poll_next_group and returns its first frame, skipping the rest of the group. Intended for single-frame groups (see TrackProducer::write_frame).

Source

pub async fn read_frame(&mut self) -> Result<Option<Bytes>>

Read a single full frame from the next group in sequence order.

See Self::poll_read_frame for semantics.

Source

pub fn poll_get_group( &self, waiter: &Waiter, sequence: u64, ) -> Poll<Result<Option<GroupConsumer>>>

Poll for the group with the given sequence, without blocking.

Source

pub async fn get_group(&self, sequence: u64) -> Result<Option<GroupConsumer>>

Wait until the group with the given sequence becomes available.

Resolves to Some(GroupConsumer) once the group is in the cache. Resolves to None only when sequence is at or past the track’s final_sequence (set by finish() / finish_at()), since such a group can never be produced. Sequences below final_sequence still wait, since older groups may still arrive out of order.

Source

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

Poll for track closure, without blocking.

Source

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

Block until the track is closed.

Returns Ok() is the track was cleanly finished.

Source

pub fn is_clone(&self, other: &Self) -> bool

Whether other was cloned from this consumer (shares the same underlying state).

Source

pub fn poll_finished(&mut self, waiter: &Waiter) -> Poll<Result<u64>>

Poll for the total number of groups in the track.

Source

pub async fn finished(&mut self) -> Result<u64>

Block until the track is finished, returning the total number of groups.

Source

pub fn start_at(&mut self, sequence: u64)

Start the consumer at the specified sequence.

Source

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

Return the latest sequence number in the track.

Trait Implementations§

Source§

impl Clone for TrackConsumer

Source§

fn clone(&self) -> TrackConsumer

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 TrackConsumer

Source§

type Target = Track

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<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 = 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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
Source§

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

Source§

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