Skip to main content

stellar_xdr/generated/
peer_stats.rs

1#[allow(unused_imports, clippy::wildcard_imports)]
2use super::*;
3
4/// PeerStats is an XDR Struct defined as:
5///
6/// ```text
7/// struct PeerStats
8/// {
9///     NodeID id;
10///     string versionStr<100>;
11///     uint64 messagesRead;
12///     uint64 messagesWritten;
13///     uint64 bytesRead;
14///     uint64 bytesWritten;
15///     uint64 secondsConnected;
16///
17///     uint64 uniqueFloodBytesRecv;
18///     uint64 duplicateFloodBytesRecv;
19///     uint64 uniqueFetchBytesRecv;
20///     uint64 duplicateFetchBytesRecv;
21///
22///     uint64 uniqueFloodMessageRecv;
23///     uint64 duplicateFloodMessageRecv;
24///     uint64 uniqueFetchMessageRecv;
25///     uint64 duplicateFetchMessageRecv;
26/// };
27/// ```
28///
29#[cfg_attr(feature = "alloc", derive(Default))]
30#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31#[cfg_attr(feature = "serde", cfg_eval::cfg_eval)]
32#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
33#[cfg_attr(
34    all(feature = "serde", feature = "alloc"),
35    serde_with::serde_as,
36    derive(serde::Serialize, serde::Deserialize),
37    serde(rename_all = "snake_case")
38)]
39#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
40pub struct PeerStats {
41    pub id: NodeId,
42    pub version_str: StringM<100>,
43    #[cfg_attr(
44        all(feature = "serde", feature = "alloc"),
45        serde_as(as = "NumberOrString")
46    )]
47    pub messages_read: u64,
48    #[cfg_attr(
49        all(feature = "serde", feature = "alloc"),
50        serde_as(as = "NumberOrString")
51    )]
52    pub messages_written: u64,
53    #[cfg_attr(
54        all(feature = "serde", feature = "alloc"),
55        serde_as(as = "NumberOrString")
56    )]
57    pub bytes_read: u64,
58    #[cfg_attr(
59        all(feature = "serde", feature = "alloc"),
60        serde_as(as = "NumberOrString")
61    )]
62    pub bytes_written: u64,
63    #[cfg_attr(
64        all(feature = "serde", feature = "alloc"),
65        serde_as(as = "NumberOrString")
66    )]
67    pub seconds_connected: u64,
68    #[cfg_attr(
69        all(feature = "serde", feature = "alloc"),
70        serde_as(as = "NumberOrString")
71    )]
72    pub unique_flood_bytes_recv: u64,
73    #[cfg_attr(
74        all(feature = "serde", feature = "alloc"),
75        serde_as(as = "NumberOrString")
76    )]
77    pub duplicate_flood_bytes_recv: u64,
78    #[cfg_attr(
79        all(feature = "serde", feature = "alloc"),
80        serde_as(as = "NumberOrString")
81    )]
82    pub unique_fetch_bytes_recv: u64,
83    #[cfg_attr(
84        all(feature = "serde", feature = "alloc"),
85        serde_as(as = "NumberOrString")
86    )]
87    pub duplicate_fetch_bytes_recv: u64,
88    #[cfg_attr(
89        all(feature = "serde", feature = "alloc"),
90        serde_as(as = "NumberOrString")
91    )]
92    pub unique_flood_message_recv: u64,
93    #[cfg_attr(
94        all(feature = "serde", feature = "alloc"),
95        serde_as(as = "NumberOrString")
96    )]
97    pub duplicate_flood_message_recv: u64,
98    #[cfg_attr(
99        all(feature = "serde", feature = "alloc"),
100        serde_as(as = "NumberOrString")
101    )]
102    pub unique_fetch_message_recv: u64,
103    #[cfg_attr(
104        all(feature = "serde", feature = "alloc"),
105        serde_as(as = "NumberOrString")
106    )]
107    pub duplicate_fetch_message_recv: u64,
108}
109
110impl ReadXdr for PeerStats {
111    #[cfg(feature = "std")]
112    fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
113        r.with_limited_depth(|r| {
114            Ok(Self {
115                id: NodeId::read_xdr(r)?,
116                version_str: StringM::<100>::read_xdr(r)?,
117                messages_read: u64::read_xdr(r)?,
118                messages_written: u64::read_xdr(r)?,
119                bytes_read: u64::read_xdr(r)?,
120                bytes_written: u64::read_xdr(r)?,
121                seconds_connected: u64::read_xdr(r)?,
122                unique_flood_bytes_recv: u64::read_xdr(r)?,
123                duplicate_flood_bytes_recv: u64::read_xdr(r)?,
124                unique_fetch_bytes_recv: u64::read_xdr(r)?,
125                duplicate_fetch_bytes_recv: u64::read_xdr(r)?,
126                unique_flood_message_recv: u64::read_xdr(r)?,
127                duplicate_flood_message_recv: u64::read_xdr(r)?,
128                unique_fetch_message_recv: u64::read_xdr(r)?,
129                duplicate_fetch_message_recv: u64::read_xdr(r)?,
130            })
131        })
132    }
133}
134
135impl WriteXdr for PeerStats {
136    #[cfg(feature = "std")]
137    fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
138        w.with_limited_depth(|w| {
139            self.id.write_xdr(w)?;
140            self.version_str.write_xdr(w)?;
141            self.messages_read.write_xdr(w)?;
142            self.messages_written.write_xdr(w)?;
143            self.bytes_read.write_xdr(w)?;
144            self.bytes_written.write_xdr(w)?;
145            self.seconds_connected.write_xdr(w)?;
146            self.unique_flood_bytes_recv.write_xdr(w)?;
147            self.duplicate_flood_bytes_recv.write_xdr(w)?;
148            self.unique_fetch_bytes_recv.write_xdr(w)?;
149            self.duplicate_fetch_bytes_recv.write_xdr(w)?;
150            self.unique_flood_message_recv.write_xdr(w)?;
151            self.duplicate_flood_message_recv.write_xdr(w)?;
152            self.unique_fetch_message_recv.write_xdr(w)?;
153            self.duplicate_fetch_message_recv.write_xdr(w)?;
154            Ok(())
155        })
156    }
157}