Skip to main content

PublishedSourceDescriptor

Struct PublishedSourceDescriptor 

Source
pub struct PublishedSourceDescriptor {
    source_id: PublishedSourceId,
    owner: PublishedSourceOwner,
    stream_id: UserStreamId,
    media_kind: MediaKind,
    policy: SourcePolicy,
    mid: Option<Mid>,
    encodings: Vec<SourceEncodingDescriptor>,
    selectable_encoding_indices: Vec<usize>,
}
Expand description

Authoritative room-domain description of one published source.

The descriptor groups the stable source id, logical publishing user, caller stream id, media kind, source policy and negotiated source facts required by recording, diagnostics and transport projection. It deliberately excludes router producer state, socket state and packet-loop routing tables.

§Invariants

A descriptor must contain at least one encoding, every encoding id must be unique and every encoding must point back to this descriptor’s source id. Self::new validates these rules so callers do not keep a parallel identity model by accident.

Fields§

§source_id: PublishedSourceId

Runtime source identity shared by every view of this publication.

§owner: PublishedSourceOwner

Logical publishing user used by room policy and owner indexes.

Stale connection checks use the source transport session key because PublishedSourceOwner does not carry a ConnectionId.

§stream_id: UserStreamId

User-scoped stream identity supplied with the publish intent.

§media_kind: MediaKind

Router-facing media family used by negotiation and route planning.

§policy: SourcePolicy

Room policy captured by the publish intent for this source.

§mid: Option<Mid>

Negotiated media-section identity when the RTC edge has one.

§encodings: Vec<SourceEncodingDescriptor>

Advertised encodings that belong to this logical source.

§selectable_encoding_indices: Vec<usize>

Source-policy selectable encodings ordered by receiver budget priority.

Implementations§

Source§

impl PublishedSourceDescriptor

Source

pub fn new( parts: PublishedSourceDescriptorParts, ) -> Result<Self, SourceModelError>

Builds a source descriptor after checking the source graph invariants.

Failure means the caller assembled an invalid room-domain source and should abort the surrounding publish commit before any registry state is made authoritative.

§Errors

Returns SourceModelError when the descriptor has no encodings, uses a duplicate encoding id or contains an encoding whose source id points elsewhere

Source

pub const fn source_id(&self) -> PublishedSourceId

Source

pub const fn owner(&self) -> &PublishedSourceOwner

Source

pub const fn stream_id(&self) -> &UserStreamId

Source

pub const fn media_kind(&self) -> MediaKind

Source

pub const fn policy(&self) -> SourcePolicy

Source

pub fn mid(&self) -> Option<&Mid>

Source

pub fn encodings(&self) -> impl Iterator<Item = &SourceEncodingDescriptor>

Source

pub fn selectable_encodings( &self, ) -> impl Iterator<Item = &SourceEncodingDescriptor>

Returns encodings in receiver-policy rank order.

Selection is disabled unless every encoding has a RID because packet-gate projection cannot represent the full ladder otherwise. If any maximum bitrate is known, known values sort first in ascending order. Otherwise known upload roles sort first from DegradedThumbnail to Featured. Missing sort keys and ties preserve publisher order.

Source

pub fn selectable_encoding_count(&self) -> usize

Source

pub fn selectable_encoding_by_rank( &self, rank: usize, ) -> Option<&SourceEncodingDescriptor>

Source

pub fn encoding( &self, encoding_id: SourceEncodingId, ) -> Option<&SourceEncodingDescriptor>

Returns an encoding by source-encoding identity.

Missing values are normal for best-effort callers such as diagnostics or selector resolution after a source changed. Mutation paths should treat a miss as stale work and re-read authoritative room state.

Trait Implementations§

Source§

impl Clone for PublishedSourceDescriptor

Source§

fn clone(&self) -> PublishedSourceDescriptor

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PublishedSourceDescriptor

Source§

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

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

impl PartialEq for PublishedSourceDescriptor

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for PublishedSourceDescriptor

Source§

impl StructuralPartialEq for PublishedSourceDescriptor

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.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> CryptoSafe for T
where T: Send + Sync + Debug,

§

impl<T> CryptoSafe for T

§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,