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