use cheetah_string::CheetahString;
use rocketmq_macros::RequestHeaderCodecV2;
use serde::Deserialize;
use serde::Serialize;
#[derive(Clone, Debug, Serialize, Deserialize, Default, RequestHeaderCodecV2)]
#[serde(rename_all = "camelCase")]
pub struct ExchangeHAInfoRequestHeader {
pub master_ha_address: Option<CheetahString>,
pub master_flush_offset: Option<i64>,
pub master_address: Option<CheetahString>,
}
#[cfg(test)]
mod tests {
use cheetah_string::CheetahString;
use super::*;
fn create_cheetah_string(value: &str) -> Option<CheetahString> {
Some(CheetahString::from(value))
}
#[test]
fn serialize_with_all_fields_set() {
let header = ExchangeHAInfoRequestHeader {
master_ha_address: create_cheetah_string("127.0.0.1:10911"),
master_flush_offset: Some(1024),
master_address: create_cheetah_string("127.0.0.1"),
};
let serialized = serde_json::to_string(&header).unwrap();
assert!(serialized.contains("\"masterHaAddress\":\"127.0.0.1:10911\""));
assert!(serialized.contains("\"masterFlushOffset\":1024"));
assert!(serialized.contains("\"masterAddress\":\"127.0.0.1\""));
}
}