sheave_core/messages/
playlist_ready.rs

1use std::io::Result as IOResult;
2use crate::{
3    ByteBuffer,
4    Decoder,
5    Encoder,
6    messages::{
7        Channel,
8        ChunkData,
9        Command,
10        headers::MessageType
11    },
12};
13
14/// The response message for SetPlaylist requests.
15#[derive(Debug, Clone, Copy, PartialEq, Eq)]
16pub struct PlaylistReady;
17
18impl ChunkData for PlaylistReady {
19    const CHANNEL: Channel = Channel::Video;
20    const MESSAGE_TYPE: MessageType = MessageType::Command;
21}
22
23impl Command for PlaylistReady {}
24
25impl Decoder<PlaylistReady> for ByteBuffer {
26    /// Decodes bytes into a playlist ready 
27    fn decode(&mut self) -> IOResult<PlaylistReady> {
28        Ok(PlaylistReady)
29    }
30}
31
32impl Encoder<PlaylistReady> for ByteBuffer {
33    /// Encodes a playlist ready command into bytes.
34    /// However this encodes nothing because has no field.
35    fn encode(&mut self, _: &PlaylistReady) {
36        return
37    }
38}
39
40#[cfg(test)]
41mod tests {
42    use super::*;
43
44    #[test]
45    fn decode_playlist_ready() {
46        let mut buffer = ByteBuffer::default();
47        let result: IOResult<Playlist> = buffer.decode();
48        assert!(result.is_ok());
49        let actual = result.unwrap();
50        assert_eq!(PlaylistReady, actual)
51    }
52
53    #[test]
54    fn encode_playlist_ready() {
55        let mut buffer = ByteBuffer::default();
56        buffer.encode(&PlaylistReady);
57    }
58}