1use bee_block as bee;
5use inx::proto;
6
7use crate::{maybe_missing, Milestone, ProtocolParameters};
8
9#[derive(Clone, Debug, PartialEq, Eq)]
11pub struct NodeStatus {
12 pub is_healthy: bool,
14 pub is_synced: bool,
16 pub is_almost_synced: bool,
18 pub latest_milestone: Milestone,
20 pub confirmed_milestone: Milestone,
22 pub current_protocol_parameters: ProtocolParameters,
24 pub tangle_pruning_index: bee::payload::milestone::MilestoneIndex,
26 pub milestones_pruning_index: bee::payload::milestone::MilestoneIndex,
28 pub ledger_pruning_index: bee::payload::milestone::MilestoneIndex,
30 pub ledger_index: bee::payload::milestone::MilestoneIndex,
32}
33
34impl TryFrom<proto::NodeStatus> for NodeStatus {
35 type Error = bee::InxError;
36
37 fn try_from(value: proto::NodeStatus) -> Result<Self, Self::Error> {
38 Ok(NodeStatus {
39 is_healthy: value.is_healthy,
40 is_synced: value.is_synced,
41 is_almost_synced: value.is_almost_synced,
42 latest_milestone: maybe_missing!(value.latest_milestone).try_into()?,
43 confirmed_milestone: maybe_missing!(value.confirmed_milestone).try_into()?,
44 current_protocol_parameters: maybe_missing!(value.current_protocol_parameters).into(),
45 tangle_pruning_index: value.tangle_pruning_index.into(),
46 milestones_pruning_index: value.milestones_pruning_index.into(),
47 ledger_pruning_index: value.ledger_pruning_index.into(),
48 ledger_index: value.ledger_index.into(),
49 })
50 }
51}
52
53impl From<NodeStatus> for proto::NodeStatus {
54 fn from(value: NodeStatus) -> Self {
55 Self {
56 is_healthy: value.is_healthy,
57 is_synced: value.is_synced,
58 is_almost_synced: value.is_almost_synced,
59 latest_milestone: Some(value.latest_milestone.into()),
60 confirmed_milestone: Some(value.confirmed_milestone.into()),
61 current_protocol_parameters: Some(value.current_protocol_parameters.into()),
62 tangle_pruning_index: value.tangle_pruning_index.0,
63 milestones_pruning_index: value.milestones_pruning_index.0,
64 ledger_pruning_index: value.ledger_pruning_index.0,
65 ledger_index: value.ledger_index.0,
66 }
67 }
68}