scuffle_rtmp/protocol_control_messages/
reader.rs1use std::io::{self, Cursor};
4
5use byteorder::{BigEndian, ReadBytesExt};
6
7use super::{ProtocolControlMessageSetChunkSize, ProtocolControlMessageWindowAcknowledgementSize};
8
9impl ProtocolControlMessageSetChunkSize {
10 pub fn read(data: &[u8]) -> io::Result<Self> {
12 let mut cursor = Cursor::new(data);
13 let chunk_size = cursor.read_u32::<BigEndian>()?;
14
15 Ok(Self { chunk_size })
16 }
17}
18
19impl ProtocolControlMessageWindowAcknowledgementSize {
20 pub fn read(data: &[u8]) -> io::Result<Self> {
22 let mut cursor = Cursor::new(data);
23 let acknowledgement_window_size = cursor.read_u32::<BigEndian>()?;
24
25 Ok(Self {
26 acknowledgement_window_size,
27 })
28 }
29}
30
31#[cfg(test)]
32#[cfg_attr(all(test, coverage_nightly), coverage(off))]
33mod tests {
34 use super::*;
35
36 #[test]
37 fn read_set_chunk_size() {
38 let data = vec![0x00, 0x00, 0x00, 0x01];
39 let chunk_size = ProtocolControlMessageSetChunkSize::read(&data).unwrap();
40 assert_eq!(chunk_size.chunk_size, 1);
41 }
42
43 #[test]
44 fn read_window_acknowledgement_size() {
45 let data = vec![0x00, 0x00, 0x00, 0x01];
46 let window_acknowledgement_size = ProtocolControlMessageWindowAcknowledgementSize::read(&data).unwrap();
47 assert_eq!(window_acknowledgement_size.acknowledgement_window_size, 1);
48 }
49}