Skip to content

Commit 07daaaf

Browse files
committed
use tokio_udt on linux only
1 parent 58c5fcd commit 07daaaf

File tree

9 files changed

+29
-24
lines changed

9 files changed

+29
-24
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,6 @@ socket2 = { version = "0.4.4" }
3232
nix = { version = "0.24.2" }
3333
num_cpus = { version = "1.13" }
3434

35+
[target.'cfg(target_os="linux")'.dependencies]
3536
#tokio-udt = { git = "https://github.com/amatissart/tokio-udt/", rev="f9fdae" }
3637
tokio-udt = "0.1.0-alpha.5"

src/link/rendezvous/client.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::{
22
crypto::{Identity, KeyCard},
33
link::rendezvous::{ClientSettings, Request, Response, ShardId},
4-
net::traits::{ConnectSettings, Connect},
4+
net::traits::{Connect, ConnectSettings},
55
};
66

77
use doomstack::{here, Doom, ResultExt, Top};

src/link/rendezvous/listener.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,12 @@ use tokio::sync::{
2020
mpsc::{Receiver, Sender},
2121
};
2222

23-
use tokio_udt::UdtListener;
24-
2523
type Outlet = Receiver<(Identity, SecureConnection)>;
2624

2725
pub(crate) enum RawListener {
2826
Tcp(TcpListener),
29-
Udt(UdtListener),
27+
#[cfg(target_os = "linux")]
28+
Udt(tokio_udt::UdtListener),
3029
}
3130

3231
pub struct Listener {
@@ -57,11 +56,14 @@ impl Listener {
5756
let port = listener.local_addr().unwrap().port();
5857
(RawListener::Tcp(listener), port)
5958
}
59+
#[cfg(target_os = "linux")]
6060
TransportProtocol::UDT(ref config) => {
61-
let listener =
62-
UdtListener::bind((Ipv4Addr::UNSPECIFIED, 0).into(), Some(config.clone()))
63-
.await
64-
.unwrap();
61+
let listener = tokio_udt::UdtListener::bind(
62+
(Ipv4Addr::UNSPECIFIED, 0).into(),
63+
Some(config.clone()),
64+
)
65+
.await
66+
.unwrap();
6567
let port = listener.local_addr().unwrap().port();
6668
(RawListener::Udt(listener), port)
6769
}
@@ -101,6 +103,7 @@ impl Listener {
101103
Ok((stream.into(), addr))
102104
})
103105
}
106+
#[cfg(target_os = "linux")]
104107
RawListener::Udt(ref udt_listener) => udt_listener
105108
.accept()
106109
.await

src/link/rendezvous/server.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ use std::{
1717
};
1818

1919
use tokio::{io, net::TcpListener};
20-
use tokio_udt::UdtListener;
2120

2221
pub struct Server {
2322
_fuse: Fuse,
@@ -64,8 +63,9 @@ impl Server {
6463
let listener = {
6564
let result = match settings.connect.transport {
6665
TransportProtocol::TCP => TcpListener::bind(address).await.map(RawListener::Tcp),
66+
#[cfg(target_os = "linux")]
6767
TransportProtocol::UDT(ref config) => {
68-
UdtListener::bind(address, Some(config.clone()))
68+
tokio_udt::UdtListener::bind(address, Some(config.clone()))
6969
.await
7070
.map(RawListener::Udt)
7171
}
@@ -96,6 +96,7 @@ impl Server {
9696
.accept()
9797
.await
9898
.map(|(stream, address)| (stream.into(), address)),
99+
#[cfg(target_os = "linux")]
99100
RawListener::Udt(ref udt_listener) => udt_listener
100101
.accept()
101102
.await

src/link/test/tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ mod context {
77
},
88
net::{
99
test::{System as NetSystem, TestConnector},
10-
traits::{ConnectSettings, Connect},
10+
traits::{Connect, ConnectSettings},
1111
Connector, Listener, PlainConnection,
1212
},
1313
time::test::join,

src/net/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@ mod session_connector;
1616
mod session_control;
1717
mod session_listener;
1818
mod socket;
19-
mod udt;
2019
mod unit_receiver;
2120
mod unit_sender;
2221

2322
pub mod sockets;
2423
pub mod traits;
2524

25+
#[cfg(target_os = "linux")]
26+
mod udt;
27+
2628
#[cfg(any(test, feature = "test_utilities"))]
2729
pub mod test;
2830

src/net/test/test_connector.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use async_trait::async_trait;
33
use crate::{
44
crypto::{Identity, KeyChain},
55
net::{
6-
traits::{ConnectSettings, Connect},
6+
traits::{Connect, ConnectSettings},
77
Connector, SecureConnection,
88
},
99
};

src/net/traits/connect.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,12 @@ use crate::net::PlainConnection;
55
use std::io::Result;
66

77
use tokio::net::{TcpStream, ToSocketAddrs};
8-
use tokio_udt::{UdtConfiguration, UdtConnection};
9-
10-
/* TODO:
11-
* Define generic Connect
12-
* Retry handshake / RDV queue in UDT
13-
*/
148

159
#[derive(Clone, Debug)]
1610
pub enum TransportProtocol {
1711
TCP,
18-
UDT(UdtConfiguration),
12+
#[cfg(target_os = "linux")]
13+
UDT(tokio_udt::UdtConfiguration),
1914
}
2015

2116
#[derive(Clone, Debug)]
@@ -47,9 +42,12 @@ where
4742
stream.set_nodelay(true)?;
4843
Ok(stream.into())
4944
}),
50-
TransportProtocol::UDT(config) => UdtConnection::connect(&self, Some(config.clone()))
51-
.await
52-
.map(Into::into),
45+
#[cfg(target_os = "linux")]
46+
TransportProtocol::UDT(config) => {
47+
tokio_udt::UdtConnection::connect(&self, Some(config.clone()))
48+
.await
49+
.map(Into::into)
50+
}
5351
}
5452
}
5553
}

src/net/traits/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
mod connect;
22

3-
pub use connect::{ConnectSettings, Connect, TransportProtocol};
3+
pub use connect::{Connect, ConnectSettings, TransportProtocol};

0 commit comments

Comments
 (0)