use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct NnsTopologyCoverageReport {
pub schema_version: u32,
pub network: String,
pub source_endpoint: String,
pub node_count: usize,
pub node_provider_count: usize,
pub node_operator_count: usize,
pub data_center_count: usize,
#[serde(flatten)]
pub join_coverage: NnsTopologyJoinCoverageCounts,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct NnsTopologyJoinCoverageCounts {
pub nodes_with_known_node_provider_count: usize,
pub nodes_with_unknown_node_provider_count: usize,
pub nodes_with_known_node_operator_count: usize,
pub nodes_with_unknown_node_operator_count: usize,
pub nodes_with_known_data_center_count: usize,
pub nodes_with_unknown_data_center_count: usize,
pub node_operators_with_known_node_provider_count: usize,
pub node_operators_with_unknown_node_provider_count: usize,
pub node_operators_with_known_data_center_count: usize,
pub node_operators_with_unknown_data_center_count: usize,
}
impl NnsTopologyJoinCoverageCounts {
pub(in crate::nns::topology::report) const fn relationships(
&self,
) -> [(&'static str, usize, usize); 5] {
[
(
"nodes -> node providers",
self.nodes_with_known_node_provider_count,
self.nodes_with_unknown_node_provider_count,
),
(
"nodes -> node operators",
self.nodes_with_known_node_operator_count,
self.nodes_with_unknown_node_operator_count,
),
(
"nodes -> data centers",
self.nodes_with_known_data_center_count,
self.nodes_with_unknown_data_center_count,
),
(
"node operators -> node providers",
self.node_operators_with_known_node_provider_count,
self.node_operators_with_unknown_node_provider_count,
),
(
"node operators -> data centers",
self.node_operators_with_known_data_center_count,
self.node_operators_with_unknown_data_center_count,
),
]
}
}