canic_core/ops/
perf.rs

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