aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/net.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2004-05-07 07:51:31 +0000
committerCorinna Vinschen <corinna@vinschen.de>2004-05-07 07:51:31 +0000
commit3e101fb2cd57d46020748deb607c99fd6e5be3bf (patch)
tree81e2da440cf03b3eea979e291aac5b305dda9253 /winsup/cygwin/net.cc
parentdab22ff6e640d81b5b0b0b2e075069c8bf092b31 (diff)
downloadnewlib-3e101fb2cd57d46020748deb607c99fd6e5be3bf.zip
newlib-3e101fb2cd57d46020748deb607c99fd6e5be3bf.tar.gz
newlib-3e101fb2cd57d46020748deb607c99fd6e5be3bf.tar.bz2
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.cc56
1 files changed, 0 insertions, 56 deletions
diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc
index 3de2c0a..58c3a9f 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 *