use async_std::net::{TcpStream, ToSocketAddrs};
impl Connection {
- pub fn tcp_client<A: ToSocketAddrs + std::fmt::Display>(ip_addrs: A) -> anyhow::Result<Self> {
- let stream = futures::executor::block_on(TcpStream::connect(&ip_addrs))?;
+ /// Creates a [`Connection`] that uses a TCP transport.
+ ///
+ /// # Example
+ ///
+ /// Please see the [tcp-client](https://github.com/sachanganesh/connect-rs/blob/main/examples/tcp-client/src/main.rs)
+ /// example program for a more thorough showcase.
+ ///
+ /// Basic usage:
+ ///
+ /// ```ignore
+ /// let mut conn = Connection::tcp_client("127.0.0.1:3456").await?;
+ /// ```
+ pub async fn tcp_client<A: ToSocketAddrs + std::fmt::Display>(
+ ip_addrs: A,
+ ) -> anyhow::Result<Self> {
+ let stream = TcpStream::connect(&ip_addrs).await?;
info!("Established client TCP connection to {}", ip_addrs);
stream.set_nodelay(true)?;
}
impl From<TcpStream> for Connection {
+ /// Creates a [`Connection`] using a TCP transport from an async [`TcpStream`].
fn from(stream: TcpStream) -> Self {
let write_stream = stream.clone();
Self::new(
local_addr,
peer_addr,
- Box::new(stream),
- Box::new(write_stream),
+ Box::pin(stream),
+ Box::pin(write_stream),
)
}
}