pub struct HistoryCache { /* private fields */ }Expand description
Geordnete Sample-Ablage.
Interner Storage: BTreeMap fuer O(log n) Insert/Lookup und effizienten
Range-Iterator.
**** die schreibenden Methoden brauchen weiter
&mut self (BTreeMap ist nicht concurrent-safe), aber Stats sind
in einem Arc<HistoryCacheStats> parallel verfuegbar — siehe
stats.
Implementations§
Source§impl HistoryCache
impl HistoryCache
Sourcepub fn new_with_kind(kind: HistoryKind, max_samples: usize) -> Self
pub fn new_with_kind(kind: HistoryKind, max_samples: usize) -> Self
Erzeugt einen neuen Cache. max_samples ist die obere Grenze:
bei KeepAll fuehrt Ueberschreitung zu CapacityExceeded, bei
KeepLast zu LRU-Eviction des aeltesten Samples.
Sourcepub fn stats(&self) -> Arc<HistoryCacheStats>
pub fn stats(&self) -> Arc<HistoryCacheStats>
Geteilter Stats-Handle fuer lock-freies Monitoring.
Konsumenten halten einen Arc<HistoryCacheStats> und pollen die
Atomics mit Acquire-Ordering. Werte spiegeln immer eine
abgeschlossene Cache-Mutation; cross-field-Konsistenz zwischen
len und max_sn ist nicht garantiert (Tear-Risiko).
Sourcepub fn new(max_samples: usize) -> Self
pub fn new(max_samples: usize) -> Self
Legacy-Konstruktor — erzeugt einen KeepAll-Cache mit harter
Kapazitaets-Grenze. Fuer neue Nutzer [new_with_kind] bevorzugen.
Sourcepub fn kind(&self) -> HistoryKind
pub fn kind(&self) -> HistoryKind
History-Kind dieses Caches.
Sourcepub fn evicted_count(&self) -> u64
pub fn evicted_count(&self) -> u64
Anzahl per KeepLast-Eviction verworfener Samples seit
Start.
Sourcepub fn insert(&mut self, change: CacheChange) -> Result<(), CacheError>
pub fn insert(&mut self, change: CacheChange) -> Result<(), CacheError>
Fuegt ein Change ein.
§Errors
CapacityExceeded: nur beiKeepAll, Cache voll.DuplicateSequenceNumber: SN bereits vorhanden.ZeroDepth:KeepLast { depth: 0 }.
Sourcepub fn get(&self, sn: SequenceNumber) -> Option<&CacheChange>
pub fn get(&self, sn: SequenceNumber) -> Option<&CacheChange>
Holt ein Change per SN.
Sourcepub fn remove_up_to(&mut self, sn: SequenceNumber) -> usize
pub fn remove_up_to(&mut self, sn: SequenceNumber) -> usize
Entfernt alle Changes mit SN ≤ sn.
Liefert die Anzahl entfernter Eintraege.
Sourcepub fn iter_range(
&self,
lo: SequenceNumber,
hi: SequenceNumber,
) -> impl Iterator<Item = &CacheChange> + '_
pub fn iter_range( &self, lo: SequenceNumber, hi: SequenceNumber, ) -> impl Iterator<Item = &CacheChange> + '_
Iteriert in SN-Reihenfolge ueber Changes im Bereich [lo, hi]
(beide inklusiv).
Sourcepub fn min_sn(&self) -> Option<SequenceNumber>
pub fn min_sn(&self) -> Option<SequenceNumber>
Kleinste SN im Cache.
Sourcepub fn max_sn(&self) -> Option<SequenceNumber>
pub fn max_sn(&self) -> Option<SequenceNumber>
Groesste SN im Cache.