ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/salaryman/trunk/src/protocol.rs
Revision: 17
Committed: Fri Aug 1 08:48:17 2025 UTC (2 months, 1 week ago) by yuzu
File size: 1320 byte(s)
Log Message:
unix socket get

File Contents

# Content
1 use serde::{Serialize, Deserialize};
2 use uuid::Uuid;
3 use super::service::ServiceConf;
4
5 #[derive(Serialize, Deserialize)]
6 pub enum SalarymanPacket {
7 Ping,
8 Pong,
9 Okay,
10 Create(ServiceConf),
11 Delete(Uuid),
12 Start(Uuid),
13 Stop(Uuid),
14 Restart(Uuid),
15
16 Quit,
17 Invalid,
18 }
19 impl SalarymanPacket {
20 /// Used to encode the enum and any nested structs for network transmission
21 pub fn serialize(&self) -> Result<Vec<u8>, bincode::error::EncodeError>{
22 bincode::serde::encode_to_vec(&self, bincode::config::standard())
23 }
24 /// Used to decode the enum and any nested struct from a network transmission
25 pub fn deserialize(data: &[u8]) -> Result<SalarymanPacket, bincode::error::DecodeError> {
26 let (ret, _size) = bincode::serde::decode_from_slice(data, bincode::config::standard())?;
27 Ok(ret)
28 }
29 /// Generates a response from a given SalarymanPacket invariant
30 pub fn response(&self) -> Self {
31 match self {
32 Self::Ping => Self::Pong,
33 Self::Create(_) => Self::Okay,
34 Self::Delete(_) => Self::Okay,
35 Self::Start(_) => Self::Okay,
36 Self::Stop(_) => Self::Okay,
37 Self::Restart(_) => Self::Okay,
38 Self::Quit => Self::Okay,
39 _ => Self::Invalid,
40 }
41 }
42 }