Implement Sync/Send for windows TCP types
This commit is contained in:
parent
bb315f25f8
commit
f5d619caf9
|
@ -24,6 +24,9 @@ pub use sys_common::net::TcpStream;
|
||||||
|
|
||||||
pub struct Event(c::WSAEVENT);
|
pub struct Event(c::WSAEVENT);
|
||||||
|
|
||||||
|
unsafe impl Send for Event {}
|
||||||
|
unsafe impl Sync for Event {}
|
||||||
|
|
||||||
impl Event {
|
impl Event {
|
||||||
pub fn new() -> IoResult<Event> {
|
pub fn new() -> IoResult<Event> {
|
||||||
let event = unsafe { c::WSACreateEvent() };
|
let event = unsafe { c::WSACreateEvent() };
|
||||||
|
@ -49,6 +52,9 @@ impl Drop for Event {
|
||||||
|
|
||||||
pub struct TcpListener { sock: sock_t }
|
pub struct TcpListener { sock: sock_t }
|
||||||
|
|
||||||
|
unsafe impl Send for TcpListener {}
|
||||||
|
unsafe impl Sync for TcpListener {}
|
||||||
|
|
||||||
impl TcpListener {
|
impl TcpListener {
|
||||||
pub fn bind(addr: ip::SocketAddr) -> IoResult<TcpListener> {
|
pub fn bind(addr: ip::SocketAddr) -> IoResult<TcpListener> {
|
||||||
sys::init_net();
|
sys::init_net();
|
||||||
|
@ -109,6 +115,9 @@ pub struct TcpAcceptor {
|
||||||
deadline: u64,
|
deadline: u64,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsafe impl Send for TcpAcceptor {}
|
||||||
|
unsafe impl Sync for TcpAcceptor {}
|
||||||
|
|
||||||
struct AcceptorInner {
|
struct AcceptorInner {
|
||||||
listener: TcpListener,
|
listener: TcpListener,
|
||||||
abort: Event,
|
abort: Event,
|
||||||
|
@ -116,6 +125,9 @@ struct AcceptorInner {
|
||||||
closed: atomic::AtomicBool,
|
closed: atomic::AtomicBool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsafe impl Send for AcceptorInner {}
|
||||||
|
unsafe impl Sync for AcceptorInner {}
|
||||||
|
|
||||||
impl TcpAcceptor {
|
impl TcpAcceptor {
|
||||||
pub fn socket(&self) -> sock_t { self.inner.listener.socket() }
|
pub fn socket(&self) -> sock_t { self.inner.listener.socket() }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue