rocketmq_remoting/protocol/body/
message_request_mode_serialize_wrapper.rs1use std::collections::HashMap;
18
19use cheetah_string::CheetahString;
20
21use crate::protocol::body::set_message_request_mode_request_body::SetMessageRequestModeRequestBody;
22
23pub type MessageRequestModeMap = HashMap<
24 CheetahString, HashMap<CheetahString , SetMessageRequestModeRequestBody>,
26>;
27
28#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, Default)]
29#[serde(rename_all = "camelCase")]
30pub struct MessageRequestModeSerializeWrapper {
31 message_request_mode_map: MessageRequestModeMap,
32}
33
34impl MessageRequestModeSerializeWrapper {
35 pub fn new(message_request_mode_map: MessageRequestModeMap) -> Self {
36 Self {
37 message_request_mode_map,
38 }
39 }
40
41 pub fn message_request_mode_map(&self) -> &MessageRequestModeMap {
42 &self.message_request_mode_map
43 }
44
45 pub fn into_inner(self) -> MessageRequestModeMap {
46 self.message_request_mode_map
47 }
48
49 pub fn from_inner(message_request_mode_map: MessageRequestModeMap) -> Self {
50 Self {
51 message_request_mode_map,
52 }
53 }
54
55 pub fn set_message_request_mode_map(&mut self, map: MessageRequestModeMap) {
56 self.message_request_mode_map = map;
57 }
58}
59#[cfg(test)]
60mod tests {
61 use super::*;
62 use crate::protocol::body::set_message_request_mode_request_body::SetMessageRequestModeRequestBody;
63
64 #[test]
65 fn default_creates_wrapper_with_empty_map() {
66 let wrapper = MessageRequestModeSerializeWrapper::default();
67 assert!(wrapper.message_request_mode_map().is_empty());
68 }
69
70 #[test]
71 fn new_creates_wrapper_with_provided_map() {
72 let mut map = MessageRequestModeMap::new();
73 let mut group_map = HashMap::new();
74 group_map.insert(
75 CheetahString::from("group1"),
76 SetMessageRequestModeRequestBody::default(),
77 );
78 map.insert(CheetahString::from("topic1"), group_map);
79
80 let wrapper = MessageRequestModeSerializeWrapper::new(map);
81 assert_eq!(wrapper.message_request_mode_map().len(), 1);
82 assert!(wrapper
83 .message_request_mode_map()
84 .contains_key(&CheetahString::from("topic1")));
85 }
86
87 #[test]
88 fn new_creates_wrapper_with_empty_map() {
89 let map = MessageRequestModeMap::new();
90 let wrapper = MessageRequestModeSerializeWrapper::new(map);
91 assert!(wrapper.message_request_mode_map().is_empty());
92 }
93}