use std::os::fd::{AsFd, AsRawFd, BorrowedFd, RawFd};
#[cfg(windows)]
use std::os::windows::io::BorrowedSocket;
wrapper_lite::wrapper!(
#[wrapper_impl(Debug)]
#[wrapper_impl(AsRef)]
#[wrapper_impl(AsMut)]
#[wrapper_impl(BorrowMut)]
#[wrapper_impl(DerefMut)]
#[wrapper_impl(From)]
pub struct Stream(tokio::net::TcpStream);
);
impl AsFd for Stream {
fn as_fd(&self) -> BorrowedFd<'_> {
self.inner.as_fd()
}
}
impl AsRawFd for Stream {
fn as_raw_fd(&self) -> RawFd {
self.inner.as_raw_fd()
}
}
#[cfg(windows)]
impl AsSocket for Stream {
fn as_socket(&self) -> BorrowedSocket<'_> {
self.inner.as_socket()
}
}
impl TryFrom<std::net::TcpStream> for Stream {
type Error = std::io::Error;
fn try_from(stream: std::net::TcpStream) -> Result<Self, Self::Error> {
stream.set_nonblocking(true)?;
Ok(Self::const_from(stream.try_into()?))
}
}