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
use std::net::SocketAddr;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize)]
pub enum Request {
Register(Registration),
Deregister(u64),
ListNodes,
AddModule(Vec<u8>),
GetModule(u64),
}
impl Request {
pub fn kind(&self) -> &'static str {
match self {
Request::Register(_) => "Register",
Request::Deregister(_) => "Deregister",
Request::ListNodes => "ListNodes",
Request::AddModule(_) => "AddModule",
Request::GetModule(_) => "GetModule",
}
}
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub enum Response {
Register(Registered),
Nodes(Vec<(u64, Registration)>),
Module(Option<Vec<u8>>),
ModuleId(u64),
Error(String),
None,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Registration {
pub node_address: SocketAddr,
pub node_name: String,
pub signing_request: String,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Registered {
pub node_id: u64,
pub signed_cert: String,
}