int main(void)
{
	struct io_listener *l;
	int fd;
	struct timers timers;
	struct timer timer, *expired;
	struct addrinfo *addrinfo;

	/* This is how many tests you plan to run */
	plan_tests(7);

	fake_time = time_now();

	timers_init(&timers, fake_time);
	timer_init(&timer);
	timer_add(&timers, &timer,
		  timeabs_add(fake_time, time_from_sec(1000)));

	fd = make_listen_fd(PORT, &addrinfo);
	freeaddrinfo(addrinfo);
	ok1(fd >= 0);
	l = io_new_listener(NULL, fd, init_conn, NULL);
	ok1(l);

	fake_time.ts.tv_sec += 1000;
	ok1(io_time_override(get_fake_time) == time_now);
	ok1(io_loop(&timers, &expired) == NULL);

	ok1(expired == &timer);
	ok1(!timers_expire(&timers, fake_time));
	ok1(io_time_override(time_now) == get_fake_time);
	io_close_listener(l);

	timers_cleanup(&timers);

	/* This exits depending on whether all tests passed */
	return exit_status();
}
示例#2
0
文件: run-ff.c 项目: chr15m/ccan
static struct timeabs timeabs_from_usec(unsigned long long usec)
{
	struct timeabs epoch = { { 0, 0 } };
	return timeabs_add(epoch, time_from_usec(usec));
}
示例#3
0
void refresh_timeout(struct state *state, struct timeout *t)
{
	timer_del(&state->timers, &t->timer);
	timer_add(&state->timers, &t->timer,
		  timeabs_add(time_now(), t->interval));
}