sheave_core/messages/
on_fc_publish.rs

1use 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};
13
14/// The response message for FcPublish requests.
15#[derive(Debug, Clone, Copy, PartialEq, Eq)]
16pub struct OnFcPublish;
17
18impl ChunkData for OnFcPublish {
19    const CHANNEL: Channel = Channel::System;
20    const MESSAGE_TYPE: MessageType = MessageType::Command;
21}
22
23impl Command for OnFcPublish {}
24
25impl Decoder<OnFcPublish> for ByteBuffer {
26    /// Decodes bytes into an OnFcPublish command.
27    fn decode(&mut self) -> IOResult<OnFcPublish> {
28        Ok(OnFcPublish)
29    }
30}
31
32impl Encoder<OnFcPublish> for ByteBuffer {
33    /// Encodes an OnFcPublish command into bytes.
34    /// However this encodes nothing because has no field.
35    fn encode(&mut self, _: &OnFcPublish) {
36        return
37    }
38}
39
40#[cfg(test)]
41mod tests {
42    use super::*;
43
44    #[test]
45    fn decode_on_fc_publish() {
46        let mut buffer = ByteBuffer::default();
47        let result: IOResult<OnFcPublish> = buffer.decode();
48        assert!(result.is_ok());
49        let actual = result.unwrap();
50        assert_eq!(OnFcPublish, actual)
51    }
52
53    #[test]
54    fn encode_on_fc_publish() {
55        let mut buffer = ByteBuffer::default();
56        buffer.encode(&OnFcPublish);
57    }
58}