canic_core/ops/
perf.rs

1pub use crate::perf::PerfEntry;
2
3use crate::{dto::Page, perf, types::PageRequest};
4
5///
6/// PerfOps
7///
8
9pub struct PerfOps;
10
11impl PerfOps {
12    pub(crate) fn record(label: &str, delta: u64) {
13        perf::record_timer(label, delta);
14    }
15
16    #[must_use]
17    pub fn snapshot(request: PageRequest) -> Page<PerfEntry> {
18        let request = request.clamped();
19        let offset = usize::try_from(request.offset).unwrap_or(usize::MAX);
20        let limit = usize::try_from(request.limit).unwrap_or(usize::MAX);
21
22        let entries = perf::entries();
23        let total = entries.len() as u64;
24        let entries = entries.into_iter().skip(offset).take(limit).collect();
25
26        Page { entries, total }
27    }
28}