Skip to main content

Config

Struct Config 

Source
#[non_exhaustive]
pub struct Config { pub hop: Hop, pub pool: Pool, pub cache_duration: Duration, pub default_max_age: Duration, pub update_hold: Duration, }
Expand description

An origin’s identity plus the cache pool its broadcasts inherit.

Construction config for an origin Producer. The origin passes its cache::Pool to every broadcast it creates, so every track and group beneath it shares one budget. Defaults to no byte target and the cache’s standard idle expiry.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§hop: Hop

The origin’s wire identity, appended to broadcast hop chains for loop detection and shortest-path routing.

§pool: Pool

The cache pool broadcasts under this origin charge their groups into. It flows down the ownership chain (origin -> broadcast -> track -> group): a track opens an account against it, and its groups charge through that. It has no byte target and uses cache::DEFAULT_EXPIRY by default; a relay sets a shared configured pool (assign Self::pool) so cached groups across the whole process share one policy.

§cache_duration: Duration

Ceiling on each track’s media-timestamp retention window under this origin. Each track’s own max_age is clamped down to this when the track binds, so a subscriber is never promised more history than the origin allows, regardless of what a publisher advertises. Wall-clock reclamation of idle content is separate: Self::pool’s expiry window. Duration::MAX (the default) imposes no ceiling, leaving each track’s own window in force.

§default_max_age: Duration

The retention window given to a track whose publisher advertises none.

moq-lite 05+ carries max_age in TRACK_INFO, so a track relayed over it keeps the window its publisher chose. Every moq-transport draft and moq-lite 01-04 have no such wire property, so a track arriving over one of them lands here instead. Raise it on a relay fronting a segmented egress (HLS/DASH), which needs a playlist window’s worth of history rather than the live edge. Defaults to track::DEFAULT_MAX_AGE, and Self::cache_duration still caps it.

§update_hold: Duration

How long an announce cursor holds a changed route before delivering it.

A new route and a removed one are delivered at once; only an update (a prefix whose best route changes while it stays reachable) waits, and a newer change during the wait replaces it. When a publisher withdraws, a relay that loses its best route but still holds routes derived from the withdrawn one sends nothing while the withdrawal wave removes them, then one retraction, instead of advertising each stale path in turn. It must outlast the wave’s spread across the mesh. Defaults to DEFAULT_UPDATE_HOLD; zero delivers updates at once.

Implementations§

Source§

impl Config

Source

pub fn new(hop: Hop) -> Self

Config for the given origin id with no byte target and the default idle expiry.

Trait Implementations§

Source§

impl Clone for Config

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 Debug for Config

Source§

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

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

impl Default for Config

Source§

fn default() -> Self

A fresh random hop with no byte target and the default idle expiry.

Source§

impl From<Hop> for Config

Source§

fn from(hop: Hop) -> Self

Config for the given origin id with the defaults of Config::new.

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 + ?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> 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