cuprated/p2p/
network_address.rs

1use std::net::SocketAddr;
2
3use cuprate_p2p_core::{client::InternalPeerID, ClearNet, NetworkZone, Tor};
4use cuprate_wire::OnionAddr;
5
6/// An identifier for a P2P peer on any network.
7#[derive(Debug, Clone, PartialEq, Eq, Hash)]
8pub enum CrossNetworkInternalPeerId {
9    /// A clear-net peer.
10    ClearNet(InternalPeerID<<ClearNet as NetworkZone>::Addr>),
11    /// A Tor onion peer.
12    Tor(InternalPeerID<<Tor as NetworkZone>::Addr>),
13}
14
15impl From<InternalPeerID<SocketAddr>> for CrossNetworkInternalPeerId {
16    fn from(addr: InternalPeerID<SocketAddr>) -> Self {
17        Self::ClearNet(addr)
18    }
19}
20
21impl From<InternalPeerID<OnionAddr>> for CrossNetworkInternalPeerId {
22    fn from(addr: InternalPeerID<OnionAddr>) -> Self {
23        Self::Tor(addr)
24    }
25}