Skip to main content

Candidate

Struct Candidate 

Source
pub struct Candidate {
    pub foundation: Foundation,
    pub component: ComponentId,
    pub transport: Transport,
    pub priority: Priority,
    pub address: IpAddr,
    pub port: u16,
    pub kind: CandidateType,
    pub related: Option<RelatedAddress>,
    pub extensions: Vec<(String, String)>,
}
Expand description

One a=candidate line (RFC 8839 §5.1). Media-level.

Fields§

§foundation: Foundation

The foundation.

§component: ComponentId

Which component of the stream this candidate is for.

§transport: Transport

The transport. Always Transport::Udp; see the type.

§priority: Priority

The priority, range-checked on parse.

§address: IpAddr

The transport address.

§port: u16

The port.

§kind: CandidateType

How the candidate was obtained.

§related: Option<RelatedAddress>

The raddr/rport pair.

RFC 8839 §5.1 requires it for srflx, prflx and relay and forbids it for host, and a candidate sipx generates must obey that. It is not enforced when reading: §5.1 gives the field to “diagnostics”, nothing in RFC 8445’s checks consults it, and dropping a peer’s only working candidate over a diagnostic field would trade a call for a nicety. A privacy-preserving agent writes 0.0.0.0/:: and port 9 here, which is ordinary.

§extensions: Vec<(String, String)>

cand-extension name/value pairs sipx does not model, in the order they arrived.

Kept rather than dropped, the same discipline crate::session applies to unknown SDP lines one level up: §5.1 says unknown extensions MUST be ignored, and ignoring an extension is not the same as deleting it from a description that is about to be relayed.

Implementations§

Source§

impl Candidate

Source

pub fn parse(value: &str) -> Option<Self>

Read an a=candidate value.

None means ignore this line and keep the description — RFC 8839 §5.1’s rule for a candidate carrying an FQDN or an address family the agent does not support, and by the same argument for a transport or candidate type sipx cannot check over. It also covers a line that is simply malformed, because the outcome the peer needs is identical.

Source

pub fn to_value(&self) -> String

Render as an a=candidate value.

Trait Implementations§

Source§

impl Clone for Candidate

Source§

fn clone(&self) -> Candidate

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 Candidate

Source§

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

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

impl PartialEq for Candidate

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 Candidate

Source§

impl StructuralPartialEq for Candidate

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> 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<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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,