moq_lite/ietf/
subscribe_namespace.rs1use std::borrow::Cow;
4
5use crate::{
6 coding::*,
7 ietf::{Message, Parameters, RequestId, Version},
8 Path,
9};
10
11use super::namespace::{decode_namespace, encode_namespace};
12
13#[derive(Clone, Debug)]
15pub struct SubscribeNamespace<'a> {
16 pub request_id: RequestId,
17 pub namespace: Path<'a>,
18}
19
20impl<'a> Message for SubscribeNamespace<'a> {
21 const ID: u64 = 0x11;
22
23 fn encode_msg<W: bytes::BufMut>(&self, w: &mut W, version: Version) {
24 self.request_id.encode(w, version);
25 encode_namespace(w, &self.namespace, version);
26 0u8.encode(w, version); }
28
29 fn decode_msg<R: bytes::Buf>(r: &mut R, version: Version) -> Result<Self, DecodeError> {
30 let request_id = RequestId::decode(r, version)?;
31 let namespace = decode_namespace(r, version)?;
32
33 let _params = Parameters::decode(r, version)?;
35
36 Ok(Self { namespace, request_id })
37 }
38}
39
40#[derive(Clone, Debug)]
42pub struct SubscribeNamespaceOk {
43 pub request_id: RequestId,
44}
45
46impl Message for SubscribeNamespaceOk {
47 const ID: u64 = 0x12;
48
49 fn encode_msg<W: bytes::BufMut>(&self, w: &mut W, version: Version) {
50 self.request_id.encode(w, version);
51 }
52
53 fn decode_msg<R: bytes::Buf>(r: &mut R, version: Version) -> Result<Self, DecodeError> {
54 let request_id = RequestId::decode(r, version)?;
55 Ok(Self { request_id })
56 }
57}
58#[derive(Clone, Debug)]
60pub struct SubscribeNamespaceError<'a> {
61 pub request_id: RequestId,
62 pub error_code: u64,
63 pub reason_phrase: Cow<'a, str>,
64}
65
66impl<'a> Message for SubscribeNamespaceError<'a> {
67 const ID: u64 = 0x13;
68
69 fn encode_msg<W: bytes::BufMut>(&self, w: &mut W, version: Version) {
70 self.request_id.encode(w, version);
71 self.error_code.encode(w, version);
72 self.reason_phrase.encode(w, version);
73 }
74
75 fn decode_msg<R: bytes::Buf>(r: &mut R, version: Version) -> Result<Self, DecodeError> {
76 let request_id = RequestId::decode(r, version)?;
77 let error_code = u64::decode(r, version)?;
78 let reason_phrase = Cow::<str>::decode(r, version)?;
79
80 Ok(Self {
81 request_id,
82 error_code,
83 reason_phrase,
84 })
85 }
86}
87
88#[derive(Clone, Debug)]
90pub struct UnsubscribeNamespace {
91 pub request_id: RequestId,
92}
93
94impl Message for UnsubscribeNamespace {
95 const ID: u64 = 0x14;
96
97 fn encode_msg<W: bytes::BufMut>(&self, w: &mut W, version: Version) {
98 self.request_id.encode(w, version);
99 }
100
101 fn decode_msg<R: bytes::Buf>(r: &mut R, version: Version) -> Result<Self, DecodeError> {
102 let request_id = RequestId::decode(r, version)?;
103 Ok(Self { request_id })
104 }
105}