mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-05-15 10:25:40 +00:00
use peer center instance to gatter peers info (#21)
* use peer center instance to gatter peers info
This commit is contained in:
@@ -5,7 +5,8 @@ use easytier_core::{
|
||||
common::stun::{StunInfoCollector, UdpNatTypeDetector},
|
||||
rpc::{
|
||||
connector_manage_rpc_client::ConnectorManageRpcClient,
|
||||
peer_manage_rpc_client::PeerManageRpcClient, *,
|
||||
peer_center_rpc_client::PeerCenterRpcClient, peer_manage_rpc_client::PeerManageRpcClient,
|
||||
*,
|
||||
},
|
||||
};
|
||||
use humansize::format_size;
|
||||
@@ -30,6 +31,7 @@ enum SubCommand {
|
||||
Connector(ConnectorArgs),
|
||||
Stun,
|
||||
Route,
|
||||
PeerCenter,
|
||||
}
|
||||
|
||||
#[derive(Args, Debug)]
|
||||
@@ -202,6 +204,12 @@ impl CommandHandler {
|
||||
Ok(ConnectorManageRpcClient::connect(self.addr.clone()).await?)
|
||||
}
|
||||
|
||||
async fn get_peer_center_client(
|
||||
&self,
|
||||
) -> Result<PeerCenterRpcClient<tonic::transport::Channel>, Error> {
|
||||
Ok(PeerCenterRpcClient::connect(self.addr.clone()).await?)
|
||||
}
|
||||
|
||||
async fn list_peers(&self) -> Result<ListPeerResponse, Error> {
|
||||
let mut client = self.get_peer_manager_client().await?;
|
||||
let request = tonic::Request::new(ListPeerRequest::default());
|
||||
@@ -424,6 +432,46 @@ async fn main() -> Result<(), Error> {
|
||||
let stun = UdpNatTypeDetector::new(StunInfoCollector::get_default_servers());
|
||||
println!("udp type: {:?}", stun.get_udp_nat_type(0).await);
|
||||
}
|
||||
SubCommand::PeerCenter => {
|
||||
let mut peer_center_client = handler.get_peer_center_client().await?;
|
||||
let resp = peer_center_client
|
||||
.get_global_peer_map(GetGlobalPeerMapRequest::default())
|
||||
.await?
|
||||
.into_inner();
|
||||
|
||||
#[derive(tabled::Tabled)]
|
||||
struct PeerCenterTableItem {
|
||||
node_id: String,
|
||||
direct_peers: String,
|
||||
}
|
||||
|
||||
let mut table_rows = vec![];
|
||||
for (k, v) in resp.global_peer_map.iter() {
|
||||
let node_id = k;
|
||||
let direct_peers = v
|
||||
.direct_peers
|
||||
.iter()
|
||||
.map(|(k, v)| {
|
||||
format!(
|
||||
"{}:{:?}",
|
||||
k,
|
||||
LatencyLevel::try_from(v.latency_level).unwrap()
|
||||
)
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
table_rows.push(PeerCenterTableItem {
|
||||
node_id: node_id.clone(),
|
||||
direct_peers: direct_peers.join("\n"),
|
||||
});
|
||||
}
|
||||
|
||||
println!(
|
||||
"{}",
|
||||
tabled::Table::new(table_rows)
|
||||
.with(Style::modern())
|
||||
.to_string()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user