Skip to main content

moq_transport/message/
pubilsh_namespace_done.rs

1use crate::coding::{Decode, DecodeError, Encode, EncodeError, TrackNamespace};
2
3/// Sent by the publisher to terminate a PUBLISH_NAMESPACE.
4#[derive(Clone, Debug, Eq, PartialEq)]
5pub struct PublishNamespaceDone {
6    pub track_namespace: TrackNamespace,
7}
8
9impl Decode for PublishNamespaceDone {
10    fn decode<R: bytes::Buf>(r: &mut R) -> Result<Self, DecodeError> {
11        let track_namespace = TrackNamespace::decode(r)?;
12
13        Ok(Self { track_namespace })
14    }
15}
16
17impl Encode for PublishNamespaceDone {
18    fn encode<W: bytes::BufMut>(&self, w: &mut W) -> Result<(), EncodeError> {
19        self.track_namespace.encode(w)?;
20
21        Ok(())
22    }
23}
24
25#[cfg(test)]
26mod tests {
27    use super::*;
28    use bytes::BytesMut;
29
30    #[test]
31    fn encode_decode() {
32        let mut buf = BytesMut::new();
33
34        let msg = PublishNamespaceDone {
35            track_namespace: TrackNamespace::from_utf8_path("test/path/to/resource"),
36        };
37        msg.encode(&mut buf).unwrap();
38        let decoded = PublishNamespaceDone::decode(&mut buf).unwrap();
39        assert_eq!(decoded, msg);
40    }
41}