|
|
|
@ -36,22 +36,14 @@ |
|
|
|
|
#include <string.h> |
|
|
|
|
#include <errno.h> |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
port_modify (EV_P_ int fd, int oev, int nev) |
|
|
|
|
void inline_speed |
|
|
|
|
port_associate_and_check (EV_P_ int fd, int ev) |
|
|
|
|
{ |
|
|
|
|
/* we need to reassociate no matter what, as closes are
|
|
|
|
|
* once more silently being discarded. |
|
|
|
|
*/ |
|
|
|
|
if (!nev) |
|
|
|
|
{ |
|
|
|
|
if (oev) |
|
|
|
|
port_dissociate (backend_fd, PORT_SOURCE_FD, fd); |
|
|
|
|
} |
|
|
|
|
else if (0 > |
|
|
|
|
if (0 > |
|
|
|
|
port_associate ( |
|
|
|
|
backend_fd, PORT_SOURCE_FD, fd, |
|
|
|
|
(nev & EV_READ ? POLLIN : 0) |
|
|
|
|
| (nev & EV_WRITE ? POLLOUT : 0), |
|
|
|
|
(ev & EV_READ ? POLLIN : 0) |
|
|
|
|
| (ev & EV_WRITE ? POLLOUT : 0), |
|
|
|
|
0 |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
@ -60,7 +52,22 @@ port_modify (EV_P_ int fd, int oev, int nev) |
|
|
|
|
fd_kill (EV_A_ fd); |
|
|
|
|
else |
|
|
|
|
syserr ("(libev) port_associate"); |
|
|
|
|
}
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
port_modify (EV_P_ int fd, int oev, int nev) |
|
|
|
|
{ |
|
|
|
|
/* we need to reassociate no matter what, as closes are
|
|
|
|
|
* once more silently being discarded. |
|
|
|
|
*/ |
|
|
|
|
if (!nev) |
|
|
|
|
{ |
|
|
|
|
if (oev) |
|
|
|
|
port_dissociate (backend_fd, PORT_SOURCE_FD, fd); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
port_associate_and_check (EV_A_ fd, nev); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
@ -95,8 +102,7 @@ port_poll (EV_P_ ev_tstamp timeout) |
|
|
|
|
| (port_events [i].portev_events & (POLLIN | POLLERR | POLLHUP) ? EV_READ : 0) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
anfds [fd].events = 0; /* event received == disassociated */ |
|
|
|
|
fd_change (EV_A_ fd); /* need to reify later */ |
|
|
|
|
port_associate_and_check (EV_A_ fd, anfds [fd].events); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|