Make Unix and Windows impls consistent

There are some explicit Send/Sync implementations for Window's types
that don't exist in Unix. While the end result will be the same, I
believe it's clearer if we keep the explicit implementations consistent
by making the os-specific types Send/Sync where needed and possible.

This commit addresses pipe

src/libstd/sys/unix/pipe.rs
unsafe impl Send for UnixListener {}
unsafe impl Sync for UnixListener {}

src/libstd/sys/windows/pipe.rs
unsafe impl Send for UnixStream {}
unsafe impl Sync for UnixStream {}
unsafe impl Send for UnixListener {}
unsafe impl Sync for UnixListener {}
unsafe impl Send for UnixAcceptor {}
unsafe impl Sync for UnixAcceptor {}
unsafe impl Send for AcceptorState {}
unsafe impl Sync for AcceptorState {}
This commit is contained in:
Flavio Percoco 2015-01-25 23:54:09 +01:00
parent c80e556e15
commit fff5600925
1 changed files with 6 additions and 9 deletions

View File

@ -129,6 +129,9 @@ impl Drop for Event {
}
}
unsafe impl Send for Event {}
unsafe impl Sync for Event {}
struct Inner {
handle: libc::HANDLE,
lock: Mutex<()>,
@ -156,6 +159,9 @@ impl Drop for Inner {
}
}
unsafe impl Send for Inner {}
unsafe impl Sync for Inner {}
unsafe fn pipe(name: *const u16, init: bool) -> libc::HANDLE {
libc::CreateNamedPipeW(
name,
@ -220,9 +226,6 @@ pub struct UnixStream {
write_deadline: u64,
}
unsafe impl Send for UnixStream {}
unsafe impl Sync for UnixStream {}
impl UnixStream {
fn try_connect(p: *const u16) -> Option<libc::HANDLE> {
// Note that most of this is lifted from the libuv implementation.
@ -615,17 +618,11 @@ pub struct UnixAcceptor {
deadline: u64,
}
unsafe impl Send for UnixAcceptor {}
unsafe impl Sync for UnixAcceptor {}
struct AcceptorState {
abort: Event,
closed: AtomicBool,
}
unsafe impl Send for AcceptorState {}
unsafe impl Sync for AcceptorState {}
impl UnixAcceptor {
pub fn accept(&mut self) -> IoResult<UnixStream> {
// This function has some funky implementation details when working with