From: Nick Mathewson Date: Thu, 16 Apr 2009 00:27:32 +0000 (+0000) Subject: It seems support for GetCompletionEventEx is not in my mingw. Use the simpler interf... X-Git-Tag: release-2.0.1-alpha~16 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=09c23b6a5679b1a4a871bdd3143e615209aac05d;p=libevent It seems support for GetCompletionEventEx is not in my mingw. Use the simpler interface instead, for now. svn:r1175 --- diff --git a/event_iocp.c b/event_iocp.c index 8df1dd5d..6e2db448 100644 --- a/event_iocp.c +++ b/event_iocp.c @@ -7,8 +7,6 @@ #include "util-internal.h" #include "iocp-internal.h" -#define N_OVERLAPPED_ENTRIES 32 - void event_overlapped_init(struct event_overlapped *o, iocp_callback cb) { @@ -17,30 +15,28 @@ event_overlapped_init(struct event_overlapped *o, iocp_callback cb) } static void -handle_entry(OVERLAPPED_ENTRY *ent) +handle_entry(OVERLAPPED *o, ULONG_PTR completion_key, DWORD nBytes) { OVERLAPPED *o = ent->lpOverlapped; struct event_overlapped *eo = EVUTIL_UPCAST(o, struct event_overlapped, overlapped); eo = upcast(o, struct event_overlapped, overlapped); - eo->cb(eo, ent->lpCompletionKey, ent->dwNumberOfBytesTransferred); + eo->cb(eo, completion_key, nBytes); } static void loop(struct event_iocp_port *port, long ms) { - OVERLAPPED_ENTRY entries[N_OVERLAPPED_ENTRIES]; - ULONG n_entries; - int i; + OVERLAPPED *overlapped; + ULONG_PTR key; + DWORD bytes; if (ms <= 0) ms = INFINITE; - while (GetQueuedCompletionStatusEx(port->port, - entries, N_OVERLAPPED_ENTRIES, &n_entries, ms, 1)) { - for (i = 0; i < n_entries; ++i) { - handle_entry(&entries[i]); - } + while(GetQueuedCompletionStatus(port->port, &nBytes, &key, + &overlapped, ms)) { + handle_entry(overlapped, key, bytes); } }