sdp_nom/attributes/
dtls.rs1use nom::{branch::alt, bytes::complete::tag, combinator::map, IResult};
4
5#[cfg(test)]
6use crate::assert_line;
7use crate::parsers::*;
8
9#[derive(Clone, PartialEq, Eq)]
10#[cfg_attr(feature = "debug", derive(Debug))]
11#[cfg_attr(
12 feature = "serde",
13 derive(serde::Serialize, serde::Deserialize),
14 serde(rename_all = "camelCase")
15)]
16#[non_exhaustive]
17pub enum SetupRole {
18 Active,
19 Passive,
20 ActPass,
21}
22
23fn read_setup_role(input: &str) -> IResult<&str, SetupRole> {
24 alt((
25 map(tag("active"), |_| SetupRole::Active),
26 map(tag("passive"), |_| SetupRole::Passive),
27 map(tag("actpass"), |_| SetupRole::ActPass),
28 ))(input)
29}
30
31#[test]
32fn test_setup_role() {
33 assert_line!(read_setup_role, "active", SetupRole::Active);
34 assert_line!(read_setup_role, "passive", SetupRole::Passive);
35}
36
37pub fn setup_role_line(input: &str) -> IResult<&str, SetupRole> {
38 attribute("setup", read_setup_role)(input)
39}
40
41#[test]
42fn test_setup_role_line() {
43 assert_line!(setup_role_line, "a=setup:active", SetupRole::Active, print);
44 assert_line!(
45 setup_role_line,
46 "a=setup:actpass",
47 SetupRole::ActPass,
48 print
49 );
50 assert_line!(
51 setup_role_line,
52 "a=setup:passive",
53 SetupRole::Passive,
54 print
55 );
56}