icentral_node_queue/
node_queue.rs

1crate::ix!();
2
3///-----------------
4#[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}