#include <stdio.h>
#include <unistd.h>
-#ifndef PORT
#define PORT "65015"
-#endif
struct data {
struct timers timers;
d->conn = conn;
io_set_finish(conn, finish_ok, d);
- timer_add(&d->timers, &d->timer,
- timeabs_add(time_now(), time_from_usec(d->timeout_usec)));
+ timer_addrel(&d->timers, &d->timer, time_from_usec(d->timeout_usec));
return io_read(conn, d->buf, sizeof(d->buf), no_timeout, d);
}
struct data *d = malloc(sizeof(*d));
struct addrinfo *addrinfo;
struct io_listener *l;
- struct list_head expired;
+ struct timer *expired;
int fd, status;
/* This is how many tests you plan to run */
plan_tests(21);
d->state = 0;
d->timeout_usec = 100000;
- timers_init(&d->timers, time_now());
+ timers_init(&d->timers, time_mono());
+ timer_init(&d->timer);
fd = make_listen_fd(PORT, &addrinfo);
ok1(fd >= 0);
l = io_new_listener(NULL, fd, init_conn, d);
ok1(io_loop(&d->timers, &expired) == NULL);
/* One element, d->timer. */
- ok1(list_pop(&expired, struct timer, list) == &d->timer);
- ok1(list_empty(&expired));
+ ok1(expired == &d->timer);
+ ok1(!timers_expire(&d->timers, time_mono()));
ok1(d->state == 1);
io_close(d->conn);
/* Finished will be called, d will be returned */
ok1(io_loop(&d->timers, &expired) == d);
- ok1(list_empty(&expired));
+ ok1(expired == NULL);
ok1(d->state == 2);
/* It should have died. */
}
ok1(io_loop(&d->timers, &expired) == d);
ok1(d->state == 3);
- ok1(list_empty(&expired));
+ ok1(expired == NULL);
ok1(wait(&status));
ok1(WIFEXITED(status));
ok1(WEXITSTATUS(status) >= sizeof(d->buf));