rocketmq_remoting/protocol/header/namesrv/
kv_config_header.rs1use cheetah_string::CheetahString;
16use rocketmq_macros::RequestHeaderCodecV2;
17use serde::Deserialize;
18use serde::Serialize;
19
20#[derive(Debug, Clone, Deserialize, Serialize, Default, RequestHeaderCodecV2)]
21pub struct PutKVConfigRequestHeader {
22 #[required]
23 pub namespace: CheetahString,
24
25 #[required]
26 pub key: CheetahString,
27
28 #[required]
29 pub value: CheetahString,
30}
31
32impl PutKVConfigRequestHeader {
33 pub fn new(
41 namespace: impl Into<CheetahString>,
42 key: impl Into<CheetahString>,
43 value: impl Into<CheetahString>,
44 ) -> Self {
45 Self {
46 namespace: namespace.into(),
47 key: key.into(),
48 value: value.into(),
49 }
50 }
51}
52
53#[derive(Debug, Clone, Deserialize, Serialize, Default, RequestHeaderCodecV2)]
54pub struct GetKVConfigRequestHeader {
55 #[required]
56 pub namespace: CheetahString,
57
58 #[required]
59 pub key: CheetahString,
60}
61
62impl GetKVConfigRequestHeader {
63 pub fn new(namespace: impl Into<CheetahString>, key: impl Into<CheetahString>) -> Self {
64 Self {
65 namespace: namespace.into(),
66 key: key.into(),
67 }
68 }
69}
70
71#[derive(Debug, Clone, Deserialize, Serialize, Default, RequestHeaderCodecV2)]
72pub struct GetKVConfigResponseHeader {
73 #[required]
74 pub value: Option<CheetahString>,
75}
76
77impl GetKVConfigResponseHeader {
78 pub fn new(value: Option<CheetahString>) -> Self {
79 Self { value }
80 }
81}
82
83#[derive(Debug, Clone, Deserialize, Serialize, Default, RequestHeaderCodecV2)]
84pub struct DeleteKVConfigRequestHeader {
85 #[required]
86 pub namespace: CheetahString,
87
88 #[required]
89 pub key: CheetahString,
90}
91
92impl DeleteKVConfigRequestHeader {
93 pub fn new(namespace: impl Into<CheetahString>, key: impl Into<CheetahString>) -> Self {
94 Self {
95 namespace: namespace.into(),
96 key: key.into(),
97 }
98 }
99}
100
101#[derive(Debug, Clone, Deserialize, Serialize, Default, RequestHeaderCodecV2)]
102pub struct GetKVListByNamespaceRequestHeader {
103 #[required]
104 pub namespace: CheetahString,
105}
106
107impl GetKVListByNamespaceRequestHeader {
108 pub fn new(namespace: impl Into<CheetahString>) -> Self {
109 Self {
110 namespace: namespace.into(),
111 }
112 }
113}
114
115#[cfg(test)]
116mod tests {
117 use cheetah_string::CheetahString;
118
119 use super::*;
120
121 #[test]
122 fn put_kv_config_request_header_new() {
123 let header = PutKVConfigRequestHeader::new("namespace1", "key1", "value1");
124 assert_eq!(header.namespace, CheetahString::from("namespace1"));
125 assert_eq!(header.key, CheetahString::from("key1"));
126 assert_eq!(header.value, CheetahString::from("value1"));
127 }
128
129 #[test]
130 fn put_kv_config_request_header_serialization() {
131 let header = PutKVConfigRequestHeader::new("namespace1", "key1", "value1");
132 let serialized = serde_json::to_string(&header).unwrap();
133 assert_eq!(
134 serialized,
135 r#"{"namespace":"namespace1","key":"key1","value":"value1"}"#
136 );
137 }
138
139 #[test]
140 fn put_kv_config_request_header_deserialization() {
141 let json = r#"{"namespace":"namespace1","key":"key1","value":"value1"}"#;
142 let deserialized: PutKVConfigRequestHeader = serde_json::from_str(json).unwrap();
143 assert_eq!(deserialized.namespace, CheetahString::from("namespace1"));
144 assert_eq!(deserialized.key, CheetahString::from("key1"));
145 assert_eq!(deserialized.value, CheetahString::from("value1"));
146 }
147
148 #[test]
149 fn get_kv_config_request_header_new() {
150 let header = GetKVConfigRequestHeader::new("namespace1", "key1");
151 assert_eq!(header.namespace, CheetahString::from("namespace1"));
152 assert_eq!(header.key, CheetahString::from("key1"));
153 }
154
155 #[test]
156 fn get_kv_config_request_header_serialization() {
157 let header = GetKVConfigRequestHeader::new("namespace1", "key1");
158 let serialized = serde_json::to_string(&header).unwrap();
159 assert_eq!(serialized, r#"{"namespace":"namespace1","key":"key1"}"#);
160 }
161
162 #[test]
163 fn get_kv_config_request_header_deserialization() {
164 let json = r#"{"namespace":"namespace1","key":"key1"}"#;
165 let deserialized: GetKVConfigRequestHeader = serde_json::from_str(json).unwrap();
166 assert_eq!(deserialized.namespace, CheetahString::from("namespace1"));
167 assert_eq!(deserialized.key, CheetahString::from("key1"));
168 }
169
170 #[test]
171 fn get_kv_config_response_header_new() {
172 let header = GetKVConfigResponseHeader::new(Some(CheetahString::from("value1")));
173 assert_eq!(header.value, Some(CheetahString::from("value1")));
174 }
175
176 #[test]
177 fn get_kv_config_response_header_serialization() {
178 let header = GetKVConfigResponseHeader::new(Some(CheetahString::from("value1")));
179 let serialized = serde_json::to_string(&header).unwrap();
180 assert_eq!(serialized, r#"{"value":"value1"}"#);
181 }
182
183 #[test]
184 fn get_kv_config_response_header_deserialization() {
185 let json = r#"{"value":"value1"}"#;
186 let deserialized: GetKVConfigResponseHeader = serde_json::from_str(json).unwrap();
187 assert_eq!(deserialized.value, Some(CheetahString::from("value1")));
188 }
189
190 #[test]
191 fn delete_kv_config_request_header_new() {
192 let header = DeleteKVConfigRequestHeader::new("namespace1", "key1");
193 assert_eq!(header.namespace, CheetahString::from("namespace1"));
194 assert_eq!(header.key, CheetahString::from("key1"));
195 }
196
197 #[test]
198 fn delete_kv_config_request_header_serialization() {
199 let header = DeleteKVConfigRequestHeader::new("namespace1", "key1");
200 let serialized = serde_json::to_string(&header).unwrap();
201 assert_eq!(serialized, r#"{"namespace":"namespace1","key":"key1"}"#);
202 }
203
204 #[test]
205 fn delete_kv_config_request_header_deserialization() {
206 let json = r#"{"namespace":"namespace1","key":"key1"}"#;
207 let deserialized: DeleteKVConfigRequestHeader = serde_json::from_str(json).unwrap();
208 assert_eq!(deserialized.namespace, CheetahString::from("namespace1"));
209 assert_eq!(deserialized.key, CheetahString::from("key1"));
210 }
211
212 #[test]
213 fn get_kv_list_by_namespace_request_header_new() {
214 let header = GetKVListByNamespaceRequestHeader::new("namespace1");
215 assert_eq!(header.namespace, CheetahString::from("namespace1"));
216 }
217
218 #[test]
219 fn get_kv_list_by_namespace_request_header_serialization() {
220 let header = GetKVListByNamespaceRequestHeader::new("namespace1");
221 let serialized = serde_json::to_string(&header).unwrap();
222 assert_eq!(serialized, r#"{"namespace":"namespace1"}"#);
223 }
224
225 #[test]
226 fn get_kv_list_by_namespace_request_header_deserialization() {
227 let json = r#"{"namespace":"namespace1"}"#;
228 let deserialized: GetKVListByNamespaceRequestHeader = serde_json::from_str(json).unwrap();
229 assert_eq!(deserialized.namespace, CheetahString::from("namespace1"));
230 }
231}