This commit is contained in:
parent
cf3cccd3ca
commit
04760fd88d
15 changed files with 136 additions and 20 deletions
|
|
@ -185,7 +185,9 @@ pub async fn connect_with_config(
|
|||
.map_err(|e| CommunicationError::ConnectingError(e.to_string()))?;
|
||||
tracing::debug!(elapsed = ?transport_connect_started.elapsed(), "client connect: establish WebTransport session");
|
||||
|
||||
let handle = Arc::new(ConnectionHandle::new());
|
||||
let handle = Arc::new(ConnectionHandle::with_remote_addr(
|
||||
connection.quic_connection().remote_address(),
|
||||
));
|
||||
let policy = Arc::new(config.policy);
|
||||
|
||||
let sender = Sender::new(connection.clone(), handle.clone(), policy.clone());
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
use mtp_common::CommunicationError;
|
||||
use std::net::SocketAddr;
|
||||
use std::sync::{
|
||||
Arc,
|
||||
atomic::{AtomicBool, Ordering},
|
||||
|
|
@ -10,6 +11,7 @@ pub struct ConnectionHandle {
|
|||
closed: AtomicBool,
|
||||
close_tx: watch::Sender<Option<CommunicationError>>,
|
||||
close_rx: watch::Receiver<Option<CommunicationError>>,
|
||||
remote_addr: Option<SocketAddr>,
|
||||
}
|
||||
|
||||
impl ConnectionHandle {
|
||||
|
|
@ -19,9 +21,20 @@ impl ConnectionHandle {
|
|||
closed: AtomicBool::new(false),
|
||||
close_tx,
|
||||
close_rx,
|
||||
remote_addr: None,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn with_remote_addr(remote_addr: SocketAddr) -> Self {
|
||||
let mut handle = Self::new();
|
||||
handle.remote_addr = Some(remote_addr);
|
||||
handle
|
||||
}
|
||||
|
||||
pub fn remote_addr(&self) -> Option<SocketAddr> {
|
||||
self.remote_addr
|
||||
}
|
||||
|
||||
pub fn is_open(&self) -> bool {
|
||||
!self.closed.load(Ordering::SeqCst)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -167,7 +167,9 @@ async fn handle_connection(
|
|||
policy: Arc<Policy>,
|
||||
) {
|
||||
let setup_started = Instant::now();
|
||||
let handle = Arc::new(ConnectionHandle::new());
|
||||
let handle = Arc::new(ConnectionHandle::with_remote_addr(
|
||||
connection.quic_connection().remote_address(),
|
||||
));
|
||||
|
||||
let sender = Sender::new(connection.clone(), handle.clone(), policy.clone());
|
||||
let receiver = Receiver::new_for_handshake(connection, handle, policy);
|
||||
|
|
|
|||
Loading…
Reference in a new issue