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
53
use crate::{
protocols::{ProtocolParser, ProtocolPayload},
Message, ProtocolId, Result,
};
use ockam_core::{compat::collections::BTreeSet, Decodable};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Message)]
pub enum StreamWorkerCmd {
Fetch,
Pull {
num: usize,
},
}
impl StreamWorkerCmd {
pub fn fetch() -> ProtocolPayload {
ProtocolPayload::new(ProtocolId::from("internal.stream.fetch"), Self::Fetch)
}
pub fn pull(num: usize) -> ProtocolPayload {
ProtocolPayload::new(ProtocolId::from("internal.stream.pull"), Self::Pull { num })
}
}
impl ProtocolParser for StreamWorkerCmd {
fn check_id(id: &str) -> bool {
vec!["internal.stream.fetch", "internal.stream.pull"]
.into_iter()
.collect::<BTreeSet<_>>()
.contains(id)
}
fn parse(pp: ProtocolPayload) -> Result<Self> {
StreamWorkerCmd::decode(&pp.data)
}
}