moq_lite/ietf/
subscribe_announces.rs1use std::borrow::Cow;
4
5use crate::{coding::*, Path};
6
7use super::util::{decode_namespace, encode_namespace};
8
9#[derive(Clone, Debug)]
11pub struct SubscribeAnnounces<'a> {
12 pub namespace: Path<'a>,
13}
14
15impl<'a> Message for SubscribeAnnounces<'a> {
16 fn encode<W: bytes::BufMut>(&self, w: &mut W) {
17 encode_namespace(w, &self.namespace);
18 0u8.encode(w); }
20
21 fn decode<R: bytes::Buf>(r: &mut R) -> Result<Self, DecodeError> {
22 let namespace = decode_namespace(r)?;
23
24 let num_params = u8::decode(r)?;
25 if num_params != 0 {
26 return Err(DecodeError::InvalidValue);
27 }
28
29 Ok(Self { namespace })
30 }
31}
32
33#[derive(Clone, Debug)]
35pub struct SubscribeAnnouncesOk<'a> {
36 pub namespace: Path<'a>,
37}
38
39impl<'a> Message for SubscribeAnnouncesOk<'a> {
40 fn encode<W: bytes::BufMut>(&self, w: &mut W) {
41 encode_namespace(w, &self.namespace);
42 }
43
44 fn decode<R: bytes::Buf>(r: &mut R) -> Result<Self, DecodeError> {
45 let namespace = decode_namespace(r)?;
46 Ok(Self { namespace })
47 }
48}
49
50#[derive(Clone, Debug)]
52pub struct SubscribeAnnouncesError<'a> {
53 pub namespace: Path<'a>,
54 pub error_code: u64,
55 pub reason_phrase: Cow<'a, str>,
56}
57
58impl<'a> Message for SubscribeAnnouncesError<'a> {
59 fn encode<W: bytes::BufMut>(&self, w: &mut W) {
60 encode_namespace(w, &self.namespace);
61 self.error_code.encode(w);
62 self.reason_phrase.encode(w);
63 }
64
65 fn decode<R: bytes::Buf>(r: &mut R) -> Result<Self, DecodeError> {
66 let namespace = decode_namespace(r)?;
67 let error_code = u64::decode(r)?;
68 let reason_phrase = Cow::<str>::decode(r)?;
69
70 Ok(Self {
71 namespace,
72 error_code,
73 reason_phrase,
74 })
75 }
76}
77
78#[derive(Clone, Debug)]
80pub struct UnsubscribeAnnounces<'a> {
81 pub namespace: Path<'a>,
82}
83
84impl<'a> Message for UnsubscribeAnnounces<'a> {
85 fn encode<W: bytes::BufMut>(&self, w: &mut W) {
86 encode_namespace(w, &self.namespace);
87 }
88
89 fn decode<R: bytes::Buf>(r: &mut R) -> Result<Self, DecodeError> {
90 let namespace = decode_namespace(r)?;
91 Ok(Self { namespace })
92 }
93}