reddb_types/
queue_mode.rs1#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
8pub enum QueueMode {
9 Fanout,
10 #[default]
11 Work,
12}
13
14impl QueueMode {
15 pub fn as_str(self) -> &'static str {
16 match self {
17 Self::Fanout => "fanout",
18 Self::Work => "work",
19 }
20 }
21
22 pub fn parse(value: &str) -> Option<Self> {
23 match value.to_ascii_uppercase().as_str() {
24 "FANOUT" => Some(Self::Fanout),
25 "WORK" | "STANDARD" | "FIFO" => Some(Self::Work),
26 _ => None,
27 }
28 }
29}
30
31#[cfg(test)]
32mod tests {
33 use super::*;
34
35 #[test]
36 fn queue_modes_parse_aliases_and_render_canonical_names() {
37 assert_eq!(QueueMode::default(), QueueMode::Work);
38 assert_eq!(QueueMode::Fanout.as_str(), "fanout");
39 assert_eq!(QueueMode::Work.as_str(), "work");
40
41 assert_eq!(QueueMode::parse("fanout"), Some(QueueMode::Fanout));
42 for alias in ["work", "STANDARD", "fifo"] {
43 assert_eq!(QueueMode::parse(alias), Some(QueueMode::Work), "{alias}");
44 }
45 assert_eq!(QueueMode::parse("broadcast"), None);
46 }
47}