mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-27 09:17:58 +00:00
Add an RPC request for the state of the network (#1884)
* Add an RPC request for the state of the network * Fix concerns * Fix tests * Replace comment with TODO * Rename the RPC
This commit is contained in:
@@ -98,6 +98,11 @@ impl<TMessage, TSubstream> Behaviour<TMessage, TSubstream> {
|
||||
self.custom_protocols.cleanup();
|
||||
}
|
||||
|
||||
/// Returns the list of reserved nodes.
|
||||
pub fn reserved_peers(&self) -> impl Iterator<Item = &PeerId> {
|
||||
self.custom_protocols.reserved_peers()
|
||||
}
|
||||
|
||||
/// Try to add a reserved peer.
|
||||
pub fn add_reserved_peer(&mut self, peer_id: PeerId, addr: Multiaddr) {
|
||||
self.custom_protocols.add_reserved_peer(peer_id, addr)
|
||||
@@ -111,6 +116,11 @@ impl<TMessage, TSubstream> Behaviour<TMessage, TSubstream> {
|
||||
self.custom_protocols.remove_reserved_peer(peer_id)
|
||||
}
|
||||
|
||||
/// Returns true if we only accept reserved nodes.
|
||||
pub fn is_reserved_only(&self) -> bool {
|
||||
self.custom_protocols.is_reserved_only()
|
||||
}
|
||||
|
||||
/// Start accepting all peers again if we weren't.
|
||||
pub fn accept_unreserved_peers(&mut self) {
|
||||
self.custom_protocols.accept_unreserved_peers()
|
||||
@@ -129,6 +139,21 @@ impl<TMessage, TSubstream> Behaviour<TMessage, TSubstream> {
|
||||
self.custom_protocols.ban_peer(peer_id)
|
||||
}
|
||||
|
||||
/// Returns a list of all the peers that are banned, and until when.
|
||||
pub fn banned_nodes(&self) -> impl Iterator<Item = (&PeerId, Instant)> {
|
||||
self.custom_protocols.banned_peers()
|
||||
}
|
||||
|
||||
/// Returns true if we try to open protocols with the given peer.
|
||||
pub fn is_enabled(&self, peer_id: &PeerId) -> bool {
|
||||
self.custom_protocols.is_enabled(peer_id)
|
||||
}
|
||||
|
||||
/// Returns the list of protocols we have open with the given peer.
|
||||
pub fn open_protocols<'a>(&'a self, peer_id: &'a PeerId) -> impl Iterator<Item = ProtocolId> + 'a {
|
||||
self.custom_protocols.open_protocols(peer_id)
|
||||
}
|
||||
|
||||
/// Disconnects the custom protocols from a peer.
|
||||
///
|
||||
/// The peer will still be able to use Kademlia or other protocols, but will get disconnected
|
||||
@@ -142,6 +167,16 @@ impl<TMessage, TSubstream> Behaviour<TMessage, TSubstream> {
|
||||
pub fn drop_node(&mut self, peer_id: &PeerId) {
|
||||
self.custom_protocols.disconnect_peer(peer_id)
|
||||
}
|
||||
|
||||
/// Returns the list of peers in the topology.
|
||||
pub fn known_peers(&self) -> impl Iterator<Item = &PeerId> {
|
||||
self.custom_protocols.known_peers()
|
||||
}
|
||||
|
||||
/// Returns a list of addresses known for this peer, and their reputation score.
|
||||
pub fn known_addresses(&mut self, peer_id: &PeerId) -> impl Iterator<Item = (&Multiaddr, u32)> {
|
||||
self.custom_protocols.known_addresses(peer_id)
|
||||
}
|
||||
}
|
||||
|
||||
/// Event that can be emitted by the behaviour.
|
||||
@@ -196,6 +231,14 @@ pub enum BehaviourOut<TMessage> {
|
||||
/// Information about the peer.
|
||||
info: IdentifyInfo,
|
||||
},
|
||||
|
||||
/// We have successfully pinged a peer.
|
||||
PingSuccess {
|
||||
/// Id of the peer that has been pinged.
|
||||
peer_id: PeerId,
|
||||
/// Time it took for the ping to come back.
|
||||
ping_time: Duration,
|
||||
},
|
||||
}
|
||||
|
||||
impl<TMessage> From<CustomProtosOut<TMessage>> for BehaviourOut<TMessage> {
|
||||
@@ -290,6 +333,7 @@ impl<TMessage, TSubstream> NetworkBehaviourEventProcess<PingEvent> for Behaviour
|
||||
match event {
|
||||
PingEvent::PingSuccess { peer, time } => {
|
||||
trace!(target: "sub-libp2p", "Ping time with {:?}: {:?}", peer, time);
|
||||
self.events.push(BehaviourOut::PingSuccess { peer_id: peer, ping_time: time });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user