memlink_protocol/
types.rs1pub type RequestId = u64;
7
8pub type ModuleId = u64;
9
10pub type MethodHash = u32;
11
12pub type TraceId = u128;
13
14pub type SpanId = u64;
15
16#[repr(u8)]
17#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)]
18pub enum StatusCode {
19 Success = 0,
20 ModuleNotFound = 1,
21 MethodNotFound = 2,
22 ExecutionError = 3,
23 Timeout = 4,
24 QuotaExceeded = 5,
25 BackpressureRejection = 6,
26}
27
28impl StatusCode {
29 pub fn from_u8(value: u8) -> Option<Self> {
30 match value {
31 0 => Some(StatusCode::Success),
32 1 => Some(StatusCode::ModuleNotFound),
33 2 => Some(StatusCode::MethodNotFound),
34 3 => Some(StatusCode::ExecutionError),
35 4 => Some(StatusCode::Timeout),
36 5 => Some(StatusCode::QuotaExceeded),
37 6 => Some(StatusCode::BackpressureRejection),
38 _ => None,
39 }
40 }
41
42 pub fn as_u8(self) -> u8 {
43 self as u8
44 }
45
46 pub fn is_success(self) -> bool {
47 matches!(self, StatusCode::Success)
48 }
49
50 pub fn is_error(self) -> bool {
51 !self.is_success()
52 }
53}
54
55#[repr(u8)]
56#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default, serde::Serialize, serde::Deserialize)]
57pub enum Priority {
58 Low = 0,
59 #[default]
60 Normal = 1,
61 High = 2,
62 Critical = 3,
63}
64
65impl Priority {
66 pub fn from_u8(value: u8) -> Option<Self> {
67 match value {
68 0 => Some(Priority::Low),
69 1 => Some(Priority::Normal),
70 2 => Some(Priority::High),
71 3 => Some(Priority::Critical),
72 _ => None,
73 }
74 }
75
76 pub fn as_u8(self) -> u8 {
77 self as u8
78 }
79}
80
81#[repr(u8)]
82#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)]
83pub enum MessageType {
84 Request = 0,
85 Response = 1,
86 Error = 2,
87 StreamHandle = 3,
88 HealthCheck = 16,
89 LoadModule = 32,
90 UnloadModule = 33,
91 Stats = 48,
92 Event = 96,
93}
94
95impl MessageType {
96 pub fn from_u8(value: u8) -> Option<Self> {
97 match value {
98 0 => Some(MessageType::Request),
99 1 => Some(MessageType::Response),
100 2 => Some(MessageType::Error),
101 3 => Some(MessageType::StreamHandle),
102 16 => Some(MessageType::HealthCheck),
103 32 => Some(MessageType::LoadModule),
104 33 => Some(MessageType::UnloadModule),
105 48 => Some(MessageType::Stats),
106 96 => Some(MessageType::Event),
107 _ => None,
108 }
109 }
110
111 pub fn as_u8(self) -> u8 {
112 self as u8
113 }
114
115 pub fn expects_response(self) -> bool {
116 matches!(
117 self,
118 MessageType::Request
119 | MessageType::HealthCheck
120 | MessageType::LoadModule
121 | MessageType::UnloadModule
122 | MessageType::Stats
123 )
124 }
125}