rocketmq_protocol/protocol/header/
update_group_forbidden_request_header.rs1use cheetah_string::CheetahString;
16use rocketmq_macros::RequestHeaderCodec;
17use serde::Deserialize;
18use serde::Serialize;
19
20use crate::rpc::topic_request_header::TopicRequestHeader;
21
22#[derive(Clone, Debug, Serialize, Deserialize, Default, RequestHeaderCodec)]
23#[header(
24 type_id = "rocketmq_protocol::protocol::header::update_group_forbidden_request_header::UpdateGroupForbiddenRequestHeader",
25 java_class = "org.apache.rocketmq.remoting.protocol.header.UpdateGroupForbiddenRequestHeader"
26)]
27#[serde(rename_all = "camelCase")]
28pub struct UpdateGroupForbiddenRequestHeader {
29 #[header(required)]
30 pub group: CheetahString,
31
32 #[header(required)]
33 pub topic: CheetahString,
34
35 pub readable: Option<bool>,
36
37 #[serde(flatten)]
38 #[header(flatten, presence = "always")]
39 pub topic_request_header: Option<TopicRequestHeader>,
40}
41
42#[cfg(test)]
43mod tests {
44 use std::collections::HashMap;
45
46 use super::*;
47 use crate::protocol::command_custom_header::FromMap;
48
49 #[test]
50 fn update_group_forbidden_request_header_deserializes_from_map() {
51 let mut map = HashMap::new();
52 map.insert(
53 CheetahString::from_static_str("group"),
54 CheetahString::from_static_str("group-a"),
55 );
56 map.insert(
57 CheetahString::from_static_str("topic"),
58 CheetahString::from_static_str("topic-a"),
59 );
60 map.insert(
61 CheetahString::from_static_str("readable"),
62 CheetahString::from_static_str("false"),
63 );
64
65 let header = <UpdateGroupForbiddenRequestHeader as FromMap>::from(&map).expect("header from map");
66 assert_eq!(header.group, CheetahString::from_static_str("group-a"));
67 assert_eq!(header.topic, CheetahString::from_static_str("topic-a"));
68 assert_eq!(header.readable, Some(false));
69 }
70}