memlink_protocol/
sproto.rs1pub const STREAM_ID_SIZE: usize = 32;
7
8pub const STREAM_CHECKSUM_SIZE: usize = 16;
9
10pub const STREAM_TOTAL_SIZE_OFFSET: usize = 32;
11
12pub const STREAM_CHECKSUM_OFFSET: usize = 40;
13
14pub const STREAM_EXPIRES_OFFSET: usize = 56;
15
16pub const STREAM_HANDLE_SIZE: usize = 80;
17
18pub const STREAM_HEADER_SIZE: usize = STREAM_HANDLE_SIZE;
19
20pub const DEFAULT_STREAM_TIMEOUT_NS: u64 = 30_000_000_000;
21
22pub const MAX_STREAM_TIMEOUT_NS: u64 = 3_600_000_000_000;
23
24pub const MIN_CHUNK_SIZE: usize = 4096;
25
26pub const DEFAULT_CHUNK_SIZE: usize = 65536;
27
28pub const MAX_CHUNK_SIZE: usize = 1048576;
29
30#[repr(u8)]
31#[derive(Debug, Clone, Copy, PartialEq, Eq)]
32pub enum StreamState {
33 Initializing = 0,
34 Ready = 1,
35 Transferring = 2,
36 Complete = 3,
37 Error = 4,
38}
39
40impl StreamState {
41 pub fn from_u8(value: u8) -> Option<Self> {
42 match value {
43 0 => Some(StreamState::Initializing),
44 1 => Some(StreamState::Ready),
45 2 => Some(StreamState::Transferring),
46 3 => Some(StreamState::Complete),
47 4 => Some(StreamState::Error),
48 _ => None,
49 }
50 }
51
52 pub fn as_u8(self) -> u8 {
53 self as u8
54 }
55}
56
57#[repr(u8)]
58#[derive(Debug, Clone, Copy, PartialEq, Eq)]
59pub enum StreamMode {
60 Push = 0,
61 Pull = 1,
62 Bidirectional = 2,
63}
64
65impl StreamMode {
66 pub fn from_u8(value: u8) -> Option<Self> {
67 match value {
68 0 => Some(StreamMode::Push),
69 1 => Some(StreamMode::Pull),
70 2 => Some(StreamMode::Bidirectional),
71 _ => None,
72 }
73 }
74
75 pub fn as_u8(self) -> u8 {
76 self as u8
77 }
78}