1 use super::define; 2 use super::errors; 3 use crate::messages::define as message_define; 4 use byteorder::BigEndian; 5 use netio::bytes_reader::BytesReader; 6 7 pub struct EventMessagesReader { 8 pub reader: BytesReader, 9 } 10 11 impl EventMessagesReader { 12 pub fn new(reader: BytesReader) -> Self { 13 Self { reader: reader } 14 } 15 16 pub fn parse_event( 17 &mut self, 18 ) -> Result<message_define::RtmpMessageData, errors::EventMessagesError> { 19 let event_type = self.reader.read_u16::<BigEndian>()?; 20 match event_type { 21 define::RTMP_EVENT_SET_BUFFER_LENGTH => { 22 return self.read_set_buffer_length(); 23 } 24 25 _ => { 26 return Err(errors::EventMessagesError { 27 value: errors::EventMessagesErrorValue::UnknowEventMessageType, 28 }) 29 } 30 } 31 } 32 pub fn read_set_buffer_length( 33 &mut self, 34 ) -> Result<message_define::RtmpMessageData, errors::EventMessagesError> { 35 let stream_id = self.reader.read_u32::<BigEndian>()?; 36 let ms = self.reader.read_u32::<BigEndian>()?; 37 38 return Ok(message_define::RtmpMessageData::SetBufferLength { 39 stream_id: stream_id, 40 buffer_length: ms, 41 }); 42 } 43 } 44