Skip to main content

Slot

Enum Slot 

Source
#[non_exhaustive]
#[repr(usize)]
pub enum Slot {
Show 14 variants CongestionControl = 1_000, TwccSender = 2_000, Pacer = 3_000, NackResponder = 4_000, FecEncoder = 5_000, FecDecoder = 6_000, NackGenerator = 7_000, TwccReceiver = 8_000, Rfc8888 = 9_000, ReceiverReport = 10_000, SenderReport = 11_000, IntervalPli = 12_000, JitterBuffer = 13_000, Custom(usize),
}
Expand description

Where an interceptor belongs in the chain, measured by distance from the wire.

This is the chain contract’s ordering table expressed as data, so that one place decides it and a test can check a builder against it. The doc comments carry that table’s indices; the gaps are slots nothing fills yet.

Read walks the list forwards and write walks it in reverse, so a smaller slot is closer to the network in both directions.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

CongestionControl = 1_000

Congestion control: send history and feedback ingest.

The only position that sees every byte that leaves, because nothing exits the chain except through the interceptors ahead of it. Named here so an estimator of your own has a landmark.

§

TwccSender = 2_000

TwccSenderInterceptor — assigns the transport-wide sequence number the send history keys on.

§

Pacer = 3_000

PacerInterceptor — gates departures. Everything that generates a packet sits above it, so retransmissions, FEC repair and generated RTCP are all metered.

§

NackResponder = 4_000

NackResponderInterceptor — buffers sent RTP; its retransmissions still reach 3_000, 2_000, 1_000.

§

FecEncoder = 5_000

FlexFec03SendInterceptor — its repair packets still reach everything below.

§

FecDecoder = 6_000

FlexFec03ReceiveInterceptor — recovery before anything inspects sequence numbers.

§

NackGenerator = 7_000

NackGeneratorInterceptor — loss detected from arrivals, not from released packets.

§

TwccReceiver = 8_000

TwccReceiverInterceptor — records arrivals and reports them to the remote sender’s congestion controller. An arrival recorder, so it precedes the jitter buffer.

§

Rfc8888 = 9_000

Rfc8888Interceptor — the same job as Slot::TwccReceiver in a different format, and registering both double-counts, so a chain carries one or the other.

§

ReceiverReport = 10_000

ReceiverReportInterceptor — RFC 3550 reception quality, not congestion-control feedback. Still an arrival recorder, so it precedes the jitter buffer.

§

SenderReport = 11_000

SenderReportInterceptor — a generator with no read-side ordering constraint.

§

IntervalPli = 12_000

IntervalPliInterceptor — a generator with no read-side ordering constraint.

§

JitterBuffer = 13_000

JitterBufferInterceptor — delays and re-stamps, so every arrival recorder precedes it.

A recorder below this would report local playout instants to the remote as arrival times, and the remote’s congestion controller would read this endpoint’s buffering depth as network delay variation.

§

Custom(usize)

Anywhere else, for an interceptor this crate knows nothing about.

The named slots are spaced a thousand apart so that one of your own fits between any two of them without renumbering anything: Slot::from(6_500) sits after the FEC decoder and before the NACK generator. Reach it through From<usize> rather than by naming the variant, so the spelling stays the same if this gains a richer representation.

Implementations§

Source§

impl Slot

Source

pub const fn slot(self) -> usize

Where this sits, as a distance from the wire.

The named slots are the thousands; a custom one is whatever it was built from.

Trait Implementations§

Source§

impl Clone for Slot

Source§

fn clone(&self) -> Slot

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 Copy for Slot

Source§

impl Debug for Slot

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for Slot

Source§

impl From<Slot> for usize

Source§

fn from(slot: Slot) -> Self

Converts to this type from the input type.
Source§

impl From<usize> for Slot

A position of your own. See Slot::Custom.

Source§

fn from(position: usize) -> Self

Converts to this type from the input type.
Source§

impl Hash for Slot

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for Slot

Source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for Slot

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl PartialOrd for Slot

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more

Auto Trait Implementations§

§

impl Freeze for Slot

§

impl RefUnwindSafe for Slot

§

impl Send for Slot

§

impl Sync for Slot

§

impl Unpin for Slot

§

impl UnsafeUnpin for Slot

§

impl UnwindSafe for Slot

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