kalamdb_commons/
websocket_protocol.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
5#[serde(rename_all = "snake_case")]
6pub enum SerializationType {
7 #[default]
9 Json,
10 #[serde(rename = "msgpack")]
12 MessagePack,
13}
14
15#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
17#[serde(rename_all = "snake_case")]
18pub enum CompressionType {
19 None,
21 #[default]
23 Gzip,
24}
25
26#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
28pub struct ProtocolOptions {
29 pub serialization: SerializationType,
31 pub compression: CompressionType,
33}
34
35impl Default for ProtocolOptions {
36 fn default() -> Self {
37 Self {
38 serialization: SerializationType::Json,
39 compression: CompressionType::Gzip,
40 }
41 }
42}
43
44#[cfg(test)]
45mod tests {
46 use super::*;
47
48 #[test]
49 fn test_serialization_type_json_roundtrip() {
50 let ser = SerializationType::Json;
51 let json = serde_json::to_string(&ser).unwrap();
52 assert_eq!(json, "\"json\"");
53 let parsed: SerializationType = serde_json::from_str(&json).unwrap();
54 assert_eq!(parsed, SerializationType::Json);
55 }
56
57 #[test]
58 fn test_serialization_type_msgpack_roundtrip() {
59 let ser = SerializationType::MessagePack;
60 let json = serde_json::to_string(&ser).unwrap();
61 assert_eq!(json, "\"msgpack\"");
62 let parsed: SerializationType = serde_json::from_str(&json).unwrap();
63 assert_eq!(parsed, SerializationType::MessagePack);
64 }
65
66 #[test]
67 fn test_protocol_options_default() {
68 let opts = ProtocolOptions::default();
69 assert_eq!(opts.serialization, SerializationType::Json);
70 assert_eq!(opts.compression, CompressionType::Gzip);
71 }
72
73 #[test]
74 fn test_protocol_options_roundtrip() {
75 let opts = ProtocolOptions {
76 serialization: SerializationType::MessagePack,
77 compression: CompressionType::None,
78 };
79 let json = serde_json::to_string(&opts).unwrap();
80 let parsed: ProtocolOptions = serde_json::from_str(&json).unwrap();
81 assert_eq!(parsed, opts);
82 }
83}