1pub use crate::perf::PerfEntry;
2
3use crate::{dto::Page, perf, types::PageRequest};
4
5pub 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}