pub struct AddressManager { /* private fields */ }Expand description
The address manager / peer address book.
Manages a database of known peer addresses, categorized into “tried” and “new” tables to prevent eclipse attacks and provide robust peer discovery.
Implementations§
Source§impl AddressManager
impl AddressManager
Sourcepub fn tried_count(&self) -> usize
pub fn tried_count(&self) -> usize
Number of addresses in the “tried” table.
Sourcepub fn add_address(
&mut self,
addr: SocketAddr,
services: u64,
source: IpAddr,
now: u64,
) -> AddResult
pub fn add_address( &mut self, addr: SocketAddr, services: u64, source: IpAddr, now: u64, ) -> AddResult
Add or update a peer address.
addr: the peer’s socket addressservices: advertised service flagssource: who told us about this addressnow: current unix timestamp
Sourcepub fn mark_good(&mut self, addr: &SocketAddr, now: u64)
pub fn mark_good(&mut self, addr: &SocketAddr, now: u64)
Mark an address as successfully connected (move to “tried” table).
Sourcepub fn mark_attempt(&mut self, addr: &SocketAddr, now: u64)
pub fn mark_attempt(&mut self, addr: &SocketAddr, now: u64)
Record a failed connection attempt.
Sourcepub fn get_addr_response(&mut self, now: u64) -> Vec<(u64, SocketAddr)>
pub fn get_addr_response(&mut self, now: u64) -> Vec<(u64, SocketAddr)>
Get addresses suitable for a getaddr response.
Returns up to MAX_ADDR_RESPONSE addresses, selecting roughly
GETADDR_PERCENT% of known addresses at random (using a simple
deterministic selection for reproducibility).
Sourcepub fn select_for_connection(
&mut self,
count: usize,
now: u64,
) -> Vec<SocketAddr>
pub fn select_for_connection( &mut self, count: usize, now: u64, ) -> Vec<SocketAddr>
Select addresses for outbound connections.
Prefers tried addresses, falls back to new. Returns up to count
addresses, avoiding addresses we’ve recently attempted.
Sourcepub fn remove_by_source(&mut self, source: &IpAddr)
pub fn remove_by_source(&mut self, source: &IpAddr)
Remove all addresses associated with a specific source IP.
Sourcepub fn expire_old(&mut self, now: u64)
pub fn expire_old(&mut self, now: u64)
Expire addresses older than MAX_ADDRESS_AGE.