tendermint/abci/request/
info.rs

1use crate::prelude::*;
2
3#[doc = include_str!("../doc/request-info.md")]
4#[derive(Clone, PartialEq, Eq, Debug)]
5pub struct Info {
6    /// The Tendermint software semantic version.
7    pub version: String,
8    /// The Tendermint block protocol version.
9    pub block_version: u64,
10    /// The Tendermint p2p protocol version.
11    pub p2p_version: u64,
12    /// The ABCI protocol version.
13    pub abci_version: String,
14}
15
16// =============================================================================
17// Protobuf conversions
18// =============================================================================
19
20mod v0_34 {
21    use super::Info;
22    use tendermint_proto::v0_34::abci as pb;
23    use tendermint_proto::Protobuf;
24
25    impl From<Info> for pb::RequestInfo {
26        fn from(info: Info) -> Self {
27            Self {
28                version: info.version,
29                block_version: info.block_version,
30                p2p_version: info.p2p_version,
31            }
32        }
33    }
34
35    impl TryFrom<pb::RequestInfo> for Info {
36        type Error = crate::Error;
37
38        fn try_from(info: pb::RequestInfo) -> Result<Self, Self::Error> {
39            Ok(Self {
40                version: info.version,
41                block_version: info.block_version,
42                p2p_version: info.p2p_version,
43                abci_version: Default::default(),
44            })
45        }
46    }
47
48    impl Protobuf<pb::RequestInfo> for Info {}
49}
50
51mod v0_37 {
52    use super::Info;
53    use tendermint_proto::v0_37::abci as pb;
54    use tendermint_proto::Protobuf;
55
56    impl From<Info> for pb::RequestInfo {
57        fn from(info: Info) -> Self {
58            Self {
59                version: info.version,
60                block_version: info.block_version,
61                p2p_version: info.p2p_version,
62                abci_version: info.abci_version,
63            }
64        }
65    }
66
67    impl TryFrom<pb::RequestInfo> for Info {
68        type Error = crate::Error;
69
70        fn try_from(info: pb::RequestInfo) -> Result<Self, Self::Error> {
71            Ok(Self {
72                version: info.version,
73                block_version: info.block_version,
74                p2p_version: info.p2p_version,
75                abci_version: info.abci_version,
76            })
77        }
78    }
79
80    impl Protobuf<pb::RequestInfo> for Info {}
81}
82
83mod v0_38 {
84    use super::Info;
85    use tendermint_proto::v0_38::abci as pb;
86    use tendermint_proto::Protobuf;
87
88    impl From<Info> for pb::RequestInfo {
89        fn from(info: Info) -> Self {
90            Self {
91                version: info.version,
92                block_version: info.block_version,
93                p2p_version: info.p2p_version,
94                abci_version: info.abci_version,
95            }
96        }
97    }
98
99    impl TryFrom<pb::RequestInfo> for Info {
100        type Error = crate::Error;
101
102        fn try_from(info: pb::RequestInfo) -> Result<Self, Self::Error> {
103            Ok(Self {
104                version: info.version,
105                block_version: info.block_version,
106                p2p_version: info.p2p_version,
107                abci_version: info.abci_version,
108            })
109        }
110    }
111
112    impl Protobuf<pb::RequestInfo> for Info {}
113}