bee_inx/milestone/
info.rs

1// Copyright 2022 IOTA Stiftung
2// SPDX-License-Identifier: Apache-2.0
3
4use bee_block as bee;
5use inx::proto;
6
7/// The [`MilestoneInfo`] type.
8#[derive(Clone, Debug, PartialEq, Eq)]
9pub struct MilestoneInfo {
10    /// The [`MilestoneId`](bee::payload::milestone::MilestoneId) of the milestone.
11    pub milestone_id: Option<bee::payload::milestone::MilestoneId>,
12    /// The milestone index.
13    pub milestone_index: bee::payload::milestone::MilestoneIndex,
14    /// The timestamp of the milestone.
15    pub milestone_timestamp: u32,
16}
17
18impl TryFrom<proto::MilestoneInfo> for MilestoneInfo {
19    type Error = bee::InxError;
20
21    fn try_from(value: proto::MilestoneInfo) -> Result<Self, Self::Error> {
22        Ok(MilestoneInfo {
23            milestone_id: value.milestone_id.map(TryInto::try_into).transpose()?,
24            milestone_index: value.milestone_index.into(),
25            milestone_timestamp: value.milestone_timestamp,
26        })
27    }
28}
29
30impl From<MilestoneInfo> for proto::MilestoneInfo {
31    fn from(value: MilestoneInfo) -> Self {
32        Self {
33            milestone_id: value.milestone_id.map(Into::into),
34            milestone_index: value.milestone_index.0,
35            milestone_timestamp: value.milestone_timestamp,
36        }
37    }
38}