mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-08-06 20:49:46 +00:00
add GlobalCtxEvent::PeerInfoUpdated, issue this event in do_sync_route_info
fix use in peer_ospf_route.rs
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -307,6 +307,8 @@ fn handle_event(
|
||||
event!(info, peer_id, "[{}] peer removed", instance_id);
|
||||
}
|
||||
|
||||
GlobalCtxEvent::PeerInfoUpdated(_) => {}
|
||||
|
||||
GlobalCtxEvent::PeerConnAdded(conn_info) => {
|
||||
event!(
|
||||
info,
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user