tendermint/abci/request/
begin_block.rs1#[allow(unused)]
3use super::DeliverTx;
4use crate::{
5 abci::types::{CommitInfo, Misbehavior},
6 block,
7 prelude::*,
8 Hash,
9};
10
11#[doc = include_str!("../doc/request-beginblock.md")]
12#[derive(Clone, PartialEq, Eq, Debug)]
13pub struct BeginBlock {
14 pub hash: Hash,
18 pub header: block::Header,
20 pub last_commit_info: CommitInfo,
25 pub byzantine_validators: Vec<Misbehavior>,
27}
28
29mod v0_34 {
34 use super::BeginBlock;
35 use crate::Error;
36 use tendermint_proto::v0_34 as pb;
37 use tendermint_proto::Protobuf;
38
39 impl From<BeginBlock> for pb::abci::RequestBeginBlock {
40 fn from(begin_block: BeginBlock) -> Self {
41 Self {
42 hash: begin_block.hash.into(),
43 header: Some(begin_block.header.into()),
44 last_commit_info: Some(begin_block.last_commit_info.into()),
45 byzantine_validators: begin_block
46 .byzantine_validators
47 .into_iter()
48 .map(Into::into)
49 .collect(),
50 }
51 }
52 }
53
54 impl TryFrom<pb::abci::RequestBeginBlock> for BeginBlock {
55 type Error = Error;
56
57 fn try_from(begin_block: pb::abci::RequestBeginBlock) -> Result<Self, Self::Error> {
58 Ok(Self {
59 hash: begin_block.hash.try_into()?,
60 header: begin_block
61 .header
62 .ok_or_else(Error::missing_header)?
63 .try_into()?,
64 last_commit_info: begin_block
65 .last_commit_info
66 .ok_or_else(Error::missing_last_commit_info)?
67 .try_into()?,
68 byzantine_validators: begin_block
69 .byzantine_validators
70 .into_iter()
71 .map(TryInto::try_into)
72 .collect::<Result<_, _>>()?,
73 })
74 }
75 }
76
77 impl Protobuf<pb::abci::RequestBeginBlock> for BeginBlock {}
78}
79
80mod v0_37 {
81 use super::BeginBlock;
82 use crate::Error;
83 use tendermint_proto::v0_37 as pb;
84 use tendermint_proto::Protobuf;
85
86 impl From<BeginBlock> for pb::abci::RequestBeginBlock {
87 fn from(begin_block: BeginBlock) -> Self {
88 Self {
89 hash: begin_block.hash.into(),
90 header: Some(begin_block.header.into()),
91 last_commit_info: Some(begin_block.last_commit_info.into()),
92 byzantine_validators: begin_block
93 .byzantine_validators
94 .into_iter()
95 .map(Into::into)
96 .collect(),
97 }
98 }
99 }
100
101 impl TryFrom<pb::abci::RequestBeginBlock> for BeginBlock {
102 type Error = Error;
103
104 fn try_from(begin_block: pb::abci::RequestBeginBlock) -> Result<Self, Self::Error> {
105 Ok(Self {
106 hash: begin_block.hash.try_into()?,
107 header: begin_block
108 .header
109 .ok_or_else(Error::missing_header)?
110 .try_into()?,
111 last_commit_info: begin_block
112 .last_commit_info
113 .ok_or_else(Error::missing_last_commit_info)?
114 .try_into()?,
115 byzantine_validators: begin_block
116 .byzantine_validators
117 .into_iter()
118 .map(TryInto::try_into)
119 .collect::<Result<_, _>>()?,
120 })
121 }
122 }
123
124 impl Protobuf<pb::abci::RequestBeginBlock> for BeginBlock {}
125}