1 use std::os::wasi::io::{FromRawFd, AsRawFd};
2 
3 use {TcpBuilder, UdpBuilder, FromInner, AsInner};
4 use socket::Socket;
5 use sys::{self, c::__wasi_fd_t};
6 
7 impl FromRawFd for TcpBuilder {
from_raw_fd(fd: __wasi_fd_t) -> TcpBuilder8     unsafe fn from_raw_fd(fd: __wasi_fd_t) -> TcpBuilder {
9         let sock = sys::Socket::from_inner(fd);
10         TcpBuilder::from_inner(Socket::from_inner(sock))
11     }
12 }
13 
14 impl AsRawFd for TcpBuilder {
as_raw_fd(&self) -> __wasi_fd_t15     fn as_raw_fd(&self) -> __wasi_fd_t {
16         // TODO: this unwrap() is very bad
17         self.as_inner().borrow().as_ref().unwrap().as_inner().raw() as __wasi_fd_t
18     }
19 }
20 
21 impl FromRawFd for UdpBuilder {
from_raw_fd(fd: __wasi_fd_t) -> UdpBuilder22     unsafe fn from_raw_fd(fd: __wasi_fd_t) -> UdpBuilder {
23         let sock = sys::Socket::from_inner(fd);
24         UdpBuilder::from_inner(Socket::from_inner(sock))
25     }
26 }
27 
28 impl AsRawFd for UdpBuilder {
as_raw_fd(&self) -> __wasi_fd_t29     fn as_raw_fd(&self) -> __wasi_fd_t {
30         // TODO: this unwrap() is very bad
31         self.as_inner().borrow().as_ref().unwrap().as_inner().raw() as __wasi_fd_t
32     }
33 }
34