parsers: add support for <optional/> in stream management feature
This commit is contained in:
parent
425be4bef4
commit
0f0759b207
3 changed files with 19 additions and 4 deletions
|
|
@ -30,6 +30,8 @@ XXXX-YY-ZZ RELEASER <admin@example.com>
|
||||||
- SASL Channel-Binding Type Capability (XEP-0440)
|
- SASL Channel-Binding Type Capability (XEP-0440)
|
||||||
- Stream Limits Advertisement (XEP-0478)
|
- Stream Limits Advertisement (XEP-0478)
|
||||||
- RFC 6120 stream errors
|
- RFC 6120 stream errors
|
||||||
|
* Improvements:
|
||||||
|
- Add support for `<optional/> in XEP-0198 feature advertisment
|
||||||
|
|
||||||
Version 0.21.0:
|
Version 0.21.0:
|
||||||
2024-07-25 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
|
2024-07-25 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
|
||||||
|
|
|
||||||
|
|
@ -268,7 +268,7 @@ mod tests {
|
||||||
|
|
||||||
let inline = auth.inline.unwrap();
|
let inline = auth.inline.unwrap();
|
||||||
assert_eq!(inline.bind2.unwrap().inline_features.len(), 0);
|
assert_eq!(inline.bind2.unwrap().inline_features.len(), 0);
|
||||||
assert_eq!(inline.sm.unwrap(), StreamManagement);
|
assert_eq!(inline.sm.unwrap(), StreamManagement { optional: None });
|
||||||
assert_eq!(inline.payloads.len(), 0);
|
assert_eq!(inline.payloads.len(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -140,11 +140,22 @@ pub struct Resumed {
|
||||||
pub previd: StreamId,
|
pub previd: StreamId,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Marker whose presence indicates that negotiating stream management is
|
||||||
|
/// optional.
|
||||||
|
#[derive(FromXml, AsXml, PartialEq, Debug, Clone)]
|
||||||
|
#[xml(namespace = ns::SM, name = "optional")]
|
||||||
|
pub struct Optional;
|
||||||
|
|
||||||
// TODO: add support for optional and required.
|
// TODO: add support for optional and required.
|
||||||
/// Represents availability of Stream Management in `<stream:features/>`.
|
/// Represents availability of Stream Management in `<stream:features/>`.
|
||||||
#[derive(FromXml, AsXml, PartialEq, Debug, Clone)]
|
#[derive(FromXml, AsXml, PartialEq, Debug, Clone)]
|
||||||
#[xml(namespace = ns::SM, name = "sm")]
|
#[xml(namespace = ns::SM, name = "sm")]
|
||||||
pub struct StreamManagement;
|
pub struct StreamManagement {
|
||||||
|
// TODO: replace with #[xml(flag)] once we have it.
|
||||||
|
/// `<optional/>` flag.
|
||||||
|
#[xml(child(default))]
|
||||||
|
pub optional: Option<Optional>,
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
|
@ -163,7 +174,8 @@ mod tests {
|
||||||
assert_size!(R, 0);
|
assert_size!(R, 0);
|
||||||
assert_size!(Resume, 16);
|
assert_size!(Resume, 16);
|
||||||
assert_size!(Resumed, 16);
|
assert_size!(Resumed, 16);
|
||||||
assert_size!(StreamManagement, 0);
|
assert_size!(StreamManagement, 1);
|
||||||
|
assert_size!(Optional, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_pointer_width = "64")]
|
#[cfg(target_pointer_width = "64")]
|
||||||
|
|
@ -178,7 +190,8 @@ mod tests {
|
||||||
assert_size!(R, 0);
|
assert_size!(R, 0);
|
||||||
assert_size!(Resume, 32);
|
assert_size!(Resume, 32);
|
||||||
assert_size!(Resumed, 32);
|
assert_size!(Resumed, 32);
|
||||||
assert_size!(StreamManagement, 0);
|
assert_size!(StreamManagement, 1);
|
||||||
|
assert_size!(Optional, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue