rocketmq_remoting/protocol/body/topic_info_wrapper/
topic_queue_wrapper.rs1use cheetah_string::CheetahString;
18use dashmap::DashMap;
19use rocketmq_rust::ArcMut;
20use serde::Deserialize;
21use serde::Serialize;
22
23use crate::protocol::static_topic::topic_queue_mapping_detail::TopicQueueMappingDetail;
24use crate::protocol::DataVersion;
25
26#[derive(Clone, Debug, Serialize, Deserialize, Default)]
27#[serde(rename_all = "camelCase")]
28pub struct TopicQueueMappingSerializeWrapper {
29 topic_queue_mapping_info_map: Option<DashMap<CheetahString, ArcMut<TopicQueueMappingDetail>>>,
30 data_version: Option<DataVersion>,
31}
32
33impl TopicQueueMappingSerializeWrapper {
34 pub fn new(
35 topic_queue_mapping_info_map: Option<
36 DashMap<CheetahString, ArcMut<TopicQueueMappingDetail>>,
37 >,
38 data_version: Option<DataVersion>,
39 ) -> Self {
40 Self {
41 topic_queue_mapping_info_map,
42 data_version,
43 }
44 }
45}
46
47impl TopicQueueMappingSerializeWrapper {
48 pub fn topic_queue_mapping_info_map(
49 &self,
50 ) -> Option<&DashMap<CheetahString, ArcMut<TopicQueueMappingDetail>>> {
51 self.topic_queue_mapping_info_map.as_ref()
52 }
53
54 pub fn take_topic_queue_mapping_info_map(
55 &mut self,
56 ) -> Option<DashMap<CheetahString, ArcMut<TopicQueueMappingDetail>>> {
57 self.topic_queue_mapping_info_map.take()
58 }
59
60 pub fn data_version(&self) -> Option<&DataVersion> {
61 match &self.data_version {
62 None => None,
63 Some(value) => Some(value),
64 }
65 }
66}