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