parachains_relay/
parachains_loop_metrics.rs1use bp_polkadot_core::parachains::ParaId;
18use relay_utils::{
19 metrics::{metric_name, register, Gauge, Metric, PrometheusError, Registry, U64},
20 UniqueSaturatedInto,
21};
22
23#[derive(Clone)]
25pub struct ParachainsLoopMetrics {
26 best_source_block_numbers: Gauge<U64>,
28 best_target_block_numbers: Gauge<U64>,
30}
31
32impl ParachainsLoopMetrics {
33 pub fn new(prefix: Option<&str>) -> Result<Self, PrometheusError> {
35 Ok(ParachainsLoopMetrics {
36 best_source_block_numbers: Gauge::new(
37 metric_name(prefix, "best_parachain_block_number_at_source"),
38 "Best parachain block numbers at the source relay chain".to_string(),
39 )?,
40 best_target_block_numbers: Gauge::new(
41 metric_name(prefix, "best_parachain_block_number_at_target"),
42 "Best parachain block numbers at the target chain".to_string(),
43 )?,
44 })
45 }
46
47 pub fn update_best_parachain_block_at_source<Number: UniqueSaturatedInto<u64>>(
49 &self,
50 parachain: ParaId,
51 block_number: Number,
52 ) {
53 let block_number = block_number.unique_saturated_into();
54 log::trace!(
55 target: "bridge-metrics",
56 "Updated value of metric 'best_parachain_block_number_at_source[{:?}]': {:?}",
57 parachain,
58 block_number,
59 );
60 self.best_source_block_numbers.set(block_number);
61 }
62
63 pub fn update_best_parachain_block_at_target<Number: UniqueSaturatedInto<u64>>(
65 &self,
66 parachain: ParaId,
67 block_number: Number,
68 ) {
69 let block_number = block_number.unique_saturated_into();
70 log::trace!(
71 target: "bridge-metrics",
72 "Updated value of metric 'best_parachain_block_number_at_target[{:?}]': {:?}",
73 parachain,
74 block_number,
75 );
76 self.best_target_block_numbers.set(block_number);
77 }
78}
79
80impl Metric for ParachainsLoopMetrics {
81 fn register(&self, registry: &Registry) -> Result<(), PrometheusError> {
82 register(self.best_source_block_numbers.clone(), registry)?;
83 register(self.best_target_block_numbers.clone(), registry)?;
84 Ok(())
85 }
86}