Skip to main content

Session

Struct Session 

Source
pub struct Session {
Show 13 fields pub origin: Origin, pub session_name: String, pub session_description: Option<String>, pub uri: Option<String>, pub emails: Vec<String>, pub phones: Vec<String>, pub connection: Option<Connection>, pub bandwidths: Vec<Bandwidth>, pub times: Vec<Time>, pub time_zones: Vec<TimeZone>, pub key: Option<Key>, pub attributes: Vec<Attribute>, pub medias: Vec<Media>,
}
Expand description

SDP session description.

See RFC 8866 Section 5 for more details.

Fields§

§origin: Origin

Originator of the session.

§session_name: String

Name of the session.

§session_description: Option<String>

Session description.

§uri: Option<String>

URI to additional information about the session.

§emails: Vec<String>

E-Mail contacts for the session.

§phones: Vec<String>

Phone contacts for the session.

§connection: Option<Connection>

Connection data for the session.

§bandwidths: Vec<Bandwidth>

Bandwidth information for the session.

§times: Vec<Time>

Timing information for the session.

§time_zones: Vec<TimeZone>

Time zone information for the session.

§key: Option<Key>

Encryption key for the session.

§attributes: Vec<Attribute>

Attributes of the session.

§medias: Vec<Media>

Media descriptions for this session.

Implementations§

Source§

impl Session

Source

pub fn parse(data: &[u8]) -> Result<Session, ParserError>

Parse an SDP session description from a byte slice.

Examples found in repository?
examples/parse.rs (line 29)
4fn main() -> process::ExitCode {
5    let mut args = env::args();
6    let _ = args.next().unwrap();
7    let Some(file) = args.next() else {
8        eprintln!("Usage: parse [file.sdp]");
9        return process::ExitCode::FAILURE;
10    };
11
12    let mut file = match fs::File::open(file) {
13        Ok(file) => file,
14        Err(err) => {
15            eprintln!("Failed to open file: {err}");
16            return process::ExitCode::FAILURE;
17        }
18    };
19
20    let mut content = Vec::new();
21    match file.read_to_end(&mut content) {
22        Ok(_) => {}
23        Err(err) => {
24            eprintln!("Failed to read file: {err}");
25            return process::ExitCode::FAILURE;
26        }
27    };
28
29    let sdp = match sdp_types::Session::parse(&content) {
30        Ok(sdp) => sdp,
31        Err(err) => {
32            eprintln!("Failed to parse SDP: {err}");
33            return process::ExitCode::FAILURE;
34        }
35    };
36
37    println!("{sdp:#?}");
38
39    process::ExitCode::SUCCESS
40}
Source§

impl Session

Source

pub fn write<W: Write>(&self, w: &mut W) -> Result<(), Error>

Write the SDP session description to a std::io::Write.

Source§

impl Session

Source

pub fn new(origin: Origin, session_name: impl ToString) -> Self

Source

pub fn builder(origin: Origin, session_name: impl ToString) -> Session

Source

pub fn set_session_description(&mut self, session_description: impl ToString)

Source

pub fn set_uri(&mut self, uri: impl ToString)

Source

pub fn add_email(&mut self, email: impl ToString)

Source

pub fn add_emails(&mut self, emails: impl IntoIterator<Item = impl ToString>)

Source

pub fn add_phone(&mut self, phone: impl ToString)

Source

pub fn add_phones(&mut self, phones: impl IntoIterator<Item = impl ToString>)

Source

pub fn set_connection(&mut self, connection: impl Into<Connection>)

Source

pub fn add_bandwidth(&mut self, bandwidth: Bandwidth)

Source

pub fn add_bandwidths( &mut self, bandwidths: impl IntoIterator<Item = Bandwidth>, )

Source

pub fn add_time(&mut self, time: Time)

Source

pub fn add_times(&mut self, times: impl IntoIterator<Item = Time>)

Source

pub fn add_time_zone(&mut self, time_zone: TimeZone)

Source

pub fn add_time_zones(&mut self, time_zones: impl IntoIterator<Item = TimeZone>)

Source

pub fn set_encryption_key(&mut self, key: impl Into<Key>)

Source

pub fn add_attribute(&mut self, attribute: impl Into<Attribute>)

Source

pub fn add_attribute_from_str(&mut self, attribute: impl ToString)

Source

pub fn add_attribute_with_value( &mut self, attribute: impl ToString, value: impl ToString, )

Source

pub fn add_attributes( &mut self, attributes: impl IntoIterator<Item = impl Into<Attribute>>, )

Source

pub fn add_attributes_from_strs( &mut self, attributes: impl IntoIterator<Item = impl ToString>, )

Source

pub fn add_media(&mut self, media: Media)

Source

pub fn add_medias(&mut self, medias: impl IntoIterator<Item = Media>)

Source

pub fn has_attribute(&self, name: &str) -> bool

Checks if the given attribute exists.

Source

pub fn get_first_attribute_value<'a>( &'a self, name: &'a str, ) -> Option<Option<&'a str>>

Gets the first value of the given attribute.

The outter Option reflects the availability of the attribute. The inner Option reflects the optional value of the attribute.

Source

pub fn get_attribute_values<'a>( &'a self, name: &'a str, ) -> impl Iterator<Item = Option<&'a str>>

Gets an iterator over all attribute values of the given name.

Source

pub fn get_first_attribute_typed<T: TypedAttribute>( &self, ) -> Option<Result<T, AttributeError>>

Gets the first value of the given typed attribute.

Source

pub fn attributes_typed<'a, T: TypedAttribute>( &'a self, ) -> impl Iterator<Item = Result<T, AttributeError>> + 'a

Gets an iterator over all attribute values of the given name.

Each item represents the attribute parsing Result.

The iterator does not terminate upon an error item; continues with the next attribute

Trait Implementations§

Source§

impl Clone for Session

Source§

fn clone(&self) -> Session

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 Session

Source§

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

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

impl Eq for Session

Source§

impl PartialEq for Session

Source§

fn eq(&self, other: &Session) -> 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 Session

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