145abfa1fSHarlanC use {
245abfa1fSHarlanC     super::errors::ProtocolControlMessageReaderError,
345abfa1fSHarlanC     crate::messages::define::SetPeerBandwidthProperties, byteorder::BigEndian,
488325f54SHarlanC     bytesio::bytes_reader::BytesReader,
545abfa1fSHarlanC };
68a60cc5aSHarlanC 
78a60cc5aSHarlanC pub struct ProtocolControlMessageReader {
84ff0d3acSHarlanC     pub reader: BytesReader,
98a60cc5aSHarlanC }
108a60cc5aSHarlanC 
118a60cc5aSHarlanC impl ProtocolControlMessageReader {
new(reader: BytesReader) -> Self124ff0d3acSHarlanC     pub fn new(reader: BytesReader) -> Self {
13*85c0af6aSLuca Barbato         Self { reader }
148a60cc5aSHarlanC     }
read_set_chunk_size(&mut self) -> Result<u32, ProtocolControlMessageReaderError>158a60cc5aSHarlanC     pub fn read_set_chunk_size(&mut self) -> Result<u32, ProtocolControlMessageReaderError> {
168a60cc5aSHarlanC         let chunk_size = self.reader.read_u32::<BigEndian>()?;
17*85c0af6aSLuca Barbato         Ok(chunk_size)
188a60cc5aSHarlanC     }
198a60cc5aSHarlanC 
read_abort_message(&mut self) -> Result<u32, ProtocolControlMessageReaderError>208a60cc5aSHarlanC     pub fn read_abort_message(&mut self) -> Result<u32, ProtocolControlMessageReaderError> {
218a60cc5aSHarlanC         let chunk_stream_id = self.reader.read_u32::<BigEndian>()?;
22*85c0af6aSLuca Barbato         Ok(chunk_stream_id)
238a60cc5aSHarlanC     }
248a60cc5aSHarlanC 
read_acknowledgement(&mut self) -> Result<u32, ProtocolControlMessageReaderError>258a60cc5aSHarlanC     pub fn read_acknowledgement(&mut self) -> Result<u32, ProtocolControlMessageReaderError> {
268a60cc5aSHarlanC         let sequence_number = self.reader.read_u32::<BigEndian>()?;
27*85c0af6aSLuca Barbato         Ok(sequence_number)
288a60cc5aSHarlanC     }
298a60cc5aSHarlanC 
read_window_acknowledgement_size( &mut self, ) -> Result<u32, ProtocolControlMessageReaderError>308a60cc5aSHarlanC     pub fn read_window_acknowledgement_size(
318a60cc5aSHarlanC         &mut self,
328a60cc5aSHarlanC     ) -> Result<u32, ProtocolControlMessageReaderError> {
338a60cc5aSHarlanC         let window_acknowledgement_size = self.reader.read_u32::<BigEndian>()?;
34*85c0af6aSLuca Barbato         Ok(window_acknowledgement_size)
358a60cc5aSHarlanC     }
368a60cc5aSHarlanC 
read_set_peer_bandwidth( &mut self, ) -> Result<SetPeerBandwidthProperties, ProtocolControlMessageReaderError>378a60cc5aSHarlanC     pub fn read_set_peer_bandwidth(
388a60cc5aSHarlanC         &mut self,
398a60cc5aSHarlanC     ) -> Result<SetPeerBandwidthProperties, ProtocolControlMessageReaderError> {
408a60cc5aSHarlanC         let window_size = self.reader.read_u32::<BigEndian>()?;
418a60cc5aSHarlanC         let limit_type = self.reader.read_u8()?;
428a60cc5aSHarlanC 
43*85c0af6aSLuca Barbato         Ok(SetPeerBandwidthProperties::new(window_size, limit_type))
448a60cc5aSHarlanC     }
458a60cc5aSHarlanC }
46