27 #ifndef _EVENT_IOCP_INTERNAL_H
28 #define _EVENT_IOCP_INTERNAL_H
35 struct event_iocp_port;
37 typedef void (*iocp_callback)(
struct event_overlapped *, ev_uintptr_t, ev_ssize_t,
int success);
52 OVERLAPPED overlapped;
58 typedef BOOL (WINAPI *AcceptExPtr)(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED);
59 typedef BOOL (WINAPI *ConnectExPtr)(SOCKET,
const struct sockaddr *, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED);
60 typedef void (WINAPI *GetAcceptExSockaddrsPtr)(PVOID, DWORD, DWORD, DWORD, LPSOCKADDR *, LPINT, LPSOCKADDR *, LPINT);
65 struct win32_extension_fns {
67 ConnectExPtr ConnectEx;
68 GetAcceptExSockaddrsPtr GetAcceptExSockaddrs;
75 struct event_iocp_port {
79 CRITICAL_SECTION lock;
92 HANDLE *shutdownSemaphore;
95 const struct win32_extension_fns *event_get_win32_extension_fns(
void);
152 void evbuffer_commit_write(
struct evbuffer *, ev_ssize_t);
158 struct event_iocp_port *event_iocp_port_launch(
int n_cpus);
163 int event_iocp_port_associate(
struct event_iocp_port *port,
evutil_socket_t fd,
172 int event_iocp_shutdown(
struct event_iocp_port *port,
long waitMsec);
175 int event_iocp_activate_overlapped(
struct event_iocp_port *port,
177 ev_uintptr_t key, ev_uint32_t n_bytes);
181 struct event_iocp_port *event_base_get_iocp(
struct event_base *base);
184 int event_base_start_iocp(
struct event_base *base,
int n_cpus);
185 void event_base_stop_iocp(
struct event_base *base);
192 void bufferevent_async_set_connected(
struct bufferevent *bev);
193 int bufferevent_async_can_connect(
struct bufferevent *bev);
195 const struct sockaddr *sa,
int socklen);
evutil_socket_t _evbuffer_overlapped_get_fd(struct evbuffer *buf)
XXXX Document (nickm)
Definition: buffer_iocp.c:307
#define evutil_socket_t
A type wide enough to hold the output of "socket()" or "accept()".
Definition: util.h:278
int evbuffer_launch_write(struct evbuffer *buf, ev_ssize_t at_most, struct event_overlapped *ol)
Start writing data from the start of an evbuffer.
Definition: buffer_iocp.c:167
Definition: evbuffer-internal.h:78
Definition: iocp-internal.h:98
void evbuffer_commit_read(struct evbuffer *evbuf, ev_ssize_t nBytes)
XXX document.
Definition: buffer_iocp.c:96
int evbuffer_launch_read(struct evbuffer *buf, size_t at_most, struct event_overlapped *ol)
Start reading data onto the end of an overlapped evbuffer.
Definition: buffer_iocp.c:241
Shared implementation of a bufferevent.
Definition: bufferevent_struct.h:70
struct evbuffer * evbuffer_overlapped_new(evutil_socket_t fd)
Allocate and return a new evbuffer that supports overlapped IO on a given socket. ...
Definition: buffer_iocp.c:148
Definition: event-internal.h:167