dpp/
metadata.rs

1use bincode::Encode;
2use platform_serialization::de::Decode;
3use serde::{Deserialize, Serialize};
4
5use crate::{errors::ProtocolError, prelude::TimestampMillis, util::deserializer::ProtocolVersion};
6
7#[derive(
8    Serialize, Deserialize, Encode, Decode, Debug, Default, Clone, Copy, PartialEq, PartialOrd, Eq,
9)]
10#[serde(rename_all = "camelCase")]
11pub struct Metadata {
12    #[serde(default)]
13    pub block_height: u64,
14    #[serde(default)]
15    pub core_chain_locked_height: u64,
16    #[serde(default)]
17    pub time_ms: TimestampMillis,
18    #[serde(default)]
19    pub protocol_version: ProtocolVersion,
20}
21
22impl std::convert::TryFrom<&str> for Metadata {
23    type Error = ProtocolError;
24
25    fn try_from(d: &str) -> Result<Metadata, Self::Error> {
26        serde_json::from_str(d).map_err(|e| ProtocolError::EncodingError(e.to_string()))
27    }
28}