diff options
Diffstat (limited to 'ev.c')
-rw-r--r-- | ev.c | 17 |
1 files changed, 15 insertions, 2 deletions
@@ -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 |