mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-09-04 01:55:41 +00:00
utils: add DetachableTask & ContextGuard (#2138)
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
use crossbeam::atomic::AtomicCell;
|
||||
use futures::{StreamExt, TryFutureExt};
|
||||
use std::{
|
||||
any::Any,
|
||||
fmt::Debug,
|
||||
@@ -8,9 +10,6 @@ use std::{
|
||||
},
|
||||
};
|
||||
|
||||
use crossbeam::atomic::AtomicCell;
|
||||
use futures::{StreamExt, TryFutureExt};
|
||||
|
||||
use base64::Engine as _;
|
||||
use base64::engine::general_purpose::STANDARD as BASE64_STANDARD;
|
||||
use hmac::Mac;
|
||||
@@ -27,14 +26,21 @@ use zerocopy::AsBytes;
|
||||
|
||||
use snow::{HandshakeState, params::NoiseParams};
|
||||
|
||||
use super::{
|
||||
PacketRecvChan,
|
||||
peer_conn_ping::PeerConnPinger,
|
||||
peer_session::{PeerSession, PeerSessionAction},
|
||||
traffic_metrics::AggregateTrafficMetrics,
|
||||
};
|
||||
use crate::utils::BoxExt;
|
||||
use crate::{
|
||||
common::{
|
||||
PeerId,
|
||||
config::{NetworkIdentity, NetworkSecretDigest},
|
||||
defer,
|
||||
error::Error,
|
||||
global_ctx::ArcGlobalCtx,
|
||||
},
|
||||
guard,
|
||||
peers::peer_session::{PeerSessionStore, SessionKey, UpsertResponderSessionReturn},
|
||||
proto::{
|
||||
api::instance::{PeerConnInfo, PeerConnStats},
|
||||
@@ -54,13 +60,6 @@ use crate::{
|
||||
use_global_var,
|
||||
};
|
||||
|
||||
use super::{
|
||||
PacketRecvChan,
|
||||
peer_conn_ping::PeerConnPinger,
|
||||
peer_session::{PeerSession, PeerSessionAction},
|
||||
traffic_metrics::AggregateTrafficMetrics,
|
||||
};
|
||||
|
||||
pub type PeerConnId = uuid::Uuid;
|
||||
|
||||
const MAGIC: u32 = 0xd1e1a5e1;
|
||||
@@ -381,9 +380,9 @@ impl PeerConn {
|
||||
session_filter,
|
||||
noise_handshake_result: None,
|
||||
|
||||
tunnel: Arc::new(Mutex::new(Box::new(defer::Defer::new(move || {
|
||||
mpsc_tunnel.close()
|
||||
})))),
|
||||
tunnel: Arc::new(Mutex::new(
|
||||
guard!([mut mpsc_tunnel] mpsc_tunnel.close()).boxed(),
|
||||
)),
|
||||
sink,
|
||||
recv: Mutex::new(Some(recv)),
|
||||
tunnel_info,
|
||||
|
||||
Reference in New Issue
Block a user