1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use crate::NetFn;

use super::Message;

#[derive(Debug, Clone, PartialEq)]
pub struct Response {
    seq: i64,
    message: Message,
}

impl Response {
    pub fn new(message: Message, seq: i64) -> Option<Self> {
        if !message.data().is_empty() {
            Some(Self { message, seq })
        } else {
            None
        }
    }

    pub fn netfn(&self) -> NetFn {
        self.message.netfn()
    }

    pub fn netfn_raw(&self) -> u8 {
        self.message.netfn_raw()
    }

    pub fn cmd(&self) -> u8 {
        self.message.cmd
    }

    pub fn seq(&self) -> i64 {
        self.seq
    }

    pub fn cc(&self) -> u8 {
        self.message.data[0]
    }

    pub fn data(&self) -> &[u8] {
        &self.message.data[1..]
    }
}