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