#include "waiter.h"
struct waiter {
+ struct waitset *set;
enum {
WAITER_IO,
WAITER_TIME,
- } type;
- struct waitset *set;
- int fd;
- int events;
- struct timeval timeout;
+ } type;
+ union {
+ struct {
+ int fd;
+ int events;
+ } io;
+ struct timeval timeout;
+ };
waiter_cb callback;
void *arg;
waiter->type = WAITER_IO;
waiter->set = set;
- waiter->fd = fd;
- waiter->events = events;
+ waiter->io.fd = fd;
+ waiter->io.events = events;
waiter->callback = callback;
waiter->arg = arg;
if (waiter->type != WAITER_IO)
continue;
- set->pollfds[i_io].fd = waiter->fd;
- set->pollfds[i_io].events = waiter->events;
+ set->pollfds[i_io].fd = waiter->io.fd;
+ set->pollfds[i_io].events = waiter->io.events;
set->io_waiters[i_io] = waiter;
i_io++;
}