diff --git a/veilid-cli/Cargo.toml b/veilid-cli/Cargo.toml index ecb62682..3f186f08 100644 --- a/veilid-cli/Cargo.toml +++ b/veilid-cli/Cargo.toml @@ -17,6 +17,8 @@ path = "src/main.rs" [features] default = ["rt-tokio"] +default-async-std = ["rt-async-std"] + rt-async-std = [ "async-std", "veilid-tools/rt-async-std", diff --git a/veilid-cli/src/tools.rs b/veilid-cli/src/tools.rs index ffe92f2d..580a1d1d 100644 --- a/veilid-cli/src/tools.rs +++ b/veilid-cli/src/tools.rs @@ -8,12 +8,10 @@ use core::str::FromStr; cfg_if! { if #[cfg(feature="rt-async-std")] { - pub use async_std::net::TcpStream; pub fn block_on, T>(f: F) -> T { async_std::task::block_on(f) } } else if #[cfg(feature="rt-tokio")] { - pub use tokio::net::TcpStream; pub fn block_on, T>(f: F) -> T { let rt = tokio::runtime::Runtime::new().unwrap(); let local = tokio::task::LocalSet::new(); diff --git a/veilid-tools/src/socket_tools.rs b/veilid-tools/src/socket_tools.rs index a2a567d5..3e42969f 100644 --- a/veilid-tools/src/socket_tools.rs +++ b/veilid-tools/src/socket_tools.rs @@ -119,11 +119,9 @@ pub fn set_tcp_stream_linger( cfg_if! { if #[cfg(feature="rt-async-std")] { - pub type IncomingStream = Incoming; - pub type ReadHalf = futures_util::io::ReadHalf, - pub type WriteHalf = futures_util::io::WriteHalf, + pub type ReadHalf = futures_util::io::ReadHalf; + pub type WriteHalf = futures_util::io::WriteHalf; } else if #[cfg(feature="rt-tokio")] { - pub type IncomingStream = tokio_stream::wrappers::TcpListenerStream; pub type ReadHalf = tokio::net::tcp::OwnedReadHalf; pub type WriteHalf = tokio::net::tcp::OwnedWriteHalf; } else { @@ -131,12 +129,14 @@ cfg_if! { } } -pub fn async_tcp_listener_incoming(tcp_listener: TcpListener) -> IncomingStream { +pub fn async_tcp_listener_incoming( + tcp_listener: TcpListener, +) -> Pin> + Send>> { cfg_if! { if #[cfg(feature="rt-async-std")] { - tcp_listener.incoming() + Box::pin(tcp_listener.into_incoming()) } else if #[cfg(feature="rt-tokio")] { - tokio_stream::wrappers::TcpListenerStream::new(tcp_listener) + Box::pin(tokio_stream::wrappers::TcpListenerStream::new(tcp_listener)) } else { compile_error!("needs executor implementation"); } diff --git a/veilid-tools/src/virtual_network/router_client.rs b/veilid-tools/src/virtual_network/router_client.rs index 85a59a93..f9f51b34 100644 --- a/veilid-tools/src/virtual_network/router_client.rs +++ b/veilid-tools/src/virtual_network/router_client.rs @@ -205,7 +205,7 @@ impl RouterClient { ts_writer = writer.compat_write(); } else if #[cfg(feature="rt-async-std")] { use futures_util::io::AsyncReadExt; - ts = ::async_std::net::TcpStream::connect(addrs.as_slice()).await?; + let ts = ::async_std::net::TcpStream::connect(addrs.as_slice()).await?; (ts_reader, ts_writer) = ts.split(); } else { compile_error!("must choose an executor");