mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-09-03 09:35:41 +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),
|
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)
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user