mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-28 14:27:57 +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:
@@ -60,6 +60,13 @@ pub trait SystemApi<Hash, Number> {
|
||||
/// Returns currently connected peers
|
||||
#[rpc(name = "system_peers")]
|
||||
fn system_peers(&self) -> Result<Vec<PeerInfo<Hash, Number>>>;
|
||||
|
||||
/// Returns current state of the network.
|
||||
///
|
||||
/// **Warning**: This API is not stable.
|
||||
// TODO: make this stable and move structs https://github.com/paritytech/substrate/issues/1890
|
||||
#[rpc(name = "system_networkState")]
|
||||
fn system_network_state(&self) -> Result<network::NetworkState>;
|
||||
}
|
||||
|
||||
/// System API implementation
|
||||
@@ -120,4 +127,8 @@ impl<B: traits::Block> SystemApi<B::Hash, <B::Header as HeaderT>::Number> for Sy
|
||||
best_number: p.best_number,
|
||||
}).collect())
|
||||
}
|
||||
|
||||
fn system_network_state(&self) -> Result<network::NetworkState> {
|
||||
Ok(self.sync.network_state())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,6 +52,20 @@ impl network::SyncProvider<Block> for Status {
|
||||
}
|
||||
}
|
||||
|
||||
fn network_state(&self) -> network::NetworkState {
|
||||
network::NetworkState {
|
||||
peer_id: String::new(),
|
||||
listened_addresses: Default::default(),
|
||||
is_reserved_only: false,
|
||||
reserved_peers: Default::default(),
|
||||
banned_peers: Default::default(),
|
||||
connected_peers: Default::default(),
|
||||
not_connected_peers: Default::default(),
|
||||
average_download_per_sec: 0,
|
||||
average_upload_per_sec: 0,
|
||||
}
|
||||
}
|
||||
|
||||
fn peers(&self) -> Vec<(NodeIndex, NetworkPeerInfo<Block>)> {
|
||||
vec![(1, NetworkPeerInfo {
|
||||
peer_id: self.peer_id.clone(),
|
||||
@@ -181,3 +195,21 @@ fn system_peers() {
|
||||
}]
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn system_network_state() {
|
||||
assert_eq!(
|
||||
api(None).system_network_state().unwrap(),
|
||||
network::NetworkState {
|
||||
peer_id: String::new(),
|
||||
listened_addresses: Default::default(),
|
||||
is_reserved_only: false,
|
||||
reserved_peers: Default::default(),
|
||||
banned_peers: Default::default(),
|
||||
connected_peers: Default::default(),
|
||||
not_connected_peers: Default::default(),
|
||||
average_download_per_sec: 0,
|
||||
average_upload_per_sec: 0,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user