use { super::{define, errors}, crate::messages::define as message_define, byteorder::BigEndian, bytesio::bytes_reader::BytesReader, }; pub struct EventMessagesReader { pub reader: BytesReader, } impl EventMessagesReader { pub fn new(reader: BytesReader) -> Self { Self { reader } } pub fn parse_event( &mut self, ) -> Result { let event_type = self.reader.read_u16::()?; match event_type { define::RTMP_EVENT_SET_BUFFER_LENGTH => { self.read_set_buffer_length() } define::RTMP_EVENT_STREAM_BEGIN => { self.read_stream_begin() } define::RTMP_EVENT_STREAM_IS_RECORDED => { self.read_stream_is_recorded() } _ => { Err(errors::EventMessagesError { value: errors::EventMessagesErrorValue::UnknowEventMessageType, }) } } } pub fn read_set_buffer_length( &mut self, ) -> Result { let stream_id = self.reader.read_u32::()?; let ms = self.reader.read_u32::()?; Ok(message_define::RtmpMessageData::SetBufferLength { stream_id, buffer_length: ms, }) } pub fn read_stream_begin( &mut self, ) -> Result { let stream_id = self.reader.read_u32::()?; Ok(message_define::RtmpMessageData::StreamBegin { stream_id, }) } pub fn read_stream_is_recorded( &mut self, ) -> Result { let stream_id = self.reader.read_u32::()?; Ok(message_define::RtmpMessageData::StreamIsRecorded { stream_id, }) } }