celestia_core/abci/request/
process_proposal.rs

1use crate::block::{Data, Header};
2use crate::prelude::*;
3
4#[doc = include_str!("../doc/request-processproposal.md")]
5#[derive(Clone, Debug, PartialEq, Eq)]
6pub struct ProcessProposal {
7    pub header: Header,
8    pub block_data: Data,
9}
10
11// =============================================================================
12// Protobuf conversions
13// =============================================================================
14
15mod v0_34 {
16    use super::ProcessProposal;
17    use crate::{prelude::*, Error};
18    use celestia_core_proto::v0_34::abci as pb;
19    use celestia_core_proto::Protobuf;
20
21    impl From<ProcessProposal> for pb::RequestProcessProposal {
22        fn from(value: ProcessProposal) -> Self {
23            Self {
24                header: Some(value.header.into()),
25                block_data: Some(value.block_data.into()),
26            }
27        }
28    }
29
30    impl TryFrom<pb::RequestProcessProposal> for ProcessProposal {
31        type Error = Error;
32
33        fn try_from(message: pb::RequestProcessProposal) -> Result<Self, Self::Error> {
34            Ok(ProcessProposal {
35                header: message
36                    .header
37                    .ok_or_else(Error::missing_header)?
38                    .try_into()?,
39                block_data: message
40                    .block_data
41                    .ok_or_else(Error::missing_data)?
42                    .try_into()?,
43            })
44        }
45    }
46
47    impl Protobuf<pb::RequestProcessProposal> for ProcessProposal {}
48}