rocketmq_remoting/protocol/header/namesrv/
query_data_version_header.rs1use cheetah_string::CheetahString;
16use rocketmq_macros::RequestHeaderCodecV2;
17use serde::Deserialize;
18use serde::Serialize;
19
20#[derive(Debug, Clone, Deserialize, Serialize, Default, RequestHeaderCodecV2)]
21#[serde(rename_all = "camelCase")]
22pub struct QueryDataVersionRequestHeader {
23 #[required]
24 pub broker_name: CheetahString,
25
26 #[required]
27 pub broker_addr: CheetahString,
28
29 #[required]
30 pub cluster_name: CheetahString,
31
32 #[required]
33 pub broker_id: u64,
34}
35
36impl QueryDataVersionRequestHeader {
37 pub fn new(
38 broker_name: impl Into<CheetahString>,
39 broker_addr: impl Into<CheetahString>,
40 cluster_name: impl Into<CheetahString>,
41 broker_id: u64,
42 ) -> Self {
43 Self {
44 broker_name: broker_name.into(),
45 broker_addr: broker_addr.into(),
46 cluster_name: cluster_name.into(),
47 broker_id,
48 }
49 }
50}
51
52#[derive(Debug, Clone, Deserialize, Serialize, Default, RequestHeaderCodecV2)]
53pub struct QueryDataVersionResponseHeader {
54 changed: bool,
55}
56
57impl QueryDataVersionResponseHeader {
58 pub fn new(changed: bool) -> Self {
59 Self { changed }
60 }
61
62 pub fn changed(&self) -> bool {
63 self.changed
64 }
65}
66
67#[cfg(test)]
68mod tests {
69 use cheetah_string::CheetahString;
70
71 use super::*;
72
73 #[test]
74 fn query_data_version_request_header_new() {
75 let header = QueryDataVersionRequestHeader::new("broker1", "127.0.0.1", "cluster1", 1);
76 assert_eq!(header.broker_name, CheetahString::from("broker1"));
77 assert_eq!(header.broker_addr, CheetahString::from("127.0.0.1"));
78 assert_eq!(header.cluster_name, CheetahString::from("cluster1"));
79 assert_eq!(header.broker_id, 1);
80 }
81
82 #[test]
83 fn query_data_version_request_header_serialization() {
84 let header = QueryDataVersionRequestHeader::new("broker1", "127.0.0.1", "cluster1", 1);
85 let serialized = serde_json::to_string(&header).unwrap();
86 assert_eq!(
87 serialized,
88 r#"{"brokerName":"broker1","brokerAddr":"127.0.0.1","clusterName":"cluster1","brokerId":1}"#
89 );
90 }
91
92 #[test]
93 fn query_data_version_request_header_deserialization() {
94 let json = r#"{"brokerName":"broker1","brokerAddr":"127.0.0.1","clusterName":"cluster1","brokerId":1}"#;
95 let deserialized: QueryDataVersionRequestHeader = serde_json::from_str(json).unwrap();
96 assert_eq!(deserialized.broker_name, CheetahString::from("broker1"));
97 assert_eq!(deserialized.broker_addr, CheetahString::from("127.0.0.1"));
98 assert_eq!(deserialized.cluster_name, CheetahString::from("cluster1"));
99 assert_eq!(deserialized.broker_id, 1);
100 }
101
102 #[test]
103 fn query_data_version_response_header_new() {
104 let header = QueryDataVersionResponseHeader::new(true);
105 assert!(header.changed);
106 }
107
108 #[test]
109 fn query_data_version_response_header_serialization() {
110 let header = QueryDataVersionResponseHeader::new(true);
111 let serialized = serde_json::to_string(&header).unwrap();
112 assert_eq!(serialized, r#"{"changed":true}"#);
113 }
114
115 #[test]
116 fn query_data_version_response_header_deserialization() {
117 let json = r#"{"changed":true}"#;
118 let deserialized: QueryDataVersionResponseHeader = serde_json::from_str(json).unwrap();
119 assert!(deserialized.changed);
120 }
121}