mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-08 20:07:56 -04:00
It seems support for GetCompletionEventEx is not in my mingw. Use the simpler interface instead, for now.
svn:r1175
This commit is contained in:
parent
93d4f884aa
commit
09c23b6a56
20
event_iocp.c
20
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user