stun_rs/attributes/ice/
ice_controlling.rs

1const ICE_CONTROLLING: u16 = 0x802A;
2
3crate::common::integer_attribute!(
4    /// The controlling agent MUST include the [`IceControlling`] attribute in a
5    /// Binding request. The content of this value
6    /// is used as tiebreaker values when an ICE role
7    /// [conflict](https://datatracker.ietf.org/doc/html/rfc8445#section-7.3.1.1) occurs
8    ///
9    /// # Examples
10    ///```rust
11    /// # use stun_rs::attributes::ice::IceControlling;
12    /// let attr = IceControlling::from(1234);
13    /// assert_eq!(attr, 1234);
14    ///```
15    IceControlling,
16    ICE_CONTROLLING,
17    u64,
18);
19
20#[cfg(test)]
21mod tests {
22    use super::*;
23    use crate::StunAttribute;
24
25    #[test]
26    fn ice_controlling_stunt_attribute() {
27        let attr = StunAttribute::IceControlling(IceControlling::from(1234));
28        assert!(attr.is_ice_controlling());
29        assert!(attr.as_ice_controlling().is_ok());
30        assert!(attr.as_error_code().is_err());
31
32        assert!(!attr.attribute_type().is_comprehension_required());
33        assert!(attr.attribute_type().is_comprehension_optional());
34
35        let dbg_fmt = format!("{:?}", attr);
36        assert_eq!("IceControlling(IceControlling(1234))", dbg_fmt);
37    }
38}