diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2004-05-07 07:51:31 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2004-05-07 07:51:31 +0000 |
commit | 3e101fb2cd57d46020748deb607c99fd6e5be3bf (patch) | |
tree | 81e2da440cf03b3eea979e291aac5b305dda9253 /winsup/cygwin/net.cc | |
parent | dab22ff6e640d81b5b0b0b2e075069c8bf092b31 (diff) | |
download | cygnal-3e101fb2cd57d46020748deb607c99fd6e5be3bf.tar.gz cygnal-3e101fb2cd57d46020748deb607c99fd6e5be3bf.tar.bz2 cygnal-3e101fb2cd57d46020748deb607c99fd6e5be3bf.zip |
Revert code reversion from 2004-04-03. So, revert to async I/O again.
* fhandler.h (status): Add "closed" flag.
(prepare): New method declaration.
(wait): Ditto.
(release): Ditto.
* fhandler_socket.cc: Don't include wsock_event.h.
(fhandler_socket::prepare): New method, moved from wsock_event.
(fhandler_socket::wait): Ditto.
(fhandler_socket::release): New method.
(fhandler_socket::recvfrom): Simplify loop.
(fhandler_socket::recvmsg): Ditto.
(fhandler_socket::sendto): Ditto.
(fhandler_socket::sendmsg): Ditto.
* net.cc: Don't include wsock_event.h.
(wsock_event::prepare): Remove.
(wsock_event::wait): Ditto.
* wsock_event.h: Remove.
Diffstat (limited to 'winsup/cygwin/net.cc')
-rw-r--r-- | winsup/cygwin/net.cc | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc index 3de2c0adc..58c3a9fab 100644 --- a/winsup/cygwin/net.cc +++ b/winsup/cygwin/net.cc @@ -35,7 +35,6 @@ details. */ #include "sigproc.h" #include "pinfo.h" #include "registry.h" -#include "wsock_event.h" #include "cygtls.h" extern "C" @@ -50,61 +49,6 @@ extern "C" int sscanf (const char *, const char *, ...); } /* End of "C" section */ -LPWSAOVERLAPPED -wsock_event::prepare () -{ - LPWSAOVERLAPPED ret = NULL; - - SetLastError (0); - if ((event = WSACreateEvent ()) != WSA_INVALID_EVENT) - { - memset (&ovr, 0, sizeof ovr); - ovr.hEvent = event; - ret = &ovr; - } - else if (GetLastError () == ERROR_PROC_NOT_FOUND) /* winsock2 not available */ - WSASetLastError (0); - - debug_printf ("%d = wsock_event::prepare ()", ret); - return ret; -} - -int -wsock_event::wait (int socket, LPDWORD flags) -{ - int ret = SOCKET_ERROR; - WSAEVENT ev[2] = { event, signal_arrived }; - DWORD len; - - switch (WSAWaitForMultipleEvents (2, ev, FALSE, WSA_INFINITE, FALSE)) - { - case WSA_WAIT_EVENT_0: - if (WSAGetOverlappedResult (socket, &ovr, &len, FALSE, flags)) - ret = (int) len; - break; - case WSA_WAIT_EVENT_0 + 1: - if (!CancelIo ((HANDLE) socket)) - { - debug_printf ("CancelIo() %E, fallback to blocking io"); - WSAGetOverlappedResult (socket, &ovr, &len, TRUE, flags); - } - else if (WSAGetOverlappedResult (socket, &ovr, &len, FALSE, flags) - && len > 0) - ret = (int) len; - else - WSASetLastError (WSAEINTR); - break; - case WSA_WAIT_FAILED: - break; - default: /* Should be impossible. *LOL* */ - WSASetLastError (WSAEFAULT); - break; - } - WSACloseEvent (event); - event = NULL; - return ret; -} - WSADATA wsadata; static fhandler_socket * |