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
44
45
46
47
48
49
50
51
52
use ensicoin_serializer::types::Sha256Result;
use ensicoin_serializer::{Deserialize, Serialize};

use crate::message::{Message, MessageType};

#[derive(Serialize, Deserialize)]
pub struct InvVect {
    pub data_type: crate::message::ResourceType,
    pub hash: Sha256Result,
}

#[derive(Serialize, Deserialize)]
pub struct Inv {
    pub inventory: Vec<InvVect>,
}

impl Message for Inv {
    fn message_string() -> [u8; 12] {
        [105, 110, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    }
    fn message_type() -> MessageType {
        MessageType::Inv
    }
}

#[derive(Serialize, Deserialize)]
pub struct GetData {
    pub inventory: Vec<InvVect>,
}

impl Message for GetData {
    fn message_string() -> [u8; 12] {
        [103, 101, 116, 100, 97, 116, 97, 0, 0, 0, 0, 0]
    }
    fn message_type() -> MessageType {
        MessageType::GetData
    }
}

#[derive(Serialize, Deserialize)]
pub struct NotFound {
    pub inventory: Vec<InvVect>,
}

impl Message for NotFound {
    fn message_string() -> [u8; 12] {
        [110, 111, 116, 102, 111, 117, 110, 100, 0, 0, 0, 0]
    }
    fn message_type() -> MessageType {
        MessageType::NotFound
    }
}