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

# User Rev Content
1 yuzu 17 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     }