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-02-22 03:11:14 +01: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),
PeerConnRemoved(PeerConnInfo),
PeerInfoUpdated(Vec<PeerId>),
ListenerAdded(url::Url),
ListenerAddFailed(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);
}
GlobalCtxEvent::PeerInfoUpdated(_) => {}
GlobalCtxEvent::PeerConnAdded(conn_info) => {
event!(
info,
+14 -17
View File
@@ -72,16 +72,6 @@ use crate::{
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 itertools::Itertools;
@@ -558,8 +548,8 @@ impl SyncedRouteInfo {
dst_peer_id: PeerId,
peer_infos: &[RoutePeerInfo],
raw_peer_infos: &[DynamicMessage],
) -> Result<(), Error> {
let mut need_inc_version = false;
) -> Result<Vec<PeerId>, Error> {
let mut updated_peer_ids = Vec::new();
for (idx, route_info) in peer_infos.iter().enumerate() {
let mut route_info = route_info.clone();
let raw_route_info = &raw_peer_infos[idx];
@@ -595,14 +585,15 @@ impl SyncedRouteInfo {
{
self.raw_peer_infos
.insert(route_info.peer_id, raw_route_info.clone());
guard.insert(route_info.peer_id, route_info);
need_inc_version = true;
let peer_id = route_info.peer_id;
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();
}
Ok(())
Ok(updated_peer_ids)
}
fn update_conn_info_one_peer(
@@ -3202,7 +3193,7 @@ impl RouteSessionManager {
(peer_infos, raw_peer_infos.as_ref().unwrap())
};
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,
service_impl.my_peer_route_id,
from_peer_id,
@@ -3217,6 +3208,12 @@ impl RouteSessionManager {
);
session.update_dst_saved_peer_info_version(pi, from_peer_id);
need_update_route_table = true;
if !updated_peer_ids.is_empty() {
service_impl
.global_ctx
.issue_event(GlobalCtxEvent::PeerInfoUpdated(updated_peer_ids));
}
}
}