add GlobalCtxEvent::PeerInfoUpdated, issue this event in do_sync_route_info

fix use in peer_ospf_route.rs
This commit is contained in:
Luna Yao
2026-04-06 11:54:02 +02:00
parent 088628c1b6
commit f75c35d4a0
3 changed files with 18 additions and 17 deletions
+2
View File
@@ -47,6 +47,8 @@ pub enum GlobalCtxEvent {
PeerConnAdded(PeerConnInfo), PeerConnAdded(PeerConnInfo),
PeerConnRemoved(PeerConnInfo), PeerConnRemoved(PeerConnInfo),
PeerInfoUpdated(Vec<PeerId>),
ListenerAdded(url::Url), ListenerAdded(url::Url),
ListenerAddFailed(url::Url, String), // (url, error message) ListenerAddFailed(url::Url, String), // (url, error message)
ListenerAcceptFailed(url::Url, String), // (url, error message) ListenerAcceptFailed(url::Url, String), // (url, error message)
+2
View File
@@ -307,6 +307,8 @@ fn handle_event(
event!(info, peer_id, "[{}] peer removed", instance_id); event!(info, peer_id, "[{}] peer removed", instance_id);
} }
GlobalCtxEvent::PeerInfoUpdated(_) => {}
GlobalCtxEvent::PeerConnAdded(conn_info) => { GlobalCtxEvent::PeerConnAdded(conn_info) => {
event!( event!(
info, info,
+14 -17
View File
@@ -72,16 +72,6 @@ use crate::{
use_global_var, use_global_var,
}; };
use super::{
graph_algo::dijkstra_with_first_hop,
peer_rpc::PeerRpcManager,
route_trait::{
DefaultRouteCostCalculator, ForeignNetworkRouteInfoMap, NextHopPolicy, RouteCostCalculator,
RouteCostCalculatorInterface,
},
PeerPacketFilter,
};
use atomic_shim::AtomicU64; use atomic_shim::AtomicU64;
use itertools::Itertools; use itertools::Itertools;
@@ -558,8 +548,8 @@ impl SyncedRouteInfo {
dst_peer_id: PeerId, dst_peer_id: PeerId,
peer_infos: &[RoutePeerInfo], peer_infos: &[RoutePeerInfo],
raw_peer_infos: &[DynamicMessage], raw_peer_infos: &[DynamicMessage],
) -> Result<(), Error> { ) -> Result<Vec<PeerId>, Error> {
let mut need_inc_version = false; let mut updated_peer_ids = Vec::new();
for (idx, route_info) in peer_infos.iter().enumerate() { for (idx, route_info) in peer_infos.iter().enumerate() {
let mut route_info = route_info.clone(); let mut route_info = route_info.clone();
let raw_route_info = &raw_peer_infos[idx]; let raw_route_info = &raw_peer_infos[idx];
@@ -595,14 +585,15 @@ impl SyncedRouteInfo {
{ {
self.raw_peer_infos self.raw_peer_infos
.insert(route_info.peer_id, raw_route_info.clone()); .insert(route_info.peer_id, raw_route_info.clone());
guard.insert(route_info.peer_id, route_info); let peer_id = route_info.peer_id;
need_inc_version = true; guard.insert(peer_id, route_info);
updated_peer_ids.push(peer_id);
} }
} }
if need_inc_version { if !updated_peer_ids.is_empty() {
self.version.inc(); self.version.inc();
} }
Ok(()) Ok(updated_peer_ids)
} }
fn update_conn_info_one_peer( fn update_conn_info_one_peer(
@@ -3202,7 +3193,7 @@ impl RouteSessionManager {
(peer_infos, raw_peer_infos.as_ref().unwrap()) (peer_infos, raw_peer_infos.as_ref().unwrap())
}; };
if !pi.is_empty() { if !pi.is_empty() {
service_impl.synced_route_info.update_peer_infos( let updated_peer_ids = service_impl.synced_route_info.update_peer_infos(
my_peer_id, my_peer_id,
service_impl.my_peer_route_id, service_impl.my_peer_route_id,
from_peer_id, from_peer_id,
@@ -3217,6 +3208,12 @@ impl RouteSessionManager {
); );
session.update_dst_saved_peer_info_version(pi, from_peer_id); session.update_dst_saved_peer_info_version(pi, from_peer_id);
need_update_route_table = true; need_update_route_table = true;
if !updated_peer_ids.is_empty() {
service_impl
.global_ctx
.issue_event(GlobalCtxEvent::PeerInfoUpdated(updated_peer_ids));
}
} }
} }