Skip to main content

canic_core/dto/
metrics.rs

1use crate::dto::prelude::*;
2
3//
4// Metrics DTOs
5//
6
7//
8// MetricsKind
9//
10// Metric tier selector.
11//
12
13#[derive(CandidType, Clone, Copy, Deserialize)]
14#[remain::sorted]
15pub enum MetricsKind {
16    Core,
17    Placement,
18    Platform,
19    Runtime,
20    Security,
21    Storage,
22}
23
24//
25// MetricEntry
26//
27// Unified metrics row.
28//
29
30#[derive(CandidType, Deserialize)]
31pub struct MetricEntry {
32    // Ordered labels.
33    pub labels: Vec<String>,
34
35    // Optional principal dimension.
36    pub principal: Option<Principal>,
37
38    // Metric payload.
39    pub value: MetricValue,
40}
41
42//
43// MetricValue
44//
45
46#[derive(CandidType, Deserialize)]
47pub enum MetricValue {
48    Count(u64),
49    CountAndU64 { count: u64, value_u64: u64 },
50    U128(u128),
51}
52
53//
54// QueryPerfSample
55//
56// Same-call query performance sample.
57//
58
59#[derive(CandidType, Deserialize)]
60pub struct QueryPerfSample<T> {
61    // Query result returned by the probe.
62    pub value: T,
63
64    // Local instruction counter observed in the same query call context.
65    pub local_instructions: u64,
66}