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