rocketmq_protocol/protocol/header/
lock_batch_mq_request_header.rs1use rocketmq_macros::RequestHeaderCodec;
16use serde::Deserialize;
17use serde::Serialize;
18
19use crate::rpc::rpc_request_header::RpcRequestHeader;
20
21#[derive(Serialize, Deserialize, Debug, Default, RequestHeaderCodec)]
22#[header(
23 type_id = "rocketmq_protocol::protocol::header::lock_batch_mq_request_header::LockBatchMqRequestHeader",
24 java_class = "org.apache.rocketmq.remoting.protocol.header.LockBatchMqRequestHeader"
25)]
26#[serde(rename_all = "camelCase")]
27pub struct LockBatchMqRequestHeader {
28 #[serde(flatten)]
29 #[header(flatten, presence = "always")]
30 pub rpc_request_header: Option<RpcRequestHeader>,
31}
32
33#[cfg(test)]
34mod tests {
35 use super::*;
36 use cheetah_string::CheetahString;
37
38 #[test]
39 fn lock_batch_mq_request_header_serialize() {
40 let header: LockBatchMqRequestHeader = LockBatchMqRequestHeader {
41 rpc_request_header: Some(RpcRequestHeader::new(
42 Some(CheetahString::from("some_value")),
43 Some(true),
44 Some(CheetahString::from("brokerName")),
45 Some(true),
46 )),
47 };
48
49 let json_str = serde_json::to_string(&header).unwrap();
50
51 assert!(json_str.contains("\"ns\":\"some_value\""));
52 assert!(json_str.contains("\"nsd\":true"));
53 assert!(json_str.contains("\"bname\":\"brokerName\""));
54 assert!(json_str.contains("\"oway\":true"));
55 }
56
57 #[test]
58 fn lock_batch_mq_request_header_deserialize() {
59 let json_str = r#"{"namespace":"some_value","namespaced":true,"brokerName":"brokerName","oneway":true}"#;
60 let header: LockBatchMqRequestHeader = serde_json::from_str(json_str).unwrap();
61 assert!(header.rpc_request_header.is_some());
62 assert!(header.rpc_request_header.as_ref().unwrap().namespace.is_some());
63 assert_eq!(
64 header.rpc_request_header.as_ref().unwrap().namespace.as_ref().unwrap(),
65 "some_value"
66 );
67 assert!(header.rpc_request_header.as_ref().unwrap().namespaced.is_some());
68 assert!(header.rpc_request_header.as_ref().unwrap().namespaced.unwrap());
69 assert!(header.rpc_request_header.as_ref().unwrap().broker_name.is_some());
70 assert_eq!(
71 header
72 .rpc_request_header
73 .as_ref()
74 .unwrap()
75 .broker_name
76 .as_ref()
77 .unwrap(),
78 "brokerName"
79 );
80 assert!(header.rpc_request_header.as_ref().unwrap().oneway.is_some());
81 assert!(header.rpc_request_header.as_ref().unwrap().oneway.unwrap());
82 }
83}