Skip to main content

rocketmq_remoting/protocol/header/namesrv/
brokerid_change_request_header.rs

1// Copyright 2023 The RocketMQ Rust Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15use cheetah_string::CheetahString;
16use rocketmq_macros::RequestHeaderCodecV2;
17use serde::Deserialize;
18use serde::Serialize;
19
20#[derive(Debug, Clone, Serialize, Deserialize, Default, RequestHeaderCodecV2)]
21pub struct NotifyMinBrokerIdChangeRequestHeader {
22    #[serde(rename = "minBrokerId")]
23    pub min_broker_id: Option<u64>,
24
25    #[serde(rename = "brokerName")]
26    pub broker_name: Option<CheetahString>,
27
28    #[serde(rename = "minBrokerAddr")]
29    pub min_broker_addr: Option<CheetahString>,
30
31    #[serde(rename = "offlineBrokerAddr")]
32    pub offline_broker_addr: Option<CheetahString>,
33
34    #[serde(rename = "haBrokerAddr")]
35    pub ha_broker_addr: Option<CheetahString>,
36}
37
38impl NotifyMinBrokerIdChangeRequestHeader {
39    pub fn new(
40        min_broker_id: Option<u64>,
41        broker_name: Option<CheetahString>,
42        min_broker_addr: Option<CheetahString>,
43        offline_broker_addr: Option<CheetahString>,
44        ha_broker_addr: Option<CheetahString>,
45    ) -> Self {
46        NotifyMinBrokerIdChangeRequestHeader {
47            min_broker_id,
48            broker_name,
49            min_broker_addr,
50            offline_broker_addr,
51            ha_broker_addr,
52        }
53    }
54}
55
56#[cfg(test)]
57mod tests {
58    use cheetah_string::CheetahString;
59
60    use super::*;
61
62    #[test]
63    fn new_creates_instance_with_all_fields() {
64        let header = NotifyMinBrokerIdChangeRequestHeader::new(
65            Some(1),
66            Some(CheetahString::from("broker1")),
67            Some(CheetahString::from("addr1")),
68            Some(CheetahString::from("addr2")),
69            Some(CheetahString::from("addr3")),
70        );
71        assert_eq!(header.min_broker_id, Some(1));
72        assert_eq!(header.broker_name.as_deref(), Some("broker1"));
73        assert_eq!(header.min_broker_addr.as_deref(), Some("addr1"));
74        assert_eq!(header.offline_broker_addr.as_deref(), Some("addr2"));
75        assert_eq!(header.ha_broker_addr.as_deref(), Some("addr3"));
76    }
77
78    #[test]
79    fn new_creates_instance_with_none_fields() {
80        let header = NotifyMinBrokerIdChangeRequestHeader::new(None, None, None, None, None);
81        assert_eq!(header.min_broker_id, None);
82        assert_eq!(header.broker_name, None);
83        assert_eq!(header.min_broker_addr, None);
84        assert_eq!(header.offline_broker_addr, None);
85        assert_eq!(header.ha_broker_addr, None);
86    }
87
88    #[test]
89    fn default_creates_instance_with_none_fields() {
90        let header: NotifyMinBrokerIdChangeRequestHeader = Default::default();
91        assert_eq!(header.min_broker_id, None);
92        assert_eq!(header.broker_name, None);
93        assert_eq!(header.min_broker_addr, None);
94        assert_eq!(header.offline_broker_addr, None);
95        assert_eq!(header.ha_broker_addr, None);
96    }
97}