hotshot_types/
storage_metrics.rs

1use crate::traits::metrics::{Histogram, Metrics, NoMetrics};
2
3/// Storage metrics
4#[derive(Clone, Debug)]
5pub struct StorageMetricsValue {
6    /// Time taken by the storage to append a VID
7    pub append_vid_duration: Box<dyn Histogram>,
8    /// Time taken by the storage to append DA
9    pub append_da_duration: Box<dyn Histogram>,
10    /// Time taken by the storage to append Quorum Proposal
11    pub append_quorum_duration: Box<dyn Histogram>,
12}
13
14impl StorageMetricsValue {
15    /// Create a new instance of this [`StorageMetricsValue`] struct, setting all the counters and gauges
16    #[must_use]
17    pub fn new(metrics: &dyn Metrics) -> Self {
18        Self {
19            append_vid_duration: metrics.create_histogram(
20                String::from("append_vid_duration"),
21                Some("seconds".to_string()),
22            ),
23            append_da_duration: metrics.create_histogram(
24                String::from("append_da_duration"),
25                Some("seconds".to_string()),
26            ),
27            append_quorum_duration: metrics.create_histogram(
28                String::from("append_quorum_duration"),
29                Some("seconds".to_string()),
30            ),
31        }
32    }
33}
34
35impl Default for StorageMetricsValue {
36    fn default() -> Self {
37        Self::new(&*NoMetrics::boxed())
38    }
39}