rocketmq_common/common/message/
message_queue_assignment.rs1use std::collections::HashMap;
18use std::hash::Hash;
19use std::hash::Hasher;
20
21use cheetah_string::CheetahString;
22use serde::Deserialize;
23use serde::Serialize;
24
25use crate::common::message::message_enum::MessageRequestMode;
26use crate::common::message::message_queue::MessageQueue;
27
28#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
29#[serde(rename_all = "camelCase")]
30pub struct MessageQueueAssignment {
31 pub message_queue: Option<MessageQueue>,
32 pub mode: MessageRequestMode,
33 pub attachments: Option<HashMap<CheetahString, CheetahString>>,
34}
35
36impl Hash for MessageQueueAssignment {
37 fn hash<H: Hasher>(&self, state: &mut H) {
38 self.message_queue.hash(state);
39 self.mode.hash(state);
40 if let Some(ref attachments) = self.attachments {
41 for (key, value) in attachments {
42 key.hash(state);
43 value.hash(state);
44 }
45 }
46 }
47}
48
49impl Default for MessageQueueAssignment {
50 fn default() -> Self {
51 MessageQueueAssignment {
52 message_queue: None,
53 mode: MessageRequestMode::Pull,
54 attachments: None,
55 }
56 }
57}