rocketmq_protocol/protocol/header/controller/
register_broker_to_controller_request_header.rs1use cheetah_string::CheetahString;
16use rocketmq_macros::RequestHeaderCodec;
17use serde::Deserialize;
18use serde::Serialize;
19
20#[derive(Clone, Debug, Default, Serialize, Deserialize, RequestHeaderCodec)]
21#[serde(rename_all = "camelCase")]
22#[header(
23 type_id = "rocketmq_protocol::protocol::header::controller::register_broker_to_controller_request_header::RegisterBrokerToControllerRequestHeader",
24 java_class = "org.apache.rocketmq.remoting.protocol.header.controller.register.RegisterBrokerToControllerRequestHeader"
25)]
26pub struct RegisterBrokerToControllerRequestHeader {
27 pub cluster_name: Option<CheetahString>,
28 pub broker_name: Option<CheetahString>,
29 pub broker_id: Option<i64>,
30 pub broker_address: Option<CheetahString>,
31 #[header(default, default_semantic = "literal:0", range = "i64")]
32 pub invoke_time: u64,
33}
34
35#[cfg(test)]
36mod tests {
37 use std::collections::HashMap;
38
39 use super::*;
40 use crate::protocol::command_custom_header::CommandCustomHeader;
41 use crate::protocol::command_custom_header::FromMap;
42
43 #[test]
44 fn register_broker_to_controller_request_header_serializes_correctly() {
45 let header = RegisterBrokerToControllerRequestHeader {
46 cluster_name: Some(CheetahString::from_static_str("test_cluster")),
47 broker_name: Some(CheetahString::from_static_str("test_broker")),
48 broker_id: Some(123),
49 broker_address: Some(CheetahString::from_static_str("127.0.0.1:10911")),
50 invoke_time: 1234567890,
51 };
52 let map = header.to_map().unwrap();
53 assert_eq!(
54 map.get(&CheetahString::from_static_str("clusterName")).unwrap(),
55 "test_cluster"
56 );
57 assert_eq!(
58 map.get(&CheetahString::from_static_str("brokerName")).unwrap(),
59 "test_broker"
60 );
61 assert_eq!(map.get(&CheetahString::from_static_str("brokerId")).unwrap(), "123");
62 assert_eq!(
63 map.get(&CheetahString::from_static_str("brokerAddress")).unwrap(),
64 "127.0.0.1:10911"
65 );
66 assert_eq!(
67 map.get(&CheetahString::from_static_str("invokeTime")).unwrap(),
68 "1234567890"
69 );
70 }
71
72 #[test]
73 fn register_broker_to_controller_request_header_deserializes_correctly() {
74 let mut map = HashMap::new();
75 map.insert(
76 CheetahString::from_static_str("clusterName"),
77 CheetahString::from_static_str("test_cluster"),
78 );
79 map.insert(
80 CheetahString::from_static_str("brokerName"),
81 CheetahString::from_static_str("test_broker"),
82 );
83 map.insert(
84 CheetahString::from_static_str("brokerId"),
85 CheetahString::from_static_str("123"),
86 );
87 map.insert(
88 CheetahString::from_static_str("brokerAddress"),
89 CheetahString::from_static_str("127.0.0.1:10911"),
90 );
91 map.insert(
92 CheetahString::from_static_str("invokeTime"),
93 CheetahString::from_static_str("1234567890"),
94 );
95
96 let header = <RegisterBrokerToControllerRequestHeader as FromMap>::from(&map).unwrap();
97 assert_eq!(
98 header.cluster_name,
99 Some(CheetahString::from_static_str("test_cluster"))
100 );
101 assert_eq!(header.broker_name, Some(CheetahString::from_static_str("test_broker")));
102 assert_eq!(header.broker_id, Some(123));
103 assert_eq!(
104 header.broker_address,
105 Some(CheetahString::from_static_str("127.0.0.1:10911"))
106 );
107 assert_eq!(header.invoke_time, 1234567890);
108 }
109}