mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-05-07 18:24:36 +00:00
clippy all codes (#1214)
1. clippy code 2. add fmt and clippy check in ci
This commit is contained in:
@@ -170,7 +170,7 @@ impl RoutePeerInfo {
|
||||
};
|
||||
|
||||
let need_update_periodically = if let Ok(Ok(d)) =
|
||||
SystemTime::try_from(new.last_update.unwrap()).map(|x| x.elapsed())
|
||||
SystemTime::try_from(new.last_update.unwrap_or_default()).map(|x| x.elapsed())
|
||||
{
|
||||
d > UPDATE_PEER_INFO_PERIOD
|
||||
} else {
|
||||
@@ -186,45 +186,41 @@ impl RoutePeerInfo {
|
||||
}
|
||||
}
|
||||
|
||||
impl Into<crate::proto::cli::Route> for RoutePeerInfo {
|
||||
fn into(self) -> crate::proto::cli::Route {
|
||||
let network_length = if self.network_length == 0 {
|
||||
impl From<RoutePeerInfo> for crate::proto::cli::Route {
|
||||
fn from(val: RoutePeerInfo) -> Self {
|
||||
let network_length = if val.network_length == 0 {
|
||||
24
|
||||
} else {
|
||||
self.network_length
|
||||
val.network_length
|
||||
};
|
||||
|
||||
crate::proto::cli::Route {
|
||||
peer_id: self.peer_id,
|
||||
ipv4_addr: if let Some(ipv4_addr) = self.ipv4_addr {
|
||||
Some(Ipv4Inet {
|
||||
address: Some(ipv4_addr.into()),
|
||||
network_length,
|
||||
})
|
||||
} else {
|
||||
None
|
||||
},
|
||||
peer_id: val.peer_id,
|
||||
ipv4_addr: val.ipv4_addr.map(|ipv4_addr| Ipv4Inet {
|
||||
address: Some(ipv4_addr),
|
||||
network_length,
|
||||
}),
|
||||
next_hop_peer_id: 0, // next_hop_peer_id is calculated in RouteTable.
|
||||
cost: 0, // cost is calculated in RouteTable.
|
||||
path_latency: 0, // path_latency is calculated in RouteTable.
|
||||
proxy_cidrs: self.proxy_cidrs.clone(),
|
||||
hostname: self.hostname.unwrap_or_default(),
|
||||
proxy_cidrs: val.proxy_cidrs.clone(),
|
||||
hostname: val.hostname.unwrap_or_default(),
|
||||
stun_info: {
|
||||
let mut stun_info = StunInfo::default();
|
||||
if let Ok(udp_nat_type) = NatType::try_from(self.udp_stun_info as i32) {
|
||||
if let Ok(udp_nat_type) = NatType::try_from(val.udp_stun_info) {
|
||||
stun_info.set_udp_nat_type(udp_nat_type);
|
||||
}
|
||||
Some(stun_info)
|
||||
},
|
||||
inst_id: self.inst_id.map(|x| x.to_string()).unwrap_or_default(),
|
||||
version: self.easytier_version,
|
||||
feature_flag: self.feature_flag,
|
||||
inst_id: val.inst_id.map(|x| x.to_string()).unwrap_or_default(),
|
||||
version: val.easytier_version,
|
||||
feature_flag: val.feature_flag,
|
||||
|
||||
next_hop_peer_id_latency_first: None,
|
||||
cost_latency_first: None,
|
||||
path_latency_latency_first: None,
|
||||
|
||||
ipv6_addr: self.ipv6_addr.map(Into::into),
|
||||
ipv6_addr: val.ipv6_addr,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -235,10 +231,10 @@ struct RouteConnBitmap {
|
||||
bitmap: Vec<u8>,
|
||||
}
|
||||
|
||||
impl Into<crate::proto::peer_rpc::RouteConnBitmap> for RouteConnBitmap {
|
||||
fn into(self) -> crate::proto::peer_rpc::RouteConnBitmap {
|
||||
impl From<RouteConnBitmap> for crate::proto::peer_rpc::RouteConnBitmap {
|
||||
fn from(val: RouteConnBitmap) -> Self {
|
||||
crate::proto::peer_rpc::RouteConnBitmap {
|
||||
peer_ids: self
|
||||
peer_ids: val
|
||||
.peer_ids
|
||||
.into_iter()
|
||||
.map(|x| PeerIdVersion {
|
||||
@@ -246,7 +242,7 @@ impl Into<crate::proto::peer_rpc::RouteConnBitmap> for RouteConnBitmap {
|
||||
version: x.1,
|
||||
})
|
||||
.collect(),
|
||||
bitmap: self.bitmap,
|
||||
bitmap: val.bitmap,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -318,7 +314,7 @@ impl SyncedRouteInfo {
|
||||
fn get_connected_peers<T: FromIterator<PeerId>>(&self, peer_id: PeerId) -> Option<T> {
|
||||
self.conn_map
|
||||
.get(&peer_id)
|
||||
.map(|x| x.0.clone().iter().map(|x| *x).collect())
|
||||
.map(|x| x.0.clone().iter().copied().collect())
|
||||
}
|
||||
|
||||
fn remove_peer(&self, peer_id: PeerId) {
|
||||
@@ -403,8 +399,8 @@ impl SyncedRouteInfo {
|
||||
my_peer_id: PeerId,
|
||||
my_peer_route_id: u64,
|
||||
dst_peer_id: PeerId,
|
||||
peer_infos: &Vec<RoutePeerInfo>,
|
||||
raw_peer_infos: &Vec<DynamicMessage>,
|
||||
peer_infos: &[RoutePeerInfo],
|
||||
raw_peer_infos: &[DynamicMessage],
|
||||
) -> Result<(), Error> {
|
||||
let mut need_inc_version = false;
|
||||
for (idx, route_info) in peer_infos.iter().enumerate() {
|
||||
@@ -476,7 +472,7 @@ impl SyncedRouteInfo {
|
||||
})
|
||||
.or_insert_with(|| {
|
||||
need_inc_version = true;
|
||||
(connceted_peers, version.clone().into())
|
||||
(connceted_peers, (*version).into())
|
||||
});
|
||||
}
|
||||
if need_inc_version {
|
||||
@@ -512,11 +508,8 @@ impl SyncedRouteInfo {
|
||||
my_peer_route_id: u64,
|
||||
global_ctx: &ArcGlobalCtx,
|
||||
) -> bool {
|
||||
let mut old = self
|
||||
.peer_infos
|
||||
.entry(my_peer_id)
|
||||
.or_insert(RoutePeerInfo::new());
|
||||
let new = old.update_self(my_peer_id, my_peer_route_id, &global_ctx);
|
||||
let mut old = self.peer_infos.entry(my_peer_id).or_default();
|
||||
let new = old.update_self(my_peer_id, my_peer_route_id, global_ctx);
|
||||
let new_version = new.version;
|
||||
let old_version = old.version;
|
||||
*old = new;
|
||||
@@ -616,8 +609,8 @@ impl SyncedRouteInfo {
|
||||
}
|
||||
|
||||
fn is_peer_directly_connected(&self, src_peer_id: PeerId, dst_peer_id: PeerId) -> bool {
|
||||
return self.is_peer_bidirectly_connected(src_peer_id, dst_peer_id)
|
||||
|| self.is_peer_bidirectly_connected(dst_peer_id, src_peer_id);
|
||||
self.is_peer_bidirectly_connected(src_peer_id, dst_peer_id)
|
||||
|| self.is_peer_bidirectly_connected(dst_peer_id, src_peer_id)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -674,7 +667,7 @@ impl RouteTable {
|
||||
fn get_nat_type(&self, peer_id: PeerId) -> Option<NatType> {
|
||||
self.peer_infos
|
||||
.get(&peer_id)
|
||||
.map(|x| NatType::try_from(x.udp_stun_info as i32).unwrap_or_default())
|
||||
.map(|x| NatType::try_from(x.udp_stun_info).unwrap_or_default())
|
||||
}
|
||||
|
||||
// return graph and start node index (node of my peer id).
|
||||
@@ -710,9 +703,9 @@ impl RouteTable {
|
||||
for item in peer_id_to_node_index.iter() {
|
||||
let src_peer_id = item.key();
|
||||
let src_node_idx = item.value();
|
||||
let connected_peers = synced_info
|
||||
let connected_peers: BTreeSet<_> = synced_info
|
||||
.get_connected_peers(*src_peer_id)
|
||||
.unwrap_or(BTreeSet::new());
|
||||
.unwrap_or_default();
|
||||
|
||||
// if avoid relay, just set all outgoing edges to a large value: AVOID_RELAY_COST.
|
||||
let peer_avoid_relay_data = synced_info.get_avoid_relay_data(*src_peer_id);
|
||||
@@ -798,7 +791,7 @@ impl RouteTable {
|
||||
}
|
||||
|
||||
// Step 3: 第二次 Dijkstra - 在子图上找代价最小的路径
|
||||
self.gen_next_hop_map_with_least_cost(&subgraph, &start_node_idx.clone().unwrap(), version);
|
||||
self.gen_next_hop_map_with_least_cost(&subgraph, &start_node_idx.unwrap(), version);
|
||||
}
|
||||
|
||||
fn gen_next_hop_map_with_least_cost(
|
||||
@@ -813,7 +806,7 @@ impl RouteTable {
|
||||
let info = NextHopInfo {
|
||||
next_hop_peer_id: *graph.node_weight(*next_hop).unwrap(),
|
||||
path_latency: (*costs.get(dst).unwrap() % AVOID_RELAY_COST) as i32,
|
||||
path_len: *path_len as usize,
|
||||
path_len: { *path_len },
|
||||
version,
|
||||
};
|
||||
let dst_peer_id = *graph.node_weight(*dst).unwrap();
|
||||
@@ -841,7 +834,7 @@ impl RouteTable {
|
||||
|
||||
// build next hop map
|
||||
let (graph, start_node) =
|
||||
Self::build_peer_graph_from_synced_info(my_peer_id, &synced_info, cost_calc);
|
||||
Self::build_peer_graph_from_synced_info(my_peer_id, synced_info, cost_calc);
|
||||
|
||||
if graph.node_count() == 0 {
|
||||
tracing::warn!("no peer in graph, cannot build next hop map");
|
||||
@@ -1031,11 +1024,11 @@ impl SyncRouteSession {
|
||||
.unwrap_or(false)
|
||||
}
|
||||
|
||||
fn update_dst_saved_peer_info_version(&self, infos: &Vec<RoutePeerInfo>) {
|
||||
fn update_dst_saved_peer_info_version(&self, infos: &[RoutePeerInfo]) {
|
||||
for info in infos.iter() {
|
||||
self.dst_saved_peer_info_versions
|
||||
.entry(info.peer_id)
|
||||
.or_insert_with(|| AtomicVersion::new())
|
||||
.or_insert_with(AtomicVersion::new)
|
||||
.set_if_larger(info.version);
|
||||
}
|
||||
}
|
||||
@@ -1044,7 +1037,7 @@ impl SyncRouteSession {
|
||||
for (peer_id, version) in conn_bitmap.peer_ids.iter() {
|
||||
self.dst_saved_conn_bitmap_version
|
||||
.entry(*peer_id)
|
||||
.or_insert_with(|| AtomicVersion::new())
|
||||
.or_insert_with(AtomicVersion::new)
|
||||
.set_if_larger(*version);
|
||||
}
|
||||
}
|
||||
@@ -1053,7 +1046,7 @@ impl SyncRouteSession {
|
||||
for item in foreign_network.infos.iter() {
|
||||
self.dst_saved_foreign_network_versions
|
||||
.entry(item.key.clone().unwrap())
|
||||
.or_insert_with(|| AtomicVersion::new())
|
||||
.or_insert_with(AtomicVersion::new)
|
||||
.set_if_larger(item.value.as_ref().unwrap().version);
|
||||
}
|
||||
}
|
||||
@@ -1249,13 +1242,10 @@ impl PeerRouteServiceImpl {
|
||||
.list_foreign_networks()
|
||||
.await;
|
||||
|
||||
let updated = self
|
||||
.synced_route_info
|
||||
.update_my_foreign_network(self.my_peer_id, foreign_networks);
|
||||
|
||||
// do not need update owner map because we always filter out my peer id.
|
||||
|
||||
updated
|
||||
self.synced_route_info
|
||||
.update_my_foreign_network(self.my_peer_id, foreign_networks)
|
||||
}
|
||||
|
||||
fn update_route_table(&self) {
|
||||
@@ -1317,7 +1307,7 @@ impl PeerRouteServiceImpl {
|
||||
};
|
||||
self.foreign_network_owner_map
|
||||
.entry(network_identity)
|
||||
.or_insert_with(|| Vec::new())
|
||||
.or_default()
|
||||
.push(entry.my_peer_id_for_this_network);
|
||||
|
||||
self.foreign_network_my_peer_id_map.insert(
|
||||
@@ -1350,8 +1340,7 @@ impl PeerRouteServiceImpl {
|
||||
.synced_route_info
|
||||
.conn_map
|
||||
.iter()
|
||||
.map(|x| x.value().clone().0.into_iter())
|
||||
.flatten()
|
||||
.flat_map(|x| x.value().clone().0.into_iter())
|
||||
.collect::<BTreeSet<_>>();
|
||||
|
||||
let all_peer_ids = self
|
||||
@@ -1364,7 +1353,7 @@ impl PeerRouteServiceImpl {
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let mut conn_bitmap = RouteConnBitmap::new();
|
||||
conn_bitmap.bitmap = vec![0; (all_peer_ids.len() * all_peer_ids.len() + 7) / 8];
|
||||
conn_bitmap.bitmap = vec![0; (all_peer_ids.len() * all_peer_ids.len()).div_ceil(8)];
|
||||
conn_bitmap.peer_ids = all_peer_ids;
|
||||
|
||||
let all_peer_ids = &conn_bitmap.peer_ids;
|
||||
@@ -1419,7 +1408,7 @@ impl PeerRouteServiceImpl {
|
||||
for (peer_id, local_version) in self.cached_local_conn_map.lock().unwrap().peer_ids.iter() {
|
||||
let peer_version = session
|
||||
.dst_saved_conn_bitmap_version
|
||||
.get(&peer_id)
|
||||
.get(peer_id)
|
||||
.map(|item| item.get());
|
||||
if peer_version.is_none() || peer_version.unwrap() < *local_version {
|
||||
need_update = true;
|
||||
@@ -1442,7 +1431,7 @@ impl PeerRouteServiceImpl {
|
||||
for item in self.synced_route_info.foreign_network.iter() {
|
||||
if session
|
||||
.dst_saved_foreign_network_versions
|
||||
.get(&item.key())
|
||||
.get(item.key())
|
||||
.map(|x| x.get() >= item.value().version)
|
||||
.unwrap_or(false)
|
||||
{
|
||||
@@ -1485,9 +1474,9 @@ impl PeerRouteServiceImpl {
|
||||
Option<RouteConnBitmap>,
|
||||
Option<RouteForeignNetworkInfos>,
|
||||
) {
|
||||
let route_infos = self.build_route_info(&session);
|
||||
let conn_bitmap = self.build_conn_bitmap(&session);
|
||||
let foreign_network = self.build_foreign_network_info(&session);
|
||||
let route_infos = self.build_route_info(session);
|
||||
let conn_bitmap = self.build_conn_bitmap(session);
|
||||
let foreign_network = self.build_foreign_network_info(session);
|
||||
|
||||
(route_infos, conn_bitmap, foreign_network)
|
||||
}
|
||||
@@ -1661,19 +1650,19 @@ impl PeerRouteServiceImpl {
|
||||
session.update_dst_session_id(resp.session_id);
|
||||
|
||||
if let Some(peer_infos) = &peer_infos {
|
||||
session.update_dst_saved_peer_info_version(&peer_infos);
|
||||
session.update_dst_saved_peer_info_version(peer_infos);
|
||||
}
|
||||
|
||||
if let Some(conn_bitmap) = &conn_bitmap {
|
||||
session.update_dst_saved_conn_bitmap_version(&conn_bitmap);
|
||||
session.update_dst_saved_conn_bitmap_version(conn_bitmap);
|
||||
}
|
||||
|
||||
if let Some(foreign_network) = &foreign_network {
|
||||
session.update_dst_saved_foreign_network_version(&foreign_network);
|
||||
session.update_dst_saved_foreign_network_version(foreign_network);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
false
|
||||
}
|
||||
|
||||
fn update_peer_info_last_update(&self) {
|
||||
@@ -1767,11 +1756,10 @@ impl OspfRouteRpc for RouteSessionManager {
|
||||
|
||||
Ok(match ret {
|
||||
Ok(v) => v,
|
||||
Err(e) => {
|
||||
let mut resp = SyncRouteInfoResponse::default();
|
||||
resp.error = Some(e as i32);
|
||||
resp
|
||||
}
|
||||
Err(e) => SyncRouteInfoResponse {
|
||||
error: Some(e as i32),
|
||||
..Default::default()
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1828,12 +1816,9 @@ impl RouteSessionManager {
|
||||
|
||||
select! {
|
||||
_ = tokio::time::sleep(Duration::from_secs(1)) => {}
|
||||
ret = sync_now.recv() => match ret {
|
||||
Err(e) => {
|
||||
tracing::debug!(?e, "session_task sync_now recv failed, ospf route may exit");
|
||||
break;
|
||||
},
|
||||
_ => {}
|
||||
ret = sync_now.recv() => if let Err(e) = ret {
|
||||
tracing::debug!(?e, "session_task sync_now recv failed, ospf route may exit");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1903,7 +1888,7 @@ impl RouteSessionManager {
|
||||
};
|
||||
!session.dst_is_initiator.load(Ordering::Relaxed)
|
||||
})
|
||||
.map(|x| *x)
|
||||
.copied()
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
if initiator_candidates.is_empty() {
|
||||
@@ -1998,6 +1983,7 @@ impl RouteSessionManager {
|
||||
tracing::debug!(?ret, ?reason, "sync_now_broadcast.send");
|
||||
}
|
||||
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
async fn do_sync_route_info(
|
||||
&self,
|
||||
from_peer_id: PeerId,
|
||||
@@ -2034,7 +2020,7 @@ impl RouteSessionManager {
|
||||
}
|
||||
|
||||
if let Some(conn_bitmap) = &conn_bitmap {
|
||||
service_impl.synced_route_info.update_conn_map(&conn_bitmap);
|
||||
service_impl.synced_route_info.update_conn_map(conn_bitmap);
|
||||
session.update_dst_saved_conn_bitmap_version(conn_bitmap);
|
||||
need_update_route_table = true;
|
||||
}
|
||||
@@ -2046,7 +2032,7 @@ impl RouteSessionManager {
|
||||
if let Some(foreign_network) = &foreign_network {
|
||||
service_impl
|
||||
.synced_route_info
|
||||
.update_foreign_network(&foreign_network);
|
||||
.update_foreign_network(foreign_network);
|
||||
session.update_dst_saved_foreign_network_version(foreign_network);
|
||||
}
|
||||
|
||||
@@ -2267,7 +2253,7 @@ impl Route for PeerRoute {
|
||||
route.cost_latency_first = next_hop_peer_latency_first.map(|x| x.path_len as i32);
|
||||
route.path_latency_latency_first = next_hop_peer_latency_first.map(|x| x.path_latency);
|
||||
|
||||
route.feature_flag = item.feature_flag.clone();
|
||||
route.feature_flag = item.feature_flag;
|
||||
|
||||
routes.push(route);
|
||||
}
|
||||
@@ -2455,7 +2441,7 @@ mod tests {
|
||||
let r_a = create_mock_route(p_a.clone()).await;
|
||||
let r_b = create_mock_route(p_b.clone()).await;
|
||||
|
||||
for r in vec![r_a.clone(), r_b.clone()].iter() {
|
||||
for r in [r_a.clone(), r_b.clone()].iter() {
|
||||
wait_for_condition(
|
||||
|| async {
|
||||
println!("route: {:?}", r.list_routes().await);
|
||||
@@ -2507,7 +2493,7 @@ mod tests {
|
||||
drop(p_b);
|
||||
|
||||
wait_for_condition(
|
||||
|| async { r_a.list_routes().await.len() == 0 },
|
||||
|| async { r_a.list_routes().await.is_empty() },
|
||||
Duration::from_secs(5),
|
||||
)
|
||||
.await;
|
||||
@@ -2531,7 +2517,7 @@ mod tests {
|
||||
let r_b = create_mock_route(p_b.clone()).await;
|
||||
let r_c = create_mock_route(p_c.clone()).await;
|
||||
|
||||
for r in vec![r_a.clone(), r_b.clone(), r_c.clone()].iter() {
|
||||
for r in [r_a.clone(), r_b.clone(), r_c.clone()].iter() {
|
||||
wait_for_condition(
|
||||
|| async { r.service_impl.synced_route_info.peer_infos.len() == 3 },
|
||||
Duration::from_secs(5),
|
||||
@@ -2563,10 +2549,10 @@ mod tests {
|
||||
connect_peer_manager(p_d.clone(), p_c.clone()).await;
|
||||
|
||||
// find the smallest peer_id, which should be a center node
|
||||
let mut all_route = vec![r_a.clone(), r_b.clone(), r_c.clone(), r_d.clone()];
|
||||
let mut all_route = [r_a.clone(), r_b.clone(), r_c.clone(), r_d.clone()];
|
||||
all_route.sort_by(|a, b| a.my_peer_id.cmp(&b.my_peer_id));
|
||||
let mut all_peer_mgr = vec![p_a.clone(), p_b.clone(), p_c.clone(), p_d.clone()];
|
||||
all_peer_mgr.sort_by(|a, b| a.my_peer_id().cmp(&b.my_peer_id()));
|
||||
let mut all_peer_mgr = [p_a.clone(), p_b.clone(), p_c.clone(), p_d.clone()];
|
||||
all_peer_mgr.sort_by_key(|a| a.my_peer_id());
|
||||
|
||||
wait_for_condition(
|
||||
|| async { all_route[0].service_impl.sessions.len() == 3 },
|
||||
@@ -2664,7 +2650,7 @@ mod tests {
|
||||
let r_b = create_mock_route(p_b.clone()).await;
|
||||
let r_c = create_mock_route(p_c.clone()).await;
|
||||
|
||||
for r in vec![r_a.clone(), r_b.clone(), r_c.clone()].iter() {
|
||||
for r in [r_a.clone(), r_b.clone(), r_c.clone()].iter() {
|
||||
wait_for_condition(
|
||||
|| async { r.service_impl.synced_route_info.peer_infos.len() == 3 },
|
||||
Duration::from_secs(5),
|
||||
@@ -2684,7 +2670,7 @@ mod tests {
|
||||
drop(r_c);
|
||||
drop(p_c);
|
||||
|
||||
for r in vec![r_a.clone(), r_b.clone()].iter() {
|
||||
for r in [r_a.clone(), r_b.clone()].iter() {
|
||||
wait_for_condition(
|
||||
|| async { r.list_routes().await.len() == 1 },
|
||||
Duration::from_secs(5),
|
||||
@@ -2717,7 +2703,7 @@ mod tests {
|
||||
.await
|
||||
.unwrap();
|
||||
wait_for_condition(
|
||||
|| async { r_a.list_routes().await.len() == 0 },
|
||||
|| async { r_a.list_routes().await.is_empty() },
|
||||
Duration::from_secs(5),
|
||||
)
|
||||
.await;
|
||||
@@ -2756,7 +2742,7 @@ mod tests {
|
||||
|
||||
// in normal mode, packet from p_c should directly forward to p_a
|
||||
wait_for_condition(
|
||||
|| async { r_d.get_next_hop(p_a.my_peer_id()).await != None },
|
||||
|| async { (r_d.get_next_hop(p_a.my_peer_id()).await).is_some() },
|
||||
Duration::from_secs(5),
|
||||
)
|
||||
.await;
|
||||
|
||||
Reference in New Issue
Block a user