Skip to main content

DeviceV2ipSink

Struct DeviceV2ipSink 

Source
pub struct DeviceV2ipSink {
    pub addresses: V2ipStreamSources,
    pub audio_fmt: Option<V2ipAudioFormat>,
}
Expand description

The sink-side route a V2IP device is subscribed to, as the mesh believes it.

A route request addressed to the device sets this the moment it is seen, which is what every device on the mesh does with one. So a request the device refused, or that reached it while it was offline, reads back here as though it had taken effect. Only the device’s own configuration report confirms a route, and it sends that on its own schedule rather than in reply.

Addresses that read as unset mean “no route, or the sink could not work one out” - never “definitely not subscribed”. This block is the one part of a device configuration with no validity marker of its own, so a sender with nothing to say sends zeros and every receiver stores them. A sender leaves it empty when its own stream configuration does not resolve, and that covers more than having no route: a selected source whose record has not arrived yet, which is the state after a restart at either end, missing audio bay configuration, or any of the three streams failing its validity check. The audio format has a second gate of its own, so it can be absent while the addresses are not.

This is worth expecting rather than guarding against. Any scaling change makes the device rebuild and rebroadcast this block, and a write aimed at a remote bay sends it zeroed however it was requested - so the empty reading arrives most often during exactly the no-signal troubleshooting that prompted the change. A device’s periodic report puts a real route back within a minute of it having one.

An empty reading is applied rather than ignored on purpose. A sink that has genuinely dropped its route sends the same zeros, and so does every report after it, so refusing them would cache a route that nothing later could ever clear.

Fields§

§addresses: V2ipStreamSources

The streams the sink subscribes to.

§audio_fmt: Option<V2ipAudioFormat>

The resolved audio format, when the sender reported one.

Trait Implementations§

Source§

impl Clone for DeviceV2ipSink

Source§

fn clone(&self) -> DeviceV2ipSink

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 DeviceV2ipSink

Source§

impl Debug for DeviceV2ipSink

Source§

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

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

impl Default for DeviceV2ipSink

Source§

fn default() -> DeviceV2ipSink

Returns the “default value” for a type. Read more
Source§

impl Eq for DeviceV2ipSink

Source§

impl PartialEq for DeviceV2ipSink

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for DeviceV2ipSink

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, 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 = !

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.