use uint32 as peer id (#29)
This commit is contained in:
@@ -8,8 +8,9 @@ use crate::{
|
||||
error::Error,
|
||||
global_ctx::ArcGlobalCtx,
|
||||
network::IPCollector,
|
||||
PeerId,
|
||||
},
|
||||
peers::{peer_manager::PeerManager, peer_rpc::PeerRpcManager, PeerId},
|
||||
peers::{peer_manager::PeerManager, peer_rpc::PeerRpcManager},
|
||||
};
|
||||
|
||||
use crate::rpc::{peer::GetIpListResponse, PeerConnInfo};
|
||||
@@ -37,7 +38,7 @@ impl PeerManagerForDirectConnector for PeerManager {
|
||||
|
||||
let routes = self.list_routes().await;
|
||||
for r in routes.iter() {
|
||||
ret.push(r.peer_id.parse().unwrap());
|
||||
ret.push(r.peer_id);
|
||||
}
|
||||
|
||||
ret
|
||||
@@ -91,7 +92,6 @@ impl std::fmt::Debug for DirectConnectorManagerData {
|
||||
}
|
||||
|
||||
pub struct DirectConnectorManager {
|
||||
my_node_id: uuid::Uuid,
|
||||
global_ctx: ArcGlobalCtx,
|
||||
data: Arc<DirectConnectorManagerData>,
|
||||
|
||||
@@ -99,13 +99,8 @@ pub struct DirectConnectorManager {
|
||||
}
|
||||
|
||||
impl DirectConnectorManager {
|
||||
pub fn new(
|
||||
my_node_id: uuid::Uuid,
|
||||
global_ctx: ArcGlobalCtx,
|
||||
peer_manager: Arc<PeerManager>,
|
||||
) -> Self {
|
||||
pub fn new(global_ctx: ArcGlobalCtx, peer_manager: Arc<PeerManager>) -> Self {
|
||||
Self {
|
||||
my_node_id,
|
||||
global_ctx: global_ctx.clone(),
|
||||
data: Arc::new(DirectConnectorManagerData {
|
||||
global_ctx,
|
||||
@@ -130,14 +125,14 @@ impl DirectConnectorManager {
|
||||
|
||||
pub fn run_as_client(&mut self) {
|
||||
let data = self.data.clone();
|
||||
let my_node_id = self.my_node_id.clone();
|
||||
let my_peer_id = self.data.peer_manager.my_peer_id();
|
||||
self.tasks.spawn(
|
||||
async move {
|
||||
loop {
|
||||
let peers = data.peer_manager.list_peers().await;
|
||||
let mut tasks = JoinSet::new();
|
||||
for peer_id in peers {
|
||||
if peer_id == my_node_id {
|
||||
if peer_id == my_peer_id {
|
||||
continue;
|
||||
}
|
||||
tasks.spawn(Self::do_try_direct_connect(data.clone(), peer_id));
|
||||
@@ -149,7 +144,9 @@ impl DirectConnectorManager {
|
||||
tokio::time::sleep(std::time::Duration::from_secs(5)).await;
|
||||
}
|
||||
}
|
||||
.instrument(tracing::info_span!("direct_connector_client", my_id = ?self.my_node_id)),
|
||||
.instrument(
|
||||
tracing::info_span!("direct_connector_client", my_id = ?self.global_ctx.id),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -185,7 +182,7 @@ impl DirectConnectorManager {
|
||||
);
|
||||
data.peer_manager
|
||||
.get_peer_map()
|
||||
.close_peer_conn(&peer_id, &conn_id)
|
||||
.close_peer_conn(peer_id, &conn_id)
|
||||
.await?;
|
||||
return Err(Error::InvalidUrl(addr));
|
||||
}
|
||||
@@ -291,14 +288,12 @@ mod tests {
|
||||
connect_peer_manager(p_a.clone(), p_b.clone()).await;
|
||||
connect_peer_manager(p_b.clone(), p_c.clone()).await;
|
||||
|
||||
wait_route_appear(p_a.clone(), p_c.my_node_id())
|
||||
wait_route_appear(p_a.clone(), p_c.my_peer_id())
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let mut dm_a =
|
||||
DirectConnectorManager::new(p_a.my_node_id(), p_a.get_global_ctx(), p_a.clone());
|
||||
let mut dm_c =
|
||||
DirectConnectorManager::new(p_c.my_node_id(), p_c.get_global_ctx(), p_c.clone());
|
||||
let mut dm_a = DirectConnectorManager::new(p_a.get_global_ctx(), p_a.clone());
|
||||
let mut dm_c = DirectConnectorManager::new(p_c.get_global_ctx(), p_c.clone());
|
||||
|
||||
dm_a.run_as_client();
|
||||
dm_c.run_as_server();
|
||||
@@ -318,7 +313,7 @@ mod tests {
|
||||
|
||||
lis_c.run().await.unwrap();
|
||||
|
||||
wait_route_appear_with_cost(p_a.clone(), p_c.my_node_id(), Some(1))
|
||||
wait_route_appear_with_cost(p_a.clone(), p_c.my_peer_id(), Some(1))
|
||||
.await
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ use tokio::{
|
||||
time::timeout,
|
||||
};
|
||||
|
||||
use crate::rpc as easytier_rpc;
|
||||
use crate::{common::PeerId, peers::peer_conn::PeerConnId, rpc as easytier_rpc};
|
||||
|
||||
use crate::{
|
||||
common::{
|
||||
@@ -32,8 +32,8 @@ type ConnectorMap = Arc<DashMap<String, Box<dyn TunnelConnector + Send + Sync>>>
|
||||
#[derive(Debug, Clone)]
|
||||
struct ReconnResult {
|
||||
dead_url: String,
|
||||
peer_id: uuid::Uuid,
|
||||
conn_id: uuid::Uuid,
|
||||
peer_id: PeerId,
|
||||
conn_id: PeerConnId,
|
||||
}
|
||||
|
||||
struct ConnectorManagerData {
|
||||
@@ -48,24 +48,18 @@ struct ConnectorManagerData {
|
||||
}
|
||||
|
||||
pub struct ManualConnectorManager {
|
||||
my_node_id: uuid::Uuid,
|
||||
global_ctx: ArcGlobalCtx,
|
||||
data: Arc<ConnectorManagerData>,
|
||||
tasks: JoinSet<()>,
|
||||
}
|
||||
|
||||
impl ManualConnectorManager {
|
||||
pub fn new(
|
||||
my_node_id: uuid::Uuid,
|
||||
global_ctx: ArcGlobalCtx,
|
||||
peer_manager: Arc<PeerManager>,
|
||||
) -> Self {
|
||||
pub fn new(global_ctx: ArcGlobalCtx, peer_manager: Arc<PeerManager>) -> Self {
|
||||
let connectors = Arc::new(DashMap::new());
|
||||
let tasks = JoinSet::new();
|
||||
let event_subscriber = global_ctx.subscribe();
|
||||
|
||||
let mut ret = Self {
|
||||
my_node_id,
|
||||
global_ctx: global_ctx.clone(),
|
||||
data: Arc::new(ConnectorManagerData {
|
||||
connectors,
|
||||
@@ -364,8 +358,7 @@ mod tests {
|
||||
set_global_var!(MANUAL_CONNECTOR_RECONNECT_INTERVAL_MS, 1);
|
||||
|
||||
let peer_mgr = create_mock_peer_manager().await;
|
||||
let my_node_id = uuid::Uuid::new_v4();
|
||||
let mgr = ManualConnectorManager::new(my_node_id, peer_mgr.get_global_ctx(), peer_mgr);
|
||||
let mgr = ManualConnectorManager::new(peer_mgr.get_global_ctx(), peer_mgr);
|
||||
|
||||
struct MockConnector {}
|
||||
#[async_trait::async_trait]
|
||||
|
||||
@@ -9,9 +9,9 @@ use tracing::Instrument;
|
||||
use crate::{
|
||||
common::{
|
||||
constants, error::Error, global_ctx::ArcGlobalCtx, rkyv_util::encode_to_bytes,
|
||||
stun::StunInfoCollectorTrait,
|
||||
stun::StunInfoCollectorTrait, PeerId,
|
||||
},
|
||||
peers::{peer_manager::PeerManager, PeerId},
|
||||
peers::peer_manager::PeerManager,
|
||||
rpc::NatType,
|
||||
tunnels::{
|
||||
common::setup_sokcet2,
|
||||
@@ -283,7 +283,7 @@ impl UdpHolePunchConnector {
|
||||
continue;
|
||||
};
|
||||
|
||||
let peer_id: PeerId = route.peer_id.parse().unwrap();
|
||||
let peer_id: PeerId = route.peer_id;
|
||||
let conns = data.peer_mgr.list_peer_conns(&peer_id).await;
|
||||
if conns.is_some() && conns.unwrap().len() > 0 {
|
||||
continue;
|
||||
@@ -310,7 +310,7 @@ impl UdpHolePunchConnector {
|
||||
|
||||
// if we have smae level of full cone, node with smaller peer_id will be the initiator
|
||||
if my_nat_type == peer_nat_type {
|
||||
if data.global_ctx.id > peer_id {
|
||||
if data.peer_mgr.my_peer_id() > peer_id {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
@@ -522,7 +522,7 @@ pub mod tests {
|
||||
connect_peer_manager(p_a.clone(), p_b.clone()).await;
|
||||
connect_peer_manager(p_b.clone(), p_c.clone()).await;
|
||||
|
||||
wait_route_appear(p_a.clone(), p_c.my_node_id())
|
||||
wait_route_appear(p_a.clone(), p_c.my_peer_id())
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
@@ -534,7 +534,7 @@ pub mod tests {
|
||||
hole_punching_a.run().await.unwrap();
|
||||
hole_punching_c.run().await.unwrap();
|
||||
|
||||
wait_route_appear_with_cost(p_a.clone(), p_c.my_node_id(), Some(1))
|
||||
wait_route_appear_with_cost(p_a.clone(), p_c.my_peer_id(), Some(1))
|
||||
.await
|
||||
.unwrap();
|
||||
println!("{:?}", p_a.list_routes().await);
|
||||
|
||||
Reference in New Issue
Block a user