mirror of
https://mirror.suhoan.cn/https://github.com/EasyTier/EasyTier.git
synced 2025-12-12 20:57:26 +08:00
cli: sort peers by IPv4 and hostname (#1191)
* cli: sort entries by IPv4 and hostname Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -342,7 +342,7 @@ impl PunchSymToConeHoleClient {
|
|||||||
async fn get_rpc_stub(
|
async fn get_rpc_stub(
|
||||||
&self,
|
&self,
|
||||||
dst_peer_id: PeerId,
|
dst_peer_id: PeerId,
|
||||||
) -> Box<(dyn UdpHolePunchRpc<Controller = BaseController> + std::marker::Send + 'static)> {
|
) -> Box<dyn UdpHolePunchRpc<Controller = BaseController> + std::marker::Send + 'static> {
|
||||||
self.peer_mgr
|
self.peer_mgr
|
||||||
.get_peer_rpc_mgr()
|
.get_peer_rpc_mgr()
|
||||||
.rpc_client()
|
.rpc_client()
|
||||||
|
|||||||
@@ -545,6 +545,18 @@ impl CommandHandler<'_> {
|
|||||||
items.push(p.into());
|
items.push(p.into());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sort items by ipv4 (using IpAddr for proper numeric comparison) first, then by hostname
|
||||||
|
items.sort_by(|a, b| {
|
||||||
|
use std::net::{IpAddr, Ipv4Addr};
|
||||||
|
use std::str::FromStr;
|
||||||
|
let a_ip = IpAddr::from_str(&a.ipv4).unwrap_or(IpAddr::V4(Ipv4Addr::UNSPECIFIED));
|
||||||
|
let b_ip = IpAddr::from_str(&b.ipv4).unwrap_or(IpAddr::V4(Ipv4Addr::UNSPECIFIED));
|
||||||
|
match a_ip.cmp(&b_ip) {
|
||||||
|
std::cmp::Ordering::Equal => a.hostname.cmp(&b.hostname),
|
||||||
|
other => other,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
print_output(&items, self.output_format)?;
|
print_output(&items, self.output_format)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -96,13 +96,13 @@ impl PeerCenterBase {
|
|||||||
>(
|
>(
|
||||||
&self,
|
&self,
|
||||||
job_ctx: T,
|
job_ctx: T,
|
||||||
job_fn: (impl Fn(
|
job_fn: impl Fn(
|
||||||
Box<dyn PeerCenterRpc<Controller = BaseController> + Send>,
|
Box<dyn PeerCenterRpc<Controller = BaseController> + Send>,
|
||||||
Arc<PeridicJobCtx<T>>,
|
Arc<PeridicJobCtx<T>>,
|
||||||
) -> Fut
|
) -> Fut
|
||||||
+ Send
|
+ Send
|
||||||
+ Sync
|
+ Sync
|
||||||
+ 'static),
|
+ 'static,
|
||||||
) -> () {
|
) -> () {
|
||||||
let my_peer_id = self.my_peer_id;
|
let my_peer_id = self.my_peer_id;
|
||||||
let peer_mgr = self.peer_mgr.clone();
|
let peer_mgr = self.peer_mgr.clone();
|
||||||
|
|||||||
Reference in New Issue
Block a user