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