Skip to content

Commit 251a06d

Browse files
committed
from as trait
1 parent dcbe067 commit 251a06d

File tree

4 files changed

+66
-3
lines changed

4 files changed

+66
-3
lines changed

src/net/uds/listener.rs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
#[cfg(windows)]
22
use crate::sys::uds::{net, SocketAddr};
3+
#[cfg(windows)]
4+
use std::os::windows::io::{AsRawSocket, IntoRawSocket, RawSocket};
35
#[cfg(unix)]
46
use std::os::{
57
fd::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd},
68
unix::net::{self, SocketAddr},
79
};
8-
use std::path::Path;
910
use std::{fmt, io};
11+
use std::{os::windows::io::FromRawSocket, path::Path};
1012

1113
use crate::io_source::IoSource;
1214
use crate::net::UnixStream;
@@ -145,3 +147,21 @@ impl From<OwnedFd> for UnixListener {
145147
UnixListener::from_std(From::from(fd))
146148
}
147149
}
150+
#[cfg(windows)]
151+
impl AsRawSocket for UnixListener {
152+
fn as_raw_socket(&self) -> RawSocket {
153+
self.inner.as_raw_socket()
154+
}
155+
}
156+
#[cfg(windows)]
157+
impl FromRawSocket for UnixListener {
158+
unsafe fn from_raw_socket(sock: RawSocket) -> Self {
159+
UnixListener::from_std(FromRawSocket::from_raw_socket(sock))
160+
}
161+
}
162+
#[cfg(windows)]
163+
impl IntoRawSocket for UnixListener {
164+
fn into_raw_socket(self) -> RawSocket {
165+
self.inner.into_inner().into_raw_socket()
166+
}
167+
}

src/net/uds/stream.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
use std::fmt;
22
use std::io::{self, IoSlice, IoSliceMut, Read, Write};
33
use std::net::Shutdown;
4+
#[cfg(windows)]
5+
use std::os::windows::io::{FromRawSocket, IntoRawSocket};
6+
use std::os::windows::io::{AsRawSocket, RawSocket};
47
#[cfg(unix)]
58
use std::os::{fd::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd},unix::net::{self, SocketAddr}};
69
#[cfg(windows)]
@@ -293,3 +296,21 @@ impl From<OwnedFd> for UnixStream {
293296
UnixStream::from_std(From::from(fd))
294297
}
295298
}
299+
#[cfg(windows)]
300+
impl AsRawSocket for UnixStream {
301+
fn as_raw_socket(&self) -> RawSocket {
302+
self.inner.as_raw_socket()
303+
}
304+
}
305+
#[cfg(windows)]
306+
impl FromRawSocket for UnixStream {
307+
unsafe fn from_raw_socket(sock: RawSocket) -> Self {
308+
UnixStream::from_std(FromRawSocket::from_raw_socket(sock))
309+
}
310+
}
311+
#[cfg(windows)]
312+
impl IntoRawSocket for UnixStream {
313+
fn into_raw_socket(self) -> RawSocket {
314+
self.inner.into_inner().into_raw_socket()
315+
}
316+
}

src/sys/windows/uds/listener.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use super::{socketaddr_un, startup, wsa_error, Socket, SocketAddr, UnixStream};
22
use std::{
33
io,
4-
os::windows::io::{AsRawSocket, RawSocket},
4+
os::windows::io::{AsRawSocket, FromRawSocket, IntoRawSocket, RawSocket},
55
path::Path,
66
};
77
use windows_sys::Win32::Networking::WinSock::{self, SOCKADDR_UN, SOCKET_ERROR};
@@ -210,3 +210,13 @@ impl AsRawSocket for UnixListener {
210210
self.0 .0 as _
211211
}
212212
}
213+
impl FromRawSocket for UnixListener {
214+
unsafe fn from_raw_socket(sock: RawSocket) -> Self {
215+
Self(Socket(sock as _))
216+
}
217+
}
218+
impl IntoRawSocket for UnixListener {
219+
fn into_raw_socket(self) -> RawSocket {
220+
self.0 .0 as _
221+
}
222+
}

src/sys/windows/uds/stream.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ use std::fmt::Debug;
77
use std::io;
88
use std::net::Shutdown;
99
use std::os::windows::io::AsRawSocket;
10+
use std::os::windows::io::FromRawSocket;
11+
use std::os::windows::io::IntoRawSocket;
1012
use std::os::windows::io::RawSocket;
1113
use std::path::Path;
1214
use windows_sys::Win32::Networking::WinSock;
@@ -91,7 +93,7 @@ impl UnixStream {
9193
/// ```no_run
9294
/// use mio::sys::uds::SocketAddr;
9395
///
94-
/// let addr = SocketAddr::from_path("/tmp/socket.sock")?;
96+
/// let addr = SocketAddr::from_path("/tmp/my_socket")?;
9597
/// let stream = UnixStream::connect_addr(&addr)?;
9698
/// # Ok::<(), std::io::Error>(())
9799
/// ```
@@ -184,3 +186,13 @@ impl AsRawSocket for UnixStream {
184186
self.0 .0 as _
185187
}
186188
}
189+
impl FromRawSocket for UnixStream {
190+
unsafe fn from_raw_socket(sock: RawSocket) -> Self {
191+
UnixStream(Socket(sock as _))
192+
}
193+
}
194+
impl IntoRawSocket for UnixStream {
195+
fn into_raw_socket(self) -> RawSocket {
196+
self.0.0 as _
197+
}
198+
}

0 commit comments

Comments
 (0)