rocketmq_protocol/protocol/header/namesrv/
perm_broker_header.rs1use cheetah_string::CheetahString;
16use rocketmq_macros::RequestHeaderCodec;
17use serde::Deserialize;
18use serde::Serialize;
19
20#[derive(Debug, Clone, Deserialize, Serialize, Default, RequestHeaderCodec)]
21#[serde(rename_all = "camelCase")]
22#[header(
23 type_id = "rocketmq_protocol::protocol::header::namesrv::perm_broker_header::WipeWritePermOfBrokerRequestHeader",
24 java_class = "org.apache.rocketmq.remoting.protocol.header.namesrv.WipeWritePermOfBrokerRequestHeader"
25)]
26pub struct WipeWritePermOfBrokerRequestHeader {
27 #[header(required)]
28 pub broker_name: CheetahString,
29}
30
31impl WipeWritePermOfBrokerRequestHeader {
32 pub fn new(broker_name: impl Into<CheetahString>) -> Self {
33 Self {
34 broker_name: broker_name.into(),
35 }
36 }
37}
38
39#[derive(Debug, Clone, Deserialize, Serialize, Default, RequestHeaderCodec)]
40#[serde(rename_all = "camelCase")]
41#[header(
42 type_id = "rocketmq_protocol::protocol::header::namesrv::perm_broker_header::WipeWritePermOfBrokerResponseHeader",
43 java_class = "org.apache.rocketmq.remoting.protocol.header.namesrv.WipeWritePermOfBrokerResponseHeader"
44)]
45pub struct WipeWritePermOfBrokerResponseHeader {
46 #[header(required)]
47 pub wipe_topic_count: i32,
48}
49
50impl WipeWritePermOfBrokerResponseHeader {
51 pub fn new(wipe_topic_count: i32) -> Self {
52 Self { wipe_topic_count }
53 }
54
55 pub fn get_wipe_topic_count(&self) -> i32 {
56 self.wipe_topic_count
57 }
58}
59
60#[derive(Debug, Clone, Deserialize, Serialize, Default, RequestHeaderCodec)]
61#[serde(rename_all = "camelCase")]
62#[header(
63 type_id = "rocketmq_protocol::protocol::header::namesrv::perm_broker_header::AddWritePermOfBrokerRequestHeader",
64 java_class = "org.apache.rocketmq.remoting.protocol.header.namesrv.AddWritePermOfBrokerRequestHeader"
65)]
66pub struct AddWritePermOfBrokerRequestHeader {
67 #[header(required)]
68 pub broker_name: CheetahString,
69}
70
71impl AddWritePermOfBrokerRequestHeader {
72 pub fn new(broker_name: impl Into<CheetahString>) -> Self {
73 Self {
74 broker_name: broker_name.into(),
75 }
76 }
77}
78
79#[derive(Debug, Clone, Deserialize, Serialize, Default, RequestHeaderCodec)]
80#[serde(rename_all = "camelCase")]
81#[header(
82 type_id = "rocketmq_protocol::protocol::header::namesrv::perm_broker_header::AddWritePermOfBrokerResponseHeader",
83 java_class = "org.apache.rocketmq.remoting.protocol.header.namesrv.AddWritePermOfBrokerResponseHeader"
84)]
85pub struct AddWritePermOfBrokerResponseHeader {
86 #[header(required)]
87 pub add_topic_count: i32,
88}
89
90impl AddWritePermOfBrokerResponseHeader {
91 pub fn new(add_topic_count: i32) -> Self {
92 Self { add_topic_count }
93 }
94
95 pub fn get_add_topic_count(&self) -> i32 {
96 self.add_topic_count
97 }
98}
99
100#[cfg(test)]
101mod tests {
102 use super::*;
103
104 #[test]
105 fn permission_headers_use_java_wire_names() {
106 let wipe_request = WipeWritePermOfBrokerRequestHeader::new("broker-a");
107 let wipe_response = WipeWritePermOfBrokerResponseHeader::new(3);
108 let add_request = AddWritePermOfBrokerRequestHeader::new("broker-b");
109 let add_response = AddWritePermOfBrokerResponseHeader::new(5);
110
111 assert_eq!(
112 serde_json::to_string(&wipe_request).unwrap(),
113 r#"{"brokerName":"broker-a"}"#
114 );
115 assert_eq!(
116 serde_json::to_string(&wipe_response).unwrap(),
117 r#"{"wipeTopicCount":3}"#
118 );
119 assert_eq!(
120 serde_json::to_string(&add_request).unwrap(),
121 r#"{"brokerName":"broker-b"}"#
122 );
123 assert_eq!(serde_json::to_string(&add_response).unwrap(), r#"{"addTopicCount":5}"#);
124
125 let wipe_response: WipeWritePermOfBrokerResponseHeader =
126 serde_json::from_str(r#"{"wipeTopicCount":3}"#).unwrap();
127 let add_response: AddWritePermOfBrokerResponseHeader = serde_json::from_str(r#"{"addTopicCount":5}"#).unwrap();
128 assert_eq!(wipe_response.get_wipe_topic_count(), 3);
129 assert_eq!(add_response.get_add_topic_count(), 5);
130 }
131}