zebra_rpc/methods/types/
peer_info.rs

1//! An array of [`PeerInfo`] is the output of the `getpeerinfo` RPC method.
2
3use zebra_network::{types::MetaAddr, PeerSocketAddr};
4
5/// Item of the `getpeerinfo` response
6#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
7pub struct PeerInfo {
8    /// The IP address and port of the peer
9    pub addr: PeerSocketAddr,
10
11    /// Inbound (true) or Outbound (false)
12    pub inbound: bool,
13}
14
15impl PeerInfo {
16    /// Create a new `PeerInfo` from a `MetaAddr`
17    pub fn new(meta_addr: MetaAddr) -> Self {
18        Self::from(meta_addr)
19    }
20}
21
22impl From<MetaAddr> for PeerInfo {
23    fn from(meta_addr: MetaAddr) -> Self {
24        Self {
25            addr: meta_addr.addr(),
26            inbound: meta_addr.is_inbound(),
27        }
28    }
29}
30
31impl Default for PeerInfo {
32    fn default() -> Self {
33        Self {
34            addr: PeerSocketAddr::unspecified(),
35            inbound: false,
36        }
37    }
38}