use std::fmt::Display;
use cheetah_string::CheetahString;
use rocketmq_macros::RequestHeaderCodecV2;
use serde::Deserialize;
use serde::Serialize;
#[derive(Serialize, Deserialize, Debug, RequestHeaderCodecV2)]
#[serde(rename_all = "camelCase")]
pub struct NotifyBrokerRoleChangedRequestHeader {
#[required]
pub master_address: Option<CheetahString>,
#[required]
pub master_epoch: Option<i32>,
#[required]
pub sync_state_set_epoch: Option<i32>,
#[required]
pub master_broker_id: Option<u64>,
}
impl Display for NotifyBrokerRoleChangedRequestHeader {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"(master_address={:?}, master_epoch={:?}, sync_state_set_epoch={:?}, master_broker_id={:?})",
self.master_address, self.master_epoch, self.sync_state_set_epoch, self.master_broker_id
)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn notify_broker_role_changed_request_header_display() {
let header = NotifyBrokerRoleChangedRequestHeader {
master_address: Some(CheetahString::from("addr")),
master_epoch: Some(1),
sync_state_set_epoch: Some(2),
master_broker_id: Some(3),
};
let display = format!("{}", header);
let expected = r#"(master_address=Some("addr"), master_epoch=Some(1), sync_state_set_epoch=Some(2), master_broker_id=Some(3))"#;
assert_eq!(display, expected);
}
}