The FreeRADIUS server $Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Functions
timer.h File Reference
#include <freeradius-devel/util/time.h>
#include <freeradius-devel/util/talloc.h>
+ Include dependency graph for timer.h:

Go to the source code of this file.

Data Structures

struct  fr_timer_list_pub_s
 Public event timer list structure. More...
 

Macros

#define _CONST   const
 
#define fr_timer_at(...)   _fr_timer_at(NDEBUG_LOCATION_EXP __VA_ARGS__)
 
#define fr_timer_in(...)   _fr_timer_in(NDEBUG_LOCATION_EXP __VA_ARGS__)
 

Typedefs

typedef fr_time_t(* fr_event_time_source_t) (void)
 Alternative time source, useful for testing.
 
typedef void(* fr_timer_cb_t) (fr_timer_list_t *tl, fr_time_t now, void *uctx)
 Called when a timer event fires.
 
typedef struct fr_timer_list_pub_s fr_timer_list_t
 
typedef struct fr_timer_s fr_timer_t
 An opaque timer handle.
 

Functions

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)
 
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)
 
bool fr_timer_armed (fr_timer_t *ev)
 Check if a timer event is armed.
 
int fr_timer_delete (fr_timer_t **ev_p)
 Delete a timer event and free its memory.
 
int fr_timer_disarm (fr_timer_t *ev)
 Remove an event from the event list, but don't free the memory.
 
int fr_timer_list_disarm (fr_timer_list_t *tl)
 Disable all timers in a list.
 
fr_timer_list_tfr_timer_list_lst_alloc (TALLOC_CTX *ctx, fr_timer_list_t *parent)
 Allocate a new lst based timer list.
 
uint64_t fr_timer_list_num_events (fr_timer_list_t *tl)
 Return number of pending events.
 
fr_timer_list_tfr_timer_list_ordered_alloc (TALLOC_CTX *ctx, fr_timer_list_t *parent)
 Allocate a new sorted event timer list.
 
int fr_timer_list_run (fr_timer_list_t *tl, fr_time_t *when)
 Execute any pending events in the event loop.
 
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_timer_list_when (fr_timer_list_t *tl)
 Return the time of the next event.
 
fr_time_t fr_timer_when (fr_timer_t *ev)
 Internal timestamp representing when the timer should fire.
 
int NDEBUG_LOCATION_NONNULL (3)
 
int NDEBUG_LOCATION_NONNULL (6)))
 

Data Structure Documentation

◆ fr_timer_list_pub_s

struct fr_timer_list_pub_s

Public event timer list structure.

Make the current list time, and time source available, but nothing else.

This allows us to access these values without the cost of a function call.

Definition at line 59 of file timer.h.

Data Fields
fr_event_time_source_t _CONST time Time source this list uses to get the current time when calculating deltas (fr_timer_in).

Macro Definition Documentation

◆ _CONST

#define _CONST   const

Definition at line 42 of file timer.h.

◆ fr_timer_at

#define fr_timer_at (   ...)    _fr_timer_at(NDEBUG_LOCATION_EXP __VA_ARGS__)

Definition at line 80 of file timer.h.

◆ fr_timer_in

#define fr_timer_in (   ...)    _fr_timer_in(NDEBUG_LOCATION_EXP __VA_ARGS__)

Definition at line 86 of file timer.h.

Typedef Documentation

◆ fr_event_time_source_t

typedef fr_time_t(* fr_event_time_source_t) (void)

Alternative time source, useful for testing.

Returns
the current time in nanoseconds past the epoch.

Definition at line 51 of file timer.h.

◆ fr_timer_cb_t

typedef void(* fr_timer_cb_t) (fr_timer_list_t *tl, fr_time_t now, void *uctx)

Called when a timer event fires.

Parameters
[in]tltimer list event was inserted into.
[in]nowThe current time.
[in]uctxUser ctx passed to fr_timer_in or fr_timer_at.

Definition at line 74 of file timer.h.

◆ fr_timer_list_t

