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