Skip to content

Commit 8678164

Browse files
committed
Impl RawFd converstion traits for TcpListener, TcpStream and UdpSocket
1 parent 96d700f commit 8678164

File tree

2 files changed

+190
-67
lines changed

2 files changed

+190
-67
lines changed

src/libstd/sys/wasi/ext/io.rs

+55
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use crate::fs;
66
use crate::io;
77
use crate::sys;
8+
use crate::net;
89
use crate::sys_common::{AsInner, FromInner, IntoInner};
910

1011
/// Raw file descriptors.
@@ -50,6 +51,60 @@ pub trait IntoRawFd {
5051
fn into_raw_fd(self) -> RawFd;
5152
}
5253

54+
impl AsRawFd for net::TcpStream {
55+
fn as_raw_fd(&self) -> RawFd {
56+
self.as_inner().fd().as_raw()
57+
}
58+
}
59+
60+
impl FromRawFd for net::TcpStream {
61+
unsafe fn from_raw_fd(fd: RawFd) -> net::TcpStream {
62+
net::TcpStream::from_inner(sys::net::TcpStream::from_inner(fd))
63+
}
64+
}
65+
66+
impl IntoRawFd for net::TcpStream {
67+
fn into_raw_fd(self) -> RawFd {
68+
self.into_inner().into_fd().into_raw()
69+
}
70+
}
71+
72+
impl AsRawFd for net::TcpListener {
73+
fn as_raw_fd(&self) -> RawFd {
74+
self.as_inner().fd().as_raw()
75+
}
76+
}
77+
78+
impl FromRawFd for net::TcpListener {
79+
unsafe fn from_raw_fd(fd: RawFd) -> net::TcpListener {
80+
net::TcpListener::from_inner(sys::net::TcpListener::from_inner(fd))
81+
}
82+
}
83+
84+
impl IntoRawFd for net::TcpListener {
85+
fn into_raw_fd(self) -> RawFd {
86+
self.into_inner().into_fd().into_raw()
87+
}
88+
}
89+
90+
impl AsRawFd for net::UdpSocket {
91+
fn as_raw_fd(&self) -> RawFd {
92+
self.as_inner().fd().as_raw()
93+
}
94+
}
95+
96+
impl FromRawFd for net::UdpSocket {
97+
unsafe fn from_raw_fd(fd: RawFd) -> net::UdpSocket {
98+
net::UdpSocket::from_inner(sys::net::UdpSocket::from_inner(fd))
99+
}
100+
}
101+
102+
impl IntoRawFd for net::UdpSocket {
103+
fn into_raw_fd(self) -> RawFd {
104+
self.into_inner().into_fd().into_raw()
105+
}
106+
}
107+
53108
impl AsRawFd for fs::File {
54109
fn as_raw_fd(&self) -> RawFd {
55110
self.as_inner().fd().as_raw()

0 commit comments

Comments
 (0)