icentral_node_queue/
node_queue.rs1crate::ix!();
2
3#[derive(Debug)]
5pub struct NodeIdQueue {
6 name: String,
7 data: Queue<NodeId>,
8}
9
10impl Named for NodeIdQueue {
11
12 fn name(&self) -> Cow<'_, str> {
13 Cow::Borrowed(&self.name)
14 }
15}
16
17impl CreateNamedEmpty for NodeIdQueue {
18
19 fn empty(name: &str) -> Self {
20 Self {
21 name: name.to_owned(),
22 data: Queue::default(),
23 }
24 }
25}
26
27impl NodeIdQueue {
28
29 pub fn len(&self) -> usize {
30 self.data.len()
31 }
32
33 pub fn peek(&mut self) -> Option<NodeId> {
34
35 debug!("peeking the NodeIdQueue {} of len: {}", self.name, self.len());
36
37 self.data.peek()
38 }
39
40 pub fn is_empty(&self) -> bool {
41
42 let is_empty = self.data.is_empty();
43
44 debug!("checking whether the NodeIdQueue {} is empty? {}", self.name, is_empty);
45
46 is_empty
47 }
48
49 pub fn new(first: NodeId, name: &str) -> Self {
50
51 debug!("creating new NodeIdQueue named {} starting with node {}", name, first);
52
53 let mut queue = NodeIdQueue::empty(name);
54
55 queue.enqueue(first);
56
57 queue
58 }
59
60 pub fn enqueue(&mut self, n: NodeId) {
61
62 debug!("enqueuing NodeId {} into NodeIdQueue {}", n, self.name);
63
64 self.data.queue(n);
65 }
66
67 pub fn dequeue(&mut self) -> Option<NodeId> {
68
69 let maybe_node = self.data.dequeue();
70
71 if let Some(node) = maybe_node {
72
73 debug!("dequeued NodeId {:?} from NodeIdQueue {}", node, self.name);
74
75 } else {
76
77 debug!("attempted dequeue of NodeIdQueue {}, but there are no more nodes left on the queue!", self.name);
78 }
79
80 maybe_node
81 }
82}