rocketmq_protocol/protocol/header/
exchange_ha_info_response_header.rs1use cheetah_string::CheetahString;
2use rocketmq_macros::RequestHeaderCodec;
3use serde::Deserialize;
17use serde::Serialize;
18
19#[derive(Debug, Clone, Serialize, Deserialize, RequestHeaderCodec)]
20#[serde(rename_all = "camelCase")]
21#[header(
22 type_id = "rocketmq_protocol::protocol::header::exchange_ha_info_response_header::ExchangeHaInfoResponseHeader",
23 java_class = "org.apache.rocketmq.remoting.protocol.header.ExchangeHAInfoResponseHeader"
24)]
25pub struct ExchangeHaInfoResponseHeader {
26 pub master_ha_address: Option<CheetahString>,
27 pub master_flush_offset: Option<i64>,
28 pub master_address: Option<CheetahString>,
29}
30
31#[cfg(test)]
32mod tests {
33 use cheetah_string::CheetahString;
34
35 use super::*;
36
37 fn create_cheetah_string(value: &str) -> Option<CheetahString> {
38 Some(CheetahString::from(value))
39 }
40
41 #[test]
42 fn serialize_with_all_fields_set() {
43 let header = ExchangeHaInfoResponseHeader {
44 master_ha_address: create_cheetah_string("127.0.0.1:10911"),
45 master_flush_offset: Some(1024),
46 master_address: create_cheetah_string("127.0.0.1"),
47 };
48
49 let serialized = serde_json::to_string(&header).unwrap();
50 assert!(serialized.contains("\"masterHaAddress\":\"127.0.0.1:10911\""));
51 assert!(serialized.contains("\"masterFlushOffset\":1024"));
52 assert!(serialized.contains("\"masterAddress\":\"127.0.0.1\""));
53 }
54}