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