use iroh_base::{EndpointId, TransportAddr};
#[derive(Debug, Clone)]
pub struct RemoteInfo {
pub(super) endpoint_id: EndpointId,
pub(super) addrs: Vec<TransportAddrInfo>,
}
impl RemoteInfo {
pub fn id(&self) -> EndpointId {
self.endpoint_id
}
pub fn addrs(&self) -> impl Iterator<Item = &TransportAddrInfo> {
self.addrs.iter()
}
pub fn into_addrs(self) -> impl Iterator<Item = TransportAddrInfo> {
self.addrs.into_iter()
}
}
#[derive(Debug, Clone)]
pub struct TransportAddrInfo {
pub(super) addr: TransportAddr,
pub(super) usage: TransportAddrUsage,
}
impl TransportAddrInfo {
pub fn addr(&self) -> &TransportAddr {
&self.addr
}
pub fn into_addr(self) -> TransportAddr {
self.addr
}
pub fn usage(&self) -> TransportAddrUsage {
self.usage
}
}
impl From<TransportAddrInfo> for TransportAddr {
fn from(value: TransportAddrInfo) -> Self {
value.addr
}
}
#[derive(Debug, Copy, Clone)]
#[non_exhaustive]
pub enum TransportAddrUsage {
Active,
Inactive,
}