blob: cd0af16754f3df6bde46bfab880eeb2c6e1ecc36 (
plain)
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
|
//! Helpers to determine if a node can send a particular packet.
/// These functions are unfortunately all a bit stringly typed atm
pub mod can_send {
use crate::data::{Level, PacketType, Upgrade};
use Level::*;
#[inline]
pub fn base() -> Vec<&'static str> {
vec!["ping", "capture"]
}
/// Guard nodes are the most versatile
#[inline]
pub fn guard(lvl: Level) -> Vec<&'static str> {
match lvl {
// This is just kinda gross
One => {
let mut p = base();
p.append(&mut vec!["payload", "cns", "reset"]);
p
}
Two => {
let mut p = guard(One);
p.append(&mut vec!["nitm", "virus"]);
p
}
Three => {
let mut p = guard(Two);
p.append(&mut vec!["takeover"]);
p
}
}
}
/// Compute nodes can sennd compute packets
pub fn compute() -> Vec<&'static str> {
let mut p = base();
p.append(&mut vec!["compute"]);
p
}
/// Relays only relay!
pub fn relay() -> Vec<&'static str> {
vec![]
}
}
|