LES Peer Info (#4195)
* connected peers function for network service * get LES peer info in sync API * new peer info in RPC
This commit is contained in:
committed by
Arkadiy Paronyan
parent
35666f718b
commit
3ff9324ec0
@@ -542,6 +542,20 @@ impl Host {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Get all connected peers.
|
||||
pub fn connected_peers(&self) -> Vec<PeerId> {
|
||||
let sessions = self.sessions.read();
|
||||
let sessions = &*sessions;
|
||||
|
||||
let mut peers = Vec::with_capacity(sessions.count());
|
||||
for i in (0..MAX_SESSIONS).map(|x| x + FIRST_SESSION) {
|
||||
if sessions.get(i).is_some() {
|
||||
peers.push(i);
|
||||
}
|
||||
}
|
||||
peers
|
||||
}
|
||||
|
||||
fn init_public_interface(&self, io: &IoContext<NetworkIoMessage>) -> Result<(), NetworkError> {
|
||||
if self.info.read().public_endpoint.is_some() {
|
||||
return Ok(());
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
use {NetworkProtocolHandler, NetworkConfiguration, NonReservedPeerMode};
|
||||
use error::NetworkError;
|
||||
use host::{Host, NetworkContext, NetworkIoMessage, ProtocolId};
|
||||
use host::{Host, NetworkContext, NetworkIoMessage, PeerId, ProtocolId};
|
||||
use stats::NetworkStats;
|
||||
use io::*;
|
||||
use parking_lot::RwLock;
|
||||
@@ -142,6 +142,11 @@ impl NetworkService {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Get a list of all connected peers by id.
|
||||
pub fn connected_peers(&self) -> Vec<PeerId> {
|
||||
self.host.read().as_ref().map(|h| h.connected_peers()).unwrap_or_else(Vec::new)
|
||||
}
|
||||
|
||||
/// Try to add a reserved peer.
|
||||
pub fn add_reserved_peer(&self, peer: &str) -> Result<(), NetworkError> {
|
||||
let host = self.host.read();
|
||||
|
||||
Reference in New Issue
Block a user