metrale_telemetry/prefix_cache/
no_caching.rs

1// SPDX-License-Identifier: MIT OR Apache-2.0
2
3//! 2026-09-26: The no-op [`PrefixCache`] used when prefix caching is disabled.
4//!
5//! Owner: telemetry.
6//! Invariants: every lookup is empty and nothing is ever stored.
7
8use super::{EvictedBlocks, InsertAcquired, PrefixCache, PrefixMatch};
9
10/// 2026-09-26: No-op prefix cache: `is_active` is `false`, every lookup is
11/// empty, and every insert and eviction reports nothing.
12pub struct NoPrefixCaching;
13
14impl PrefixCache for NoPrefixCaching {
15    fn is_active(&self) -> bool {
16        false
17    }
18
19    fn lookup(
20        &self,
21        _tokens: &[u32],
22        _block_size: usize,
23        _session_hash: u64,
24        _adapter_id: u64,
25    ) -> PrefixMatch {
26        PrefixMatch::empty()
27    }
28
29    fn insert(
30        &self,
31        _tokens: &[u32],
32        _block_table: &[u32],
33        _disk_block_ids: &[u32],
34        _block_size: usize,
35        _matched_tokens: usize,
36        _adapter_id: u64,
37    ) -> InsertAcquired {
38        InsertAcquired::default()
39    }
40
41    fn insert_with_snapshot(
42        &self,
43        _tokens: &[u32],
44        _block_table: &[u32],
45        _disk_block_ids: &[u32],
46        _block_size: usize,
47        _snapshot_id: usize,
48        _session_hash: u64,
49        _matched_tokens: usize,
50        _adapter_id: u64,
51    ) -> (Option<usize>, InsertAcquired) {
52        (None, InsertAcquired::default())
53    }
54
55    fn insert_intermediate_snapshot(
56        &self,
57        _tokens: &[u32],
58        _block_table: &[u32],
59        _disk_block_ids: &[u32],
60        _block_size: usize,
61        _snapshot_id: usize,
62        _session_hash: u64,
63        _matched_tokens: usize,
64        _adapter_id: u64,
65    ) -> Option<usize> {
66        None
67    }
68
69    fn insert_tail_snapshot(
70        &self,
71        _tokens: &[u32],
72        _snapshot_id: usize,
73        _session_hash: u64,
74        _adapter_id: u64,
75    ) -> Vec<usize> {
76        Vec::new()
77    }
78
79    fn insert_tail_sibling_snapshot(
80        &self,
81        _tokens: &[u32],
82        _snapshot_id: usize,
83        _session_hash: u64,
84        _adapter_id: u64,
85    ) -> Option<usize> {
86        None
87    }
88
89    fn release(&self, _tokens: &[u32], _block_size: usize, _adapter_id: u64) {}
90
91    fn release_matched(
92        &self,
93        _tokens: &[u32],
94        _block_size: usize,
95        _matched_tokens: usize,
96        _adapter_id: u64,
97    ) {
98    }
99
100    fn evict(&self, _num_blocks: usize) -> EvictedBlocks {
101        EvictedBlocks::default()
102    }
103
104    fn evict_snapshot_lru(&self) -> Option<usize> {
105        None
106    }
107
108    fn snapshot_count(&self) -> usize {
109        0
110    }
111
112    fn stats(&self) -> (usize, usize) {
113        (0, 0)
114    }
115}