Skip to main content

moq_transport/message/
fetch_error.rs

1use crate::coding::{Decode, DecodeError, Encode, EncodeError, ReasonPhrase};
2
3// TODO SLG - The next draft is going to merge all these error messages to a
4//            common RequestError message, so we won't do a lot of work on these
5//            existing messages.  We should add an enum for all the various error codes.
6
7/// Sent by the subscriber to reject an Announce.
8#[derive(Clone, Debug)]
9pub struct FetchError {
10    pub id: u64,
11
12    // An error code.
13    pub error_code: u64,
14
15    // An optional, human-readable reason.
16    pub reason_phrase: ReasonPhrase,
17}
18
19impl Decode for FetchError {
20    fn decode<R: bytes::Buf>(r: &mut R) -> Result<Self, DecodeError> {
21        let id = u64::decode(r)?;
22        let error_code = u64::decode(r)?;
23        let reason_phrase = ReasonPhrase::decode(r)?;
24
25        Ok(Self {
26            id,
27            error_code,
28            reason_phrase,
29        })
30    }
31}
32
33impl Encode for FetchError {
34    fn encode<W: bytes::BufMut>(&self, w: &mut W) -> Result<(), EncodeError> {
35        self.id.encode(w)?;
36        self.error_code.encode(w)?;
37        self.reason_phrase.encode(w)?;
38
39        Ok(())
40    }
41}