Definition at line 41 of file timer.h.

◆ fr_timer_t

typedef struct fr_timer_s fr_timer_t

An opaque timer handle.

Definition at line 66 of file timer.h.

Function Documentation

◆ _fr_timer_at()

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_timer_in()

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 
)

◆ fr_timer_armed()

bool fr_timer_armed ( fr_timer_t ev)

Check if a timer event is armed.

Parameters
[in]evto check.
Returns
  • true if the event is armed.
  • false if the event is not armed.

Definition at line 682 of file timer.c.

◆ fr_timer_delete()

int fr_timer_delete ( fr_timer_t **  ev_p)

Delete a timer event and free its memory.

Parameters
[in]ev_pof the event being deleted.
Returns
  • 0 on success.
  • -1 on failure.

Definition at line 643 of file timer.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fr_timer_disarm()

int fr_timer_disarm ( fr_timer_t ev)

Remove an event from the event list, but don't free the memory.

Parameters
[in]evto remove from the event list.

Definition at line 606 of file timer.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fr_timer_list_disarm()

int fr_timer_list_disarm ( fr_timer_list_t tl)

Disable all timers in a list.

Definition at line 946 of file timer.c.

+ Here is the call graph for this function:

◆ fr_timer_list_lst_alloc()

fr_timer_list_t * fr_timer_list_lst_alloc ( TALLOC_CTX *  ctx,
fr_timer_list_t parent 
)

Allocate a new lst based timer list.

Parameters
[in]ctxto insert head timer event into.
[in]parentto insert the head timer event into.

Definition at line 1050 of file timer.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fr_timer_list_num_events()

uint64_t fr_timer_list_num_events ( fr_timer_list_t tl)

Return number of pending events.

Note
This includes deferred events, i.e. those yet to be inserted into the main list
Parameters
[in]tlto get the number of events from.
Returns
  • The number of events in the list.

Definition at line 965 of file timer.c.

+ Here is the caller graph for this function:

◆ fr_timer_list_ordered_alloc()

fr_timer_list_t * fr_timer_list_ordered_alloc ( TALLOC_CTX *  ctx,
fr_timer_list_t parent 
)

Allocate a new sorted event timer list.

Parameters
[in]ctxto allocate the event timer list from.
[in]parentto insert the head timer event into.

Definition at line 1076 of file timer.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fr_timer_list_run()

int fr_timer_list_run ( fr_timer_list_t tl,
fr_time_t when 
)

Execute any pending events in the event loop.

Parameters
[in]tlto execute events in.
[in]whenProcess events scheduled to run before or at this time.
  • Set to 0 if no more events.
  • Set to the next event time if there are more events.
Returns
  • < 0 if we failed to updated the parent list.
  • 0 no timer events fired.
  • >0 number of timer event fired.

Definition at line 815 of file timer.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fr_timer_list_set_time_func()

void fr_timer_list_set_time_func ( fr_timer_list_t tl,
fr_event_time_source_t  func 
)

Override event list time source.

Parameters
[in]tlto set new time function for.
[in]functo set.

Definition at line 993 of file timer.c.

+ Here is the caller graph for this function:

◆ fr_timer_list_when()

fr_time_t fr_timer_list_when ( fr_timer_list_t tl)

Return the time of the next event.

Parameters
[in]tlto get the next event time from.
Returns
  • >0 the time of the next event.
  • 0 if there are no more events.

Definition at line 979 of file timer.c.

+ Here is the caller graph for this function:

◆ fr_timer_when()

fr_time_t fr_timer_when ( fr_timer_t ev)

Internal timestamp representing when the timer should fire.

Returns
When the timestamp should fire.

Definition at line 670 of file timer.c.

+ Here is the caller graph for this function:

◆ NDEBUG_LOCATION_NONNULL() [1/2]

int NDEBUG_LOCATION_NONNULL ( )

◆ NDEBUG_LOCATION_NONNULL() [2/2]

int NDEBUG_LOCATION_NONNULL ( )