From aa1c96a7a4d9cb2bec2b4126ef5dd05a225cbfe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danie=CC=88l=20de=20Kok?= Date: Fri, 2 Aug 2024 14:17:56 +0000 Subject: [PATCH] Access times --- backends/v3/src/radix.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/backends/v3/src/radix.rs b/backends/v3/src/radix.rs index 2a70707a..160db35d 100644 --- a/backends/v3/src/radix.rs +++ b/backends/v3/src/radix.rs @@ -34,15 +34,17 @@ impl RadixTrie { } } - pub fn find(&self, key: &[u32], blocks: &mut Vec) { + pub fn find(&mut self, key: &[u32], blocks: &mut Vec) { + self.time += 1; self.find_(self.root, key, blocks); } - fn find_(&self, node_id: NodeId, key: &[u32], blocks: &mut Vec) { + fn find_(&mut self, node_id: NodeId, key: &[u32], blocks: &mut Vec) { let node = &self.nodes[node_id]; if let Some(&child_id) = node.children.get(&key[0]) { - let child = &self.nodes[child_id]; + let child = self.nodes.get_mut(child_id).unwrap(); + child.last_accessed = self.time; let shared_prefix_len = child.key.shared_prefix_len(key); blocks.extend(&child.blocks[..shared_prefix_len]); @@ -61,10 +63,9 @@ impl RadixTrie { fn insert_(&mut self, node_id: NodeId, key: &[u32], blocks: &[u32]) -> usize { assert_eq!(key.len(), blocks.len()); - //let node = self.nodes.get_mut(node).unwrap(); - if let Some(&child_id) = self.nodes[node_id].children.get(&key[0]) { let child = self.nodes.get_mut(child_id).unwrap(); + child.last_accessed = self.time; let shared_prefix_len = child.key.shared_prefix_len(key); // We are done, the prefix is already in the trie.