1 use super::*;
2 
3 type Result<T> = std::result::Result<T, util::Error>;
4 
5 /// The data-part of an data-channel ACK message without the message type.
6 ///
7 /// # Memory layout
8 ///
9 /// ```plain
10 /// 0                   1                   2                   3
11 /// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
12 ///+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
13 ///|  Message Type |
14 ///+-+-+-+-+-+-+-+-+
15 /// ```
16 #[derive(Eq, PartialEq, Clone, Debug)]
17 pub struct DataChannelAck;
18 
19 impl MarshalSize for DataChannelAck {
marshal_size(&self) -> usize20     fn marshal_size(&self) -> usize {
21         0
22     }
23 }
24 
25 impl Marshal for DataChannelAck {
marshal_to(&self, _buf: &mut [u8]) -> Result<usize>26     fn marshal_to(&self, _buf: &mut [u8]) -> Result<usize> {
27         Ok(0)
28     }
29 }
30 
31 impl Unmarshal for DataChannelAck {
unmarshal<B>(_buf: &mut B) -> Result<Self> where Self: Sized, B: Buf,32     fn unmarshal<B>(_buf: &mut B) -> Result<Self>
33     where
34         Self: Sized,
35         B: Buf,
36     {
37         Ok(Self)
38     }
39 }
40 
41 #[cfg(test)]
42 mod tests {
43     use super::*;
44     use bytes::{Bytes, BytesMut};
45 
46     #[test]
test_channel_ack_unmarshal() -> Result<()>47     fn test_channel_ack_unmarshal() -> Result<()> {
48         let mut bytes = Bytes::from_static(&[]);
49 
50         let channel_ack = DataChannelAck::unmarshal(&mut bytes)?;
51 
52         assert_eq!(channel_ack, DataChannelAck);
53         Ok(())
54     }
55 
56     #[test]
test_channel_ack_marshal_size() -> Result<()>57     fn test_channel_ack_marshal_size() -> Result<()> {
58         let channel_ack = DataChannelAck;
59         let marshal_size = channel_ack.marshal_size();
60 
61         assert_eq!(marshal_size, 0);
62         Ok(())
63     }
64 
65     #[test]
test_channel_ack_marshal() -> Result<()>66     fn test_channel_ack_marshal() -> Result<()> {
67         let channel_ack = DataChannelAck;
68         let mut buf = BytesMut::with_capacity(0);
69         let bytes_written = channel_ack.marshal_to(&mut buf)?;
70         let bytes = buf.freeze();
71 
72         assert_eq!(bytes_written, channel_ack.marshal_size());
73         assert_eq!(&bytes[..], &[]);
74         Ok(())
75     }
76 }
77