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