25RCSIDH(timer_h,
"$Id: 824b23f32520f30d206882bed0340070041120ec $")
31#include <freeradius-devel/util/time.h>
32#include <freeradius-devel/util/talloc.h>
38# error _CONST can only be defined in the local header
80#define fr_timer_at(...) _fr_timer_at(NDEBUG_LOCATION_EXP __VA_ARGS__)
86#define fr_timer_in(...) _fr_timer_in(NDEBUG_LOCATION_EXP __VA_ARGS__)
110#ifdef WITH_EVENT_DEBUG
#define NDEBUG_LOCATION_ARGS
Pass caller information to the function.
#define NDEBUG_LOCATION_NONNULL(_num)
struct fr_time_s fr_time_t
"server local" time.
A time delta, a difference in time measured in nanoseconds.
void const * uctx
Context pointer to pass to the callback.
fr_timer_cb_t callback
Callback to execute when the timer fires.
fr_time_t when
When this timer should fire.
bool free_on_fire
Whether to free the event when it fires.
fr_timer_list_t * tl
The event list this timer is part of.
int fr_timer_list_run(fr_timer_list_t *tl, fr_time_t *when)
Execute any pending events in the event loop.
int _fr_timer_in(NDEBUG_LOCATION_ARGS TALLOC_CTX *ctx, fr_timer_list_t *tl, fr_timer_t **ev, fr_time_delta_t delta, bool free_on_fire, fr_timer_cb_t callback, void const *uctx)
int fr_timer_list_disarm(fr_timer_list_t *tl)
Disable all timers in a list.
fr_time_t fr_timer_when(fr_timer_t *ev)
Internal timestamp representing when the timer should fire.
uint64_t fr_timer_list_num_events(fr_timer_list_t *tl)
Return number of pending events.
int _fr_timer_at(NDEBUG_LOCATION_ARGS TALLOC_CTX *ctx, fr_timer_list_t *tl, fr_timer_t **ev, fr_time_t when, bool free_on_fire, fr_timer_cb_t callback, void const *uctx)
fr_time_t fr_timer_list_when(fr_timer_list_t *tl)
Return the time of the next event.
fr_timer_list_t * fr_timer_list_ordered_alloc(TALLOC_CTX *ctx, fr_timer_list_t *parent)
Allocate a new sorted event timer list.
fr_timer_list_t * fr_timer_list_lst_alloc(TALLOC_CTX *ctx, fr_timer_list_t *parent)
Allocate a new lst based timer list.
int fr_timer_disarm(fr_timer_t *ev)
Remove an event from the event list, but don't free the memory.
void fr_timer_list_set_time_func(fr_timer_list_t *tl, fr_event_time_source_t func)
Override event list time source.
fr_time_t(* fr_event_time_source_t)(void)
Alternative time source, useful for testing.
void(* fr_timer_cb_t)(fr_timer_list_t *tl, fr_time_t now, void *uctx)
Called when a timer event fires.
int fr_timer_delete(fr_timer_t **ev_p)
Delete a timer event and free its memory.
bool fr_timer_armed(fr_timer_t *ev)
Check if a timer event is armed.
fr_event_time_source_t _CONST time
Time source this list uses to get the current time when calculating deltas (fr_timer_in).
Public event timer list structure.