1 use {
2     super::errors::ProtocolControlMessageReaderError,
3     crate::messages::define::SetPeerBandwidthProperties, byteorder::BigEndian,
4     networkio::bytes_reader::BytesReader,
5 };
6 
7 pub struct ProtocolControlMessageReader {
8     pub reader: BytesReader,
9 }
10 
11 impl ProtocolControlMessageReader {
12     pub fn new(reader: BytesReader) -> Self {
13         Self { reader: reader }
14     }
15     pub fn read_set_chunk_size(&mut self) -> Result<u32, ProtocolControlMessageReaderError> {
16         let chunk_size = self.reader.read_u32::<BigEndian>()?;
17         return Ok(chunk_size);
18     }
19 
20     pub fn read_abort_message(&mut self) -> Result<u32, ProtocolControlMessageReaderError> {
21         let chunk_stream_id = self.reader.read_u32::<BigEndian>()?;
22         return Ok(chunk_stream_id);
23     }
24 
25     pub fn read_acknowledgement(&mut self) -> Result<u32, ProtocolControlMessageReaderError> {
26         let sequence_number = self.reader.read_u32::<BigEndian>()?;
27         return Ok(sequence_number);
28     }
29 
30     pub fn read_window_acknowledgement_size(
31         &mut self,
32     ) -> Result<u32, ProtocolControlMessageReaderError> {
33         let window_acknowledgement_size = self.reader.read_u32::<BigEndian>()?;
34         return Ok(window_acknowledgement_size);
35     }
36 
37     pub fn read_set_peer_bandwidth(
38         &mut self,
39     ) -> Result<SetPeerBandwidthProperties, ProtocolControlMessageReaderError> {
40         let window_size = self.reader.read_u32::<BigEndian>()?;
41         let limit_type = self.reader.read_u8()?;
42 
43         return Ok(SetPeerBandwidthProperties::new(window_size, limit_type));
44     }
45 }
46