* They are used to implement both (possibly expiring) idle timers and
* 'one-shot' timers.
*
- *\li 'limited' timers generate a periodic tick event until they reach
- * their lifetime when they generate a life timeout event.
- *
*\li 'inactive' timers generate no events.
*
* Timers can change type. It is typical to create a timer as
isc_timertype_undefined = -1, /*%< Undefined */
isc_timertype_ticker = 0, /*%< Ticker */
isc_timertype_once = 1, /*%< Once */
- isc_timertype_limited = 2, /*%< Limited */
isc_timertype_inactive = 3 /*%< Inactive */
} isc_timertype_t;
if (result != ISC_R_SUCCESS) {
return (result);
}
- if (timer->type == isc_timertype_limited &&
- isc_time_compare(&timer->expires, &due) < 0)
- {
- due = timer->expires;
- }
} else {
if (isc_time_isepoch(&timer->idle)) {
due = timer->expires;
REQUIRE(type == isc_timertype_inactive ||
!(isc_time_isepoch(expires) && isc_interval_iszero(interval)));
REQUIRE(timerp != NULL && *timerp == NULL);
- REQUIRE(type != isc_timertype_limited ||
- !(isc_time_isepoch(expires) || isc_interval_iszero(interval)));
/*
* Get current time.
}
REQUIRE(type == isc_timertype_inactive ||
!(isc_time_isepoch(expires) && isc_interval_iszero(interval)));
- REQUIRE(type != isc_timertype_limited ||
- !(isc_time_isepoch(expires) || isc_interval_iszero(interval)));
/*
* Get current time.
type = ISC_TIMEREVENT_TICK;
post_event = true;
need_schedule = true;
- } else if (timer->type == isc_timertype_limited) {
- int cmp;
- cmp = isc_time_compare(now, &timer->expires);
- if (cmp >= 0) {
- type = ISC_TIMEREVENT_LIFE;
- post_event = true;
- need_schedule = false;
- } else {
- type = ISC_TIMEREVENT_TICK;
- post_event = true;
- need_schedule = true;
- }
} else if (!isc_time_isepoch(&timer->expires) &&
isc_time_compare(now, &timer->expires) >= 0)
{