summaryrefslogtreecommitdiff
path: root/ev.c
diff options
context:
space:
mode:
Diffstat (limited to 'ev.c')
-rw-r--r--ev.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/ev.c b/ev.c
index c4cdba8..57c7dc3 100644
--- a/ev.c
+++ b/ev.c
@@ -670,9 +670,12 @@ typedef struct
#if EV_USE_EPOLL
unsigned int egen; /* generation counter to counter epoll bugs */
#endif
-#if EV_SELECT_IS_WINSOCKET
+#if EV_SELECT_IS_WINSOCKET || EV_USE_IOCP
SOCKET handle;
#endif
+#if EV_USE_IOCP
+ OVERLAPPED or, ow;
+#endif
} ANFD;
/* stores the pending event set for a given watcher */
@@ -977,12 +980,13 @@ fd_reify (EV_P)
anfd->reify = 0;
-#if EV_SELECT_IS_WINSOCKET
+#if EV_SELECT_IS_WINSOCKET || EV_USE_IOCP
if (o_reify & EV__IOFDSET)
{
unsigned long arg;
anfd->handle = EV_FD_TO_WIN32_HANDLE (fd);
assert (("libev: only socket fds supported in this configuration", ioctlsocket (anfd->handle, FIONREAD, &arg) == 0));
+ printf ("oi %d %x\n", fd, anfd->handle);//D
}
#endif
@@ -1491,6 +1495,9 @@ childcb (EV_P_ ev_signal *sw, int revents)
/*****************************************************************************/
+#if EV_USE_IOCP
+# include "ev_iocp.c"
+#endif
#if EV_USE_PORT
# include "ev_port.c"
#endif
@@ -1697,6 +1704,9 @@ loop_init (EV_P_ unsigned int flags)
if (!(flags & 0x0000ffffU))
flags |= ev_recommended_backends ();
+#if EV_USE_IOCP
+ if (!backend && (flags & EVBACKEND_IOCP )) backend = iocp_init (EV_A_ flags);
+#endif
#if EV_USE_PORT
if (!backend && (flags & EVBACKEND_PORT )) backend = port_init (EV_A_ flags);
#endif
@@ -1758,6 +1768,9 @@ loop_destroy (EV_P)
if (backend_fd >= 0)
close (backend_fd);
+#if EV_USE_IOCP
+ if (backend == EVBACKEND_IOCP ) iocp_destroy (EV_A);
+#endif
#if EV_USE_PORT
if (backend == EVBACKEND_PORT ) port_destroy (EV_A);
#endif