pub struct MapPeerResolver<I> { /* private fields */ }Available on crate feature
quic only.Expand description
Simple HashMap-based peer resolver.
Thread-safe resolver that maps peer IDs to socket addresses using an
internal RwLock<HashMap>. Suitable for testing and simple deployments.
§Example
ⓘ
use memberlist_plumtree::transport::quic::MapPeerResolver;
use std::net::SocketAddr;
let local_addr: SocketAddr = "127.0.0.1:9000".parse().unwrap();
let mut resolver = MapPeerResolver::new(local_addr);
// Add peers
resolver.add_peer("node1".to_string(), "192.168.1.10:9000".parse().unwrap());
resolver.add_peer("node2".to_string(), "192.168.1.11:9000".parse().unwrap());
// Resolve peer addresses
assert!(resolver.resolve(&"node1".to_string()).is_some());
assert!(resolver.resolve(&"unknown".to_string()).is_none());Implementations§
Source§impl<I> MapPeerResolver<I>
impl<I> MapPeerResolver<I>
Sourcepub fn new(local_addr: SocketAddr) -> Self
pub fn new(local_addr: SocketAddr) -> Self
Create a new resolver with the given local address.
Sourcepub fn with_peers(local_addr: SocketAddr, peers: HashMap<I, SocketAddr>) -> Self
pub fn with_peers(local_addr: SocketAddr, peers: HashMap<I, SocketAddr>) -> Self
Create a resolver with pre-populated peers.
Sourcepub fn add_peer(&self, peer: I, addr: SocketAddr)
pub fn add_peer(&self, peer: I, addr: SocketAddr)
Add a peer to the resolver.
Sourcepub fn remove_peer(&self, peer: &I) -> Option<SocketAddr>
pub fn remove_peer(&self, peer: &I) -> Option<SocketAddr>
Remove a peer from the resolver.
Sourcepub fn update_peer(&self, peer: I, addr: SocketAddr) -> Option<SocketAddr>
pub fn update_peer(&self, peer: I, addr: SocketAddr) -> Option<SocketAddr>
Update a peer’s address.
Sourcepub fn peer_count(&self) -> usize
pub fn peer_count(&self) -> usize
Get the number of known peers.
Sourcepub fn snapshot(&self) -> HashMap<I, SocketAddr>
pub fn snapshot(&self) -> HashMap<I, SocketAddr>
Get a snapshot of all peer mappings.
Trait Implementations§
Source§impl<I> Clone for MapPeerResolver<I>
impl<I> Clone for MapPeerResolver<I>
Source§impl<I: Debug> Debug for MapPeerResolver<I>
impl<I: Debug> Debug for MapPeerResolver<I>
Source§impl<I> PeerResolver<I> for MapPeerResolver<I>
impl<I> PeerResolver<I> for MapPeerResolver<I>
Auto Trait Implementations§
impl<I> !Freeze for MapPeerResolver<I>
impl<I> !RefUnwindSafe for MapPeerResolver<I>
impl<I> Send for MapPeerResolver<I>where
I: Send,
impl<I> Sync for MapPeerResolver<I>
impl<I> Unpin for MapPeerResolver<I>where
I: Unpin,
impl<I> UnwindSafe for MapPeerResolver<I>where
I: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more