sheave_core/messages/
release_stream_result.rs1use std::io::Result as IOResult;
2use super::{
3 Channel,
4 ChunkData,
5 Command,
6 headers::MessageType
7};
8use crate::{
9 Decoder,
10 Encoder,
11 ByteBuffer,
12 messages::amf::v0::Null,
13};
14
15#[derive(Debug, Clone, PartialEq)]
17pub struct ReleaseStreamResult;
18
19impl ChunkData for ReleaseStreamResult {
20 const CHANNEL: Channel = Channel::System;
21 const MESSAGE_TYPE: MessageType = MessageType::Command;
22}
23
24impl Command for ReleaseStreamResult {}
25
26impl Decoder<ReleaseStreamResult> for ByteBuffer {
27 fn decode(&mut self) -> IOResult<ReleaseStreamResult> {
63 Decoder::<Null>::decode(self)?;
64 Ok(ReleaseStreamResult)
65 }
66}
67
68impl Encoder<ReleaseStreamResult> for ByteBuffer {
69 fn encode(&mut self, _: &ReleaseStreamResult) {
71 self.encode(&Null);
72 }
73}
74
75#[cfg(test)]
76mod tests {
77 use super::*;
78
79 #[test]
80 fn decode_release_stream_result() {
81 let mut buffer = ByteBuffer::default();
82 buffer.encode(&Null);
83 let result: IOResult<ReleaseStreamResult> = buffer.decode();
84 assert!(result.is_ok());
85 let actual = result.unwrap();
86 let expected = ReleaseStreamResult;
87 assert_eq!(expected, actual)
88 }
89
90 #[test]
91 fn encode_release_stream_result() {
92 let mut buffer = ByteBuffer::default();
93 let expected = ReleaseStreamResult;
94 buffer.encode(&expected);
95 assert!(Decoder::<ReleaseStreamResult>::decode(&mut buffer).is_ok())
96 }
97}