mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
feat(net/peer): set rpc added peer as static (#9201)
Signed-off-by: jsvisa <delweng@gmail.com>
This commit is contained in:
@ -68,12 +68,12 @@ pub trait PeersInfo: Send + Sync {
|
||||
pub trait Peers: PeersInfo {
|
||||
/// Adds a peer to the peer set with UDP `SocketAddr`.
|
||||
fn add_peer(&self, peer: PeerId, tcp_addr: SocketAddr) {
|
||||
self.add_peer_kind(peer, PeerKind::Basic, tcp_addr, None);
|
||||
self.add_peer_kind(peer, PeerKind::Static, tcp_addr, None);
|
||||
}
|
||||
|
||||
/// Adds a peer to the peer set with TCP and UDP `SocketAddr`.
|
||||
fn add_peer_with_udp(&self, peer: PeerId, tcp_addr: SocketAddr, udp_addr: SocketAddr) {
|
||||
self.add_peer_kind(peer, PeerKind::Basic, tcp_addr, Some(udp_addr));
|
||||
self.add_peer_kind(peer, PeerKind::Static, tcp_addr, Some(udp_addr));
|
||||
}
|
||||
|
||||
/// Adds a trusted [`PeerId`] to the peer set.
|
||||
@ -163,6 +163,8 @@ pub enum PeerKind {
|
||||
/// Basic peer kind.
|
||||
#[default]
|
||||
Basic,
|
||||
/// Static peer, added via JSON-RPC.
|
||||
Static,
|
||||
/// Trusted peer.
|
||||
Trusted,
|
||||
}
|
||||
@ -173,6 +175,11 @@ impl PeerKind {
|
||||
matches!(self, Self::Trusted)
|
||||
}
|
||||
|
||||
/// Returns `true` if the peer is static.
|
||||
pub const fn is_static(&self) -> bool {
|
||||
matches!(self, Self::Static)
|
||||
}
|
||||
|
||||
/// Returns `true` if the peer is basic.
|
||||
pub const fn is_basic(&self) -> bool {
|
||||
matches!(self, Self::Basic)
|
||||
|
||||
@ -562,7 +562,7 @@ where
|
||||
}
|
||||
}
|
||||
NetworkHandleMessage::RemovePeer(peer_id, kind) => {
|
||||
self.swarm.state_mut().remove_peer(peer_id, kind);
|
||||
self.swarm.state_mut().remove_peer_kind(peer_id, kind);
|
||||
}
|
||||
NetworkHandleMessage::DisconnectPeer(peer_id, reason) => {
|
||||
self.swarm.sessions_mut().disconnect(peer_id, reason);
|
||||
|
||||
@ -278,9 +278,10 @@ where
|
||||
self.peers_manager.add_peer_kind(peer_id, kind, addr, None)
|
||||
}
|
||||
|
||||
pub(crate) fn remove_peer(&mut self, peer_id: PeerId, kind: PeerKind) {
|
||||
/// Removes a peer and its address with the given kind from the peerset.
|
||||
pub(crate) fn remove_peer_kind(&mut self, peer_id: PeerId, kind: PeerKind) {
|
||||
match kind {
|
||||
PeerKind::Basic => self.peers_manager.remove_peer(peer_id),
|
||||
PeerKind::Basic | PeerKind::Static => self.peers_manager.remove_peer(peer_id),
|
||||
PeerKind::Trusted => self.peers_manager.remove_peer_from_trusted_set(peer_id),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user