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