in heatmap/src/heatmap.rs [202:220]
fn tick(&self, time: Instant) {
loop {
let next_tick = self.next_tick.load(Ordering::Relaxed);
if time < next_tick {
return;
} else {
self.next_tick.fetch_add(self.resolution, Ordering::Relaxed);
self.current.fetch_add(1, Ordering::Relaxed);
if self.current.load(Ordering::Relaxed) >= self.slices.len() {
self.current.store(0, Ordering::Relaxed);
}
let current = self.current.load(Ordering::Relaxed);
if let Some(slice) = self.slices.get(current) {
let _ = self.summary.subtract(slice);
slice.clear();
}
}
}
}