sc_network/protocol/notifications/service/metrics.rs
1// This file is part of Substrate.
2
3// Copyright (C) Parity Technologies (UK) Ltd.
4// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
5
6// This program is free software: you can redistribute it and/or modify
7// it under the terms of the GNU General Public License as published by
8// the Free Software Foundation, either version 3 of the License, or
9// (at your option) any later version.
10
11// This program is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU General Public License for more details.
15
16// You should have received a copy of the GNU General Public License
17// along with this program. If not, see <https://www.gnu.org/licenses/>.
18
19use crate::{service::metrics::NotificationMetrics, types::ProtocolName};
20
21/// Register opened substream to Prometheus.
22pub fn register_substream_opened(metrics: &Option<NotificationMetrics>, protocol: &ProtocolName) {
23 if let Some(metrics) = metrics {
24 metrics.register_substream_opened(&protocol);
25 }
26}
27
28/// Register closed substream to Prometheus.
29pub fn register_substream_closed(metrics: &Option<NotificationMetrics>, protocol: &ProtocolName) {
30 if let Some(metrics) = metrics {
31 metrics.register_substream_closed(&protocol);
32 }
33}
34
35/// Register sent notification to Prometheus.
36pub fn register_notification_sent(
37 metrics: &Option<std::sync::Arc<NotificationMetrics>>,
38 protocol: &ProtocolName,
39 size: usize,
40) {
41 if let Some(metrics) = metrics {
42 metrics.register_notification_sent(protocol, size);
43 }
44}
45
46/// Register received notification to Prometheus.
47pub fn register_notification_received(
48 metrics: &Option<NotificationMetrics>,
49 protocol: &ProtocolName,
50 size: usize,
51) {
52 if let Some(metrics) = metrics {
53 metrics.register_notification_received(protocol, size);
54 }
55}