#ifndef FR_EVENT_H
#define FR_EVENT_H
#include <freeradius-devel/ident.h>
RCSIDH(event_h, "$Id$")
#ifdef __cplusplus
extern "C" {
#endif
typedef struct fr_event_list_t fr_event_list_t;
typedef struct fr_event_t fr_event_t;
typedef void (*fr_event_callback_t)(void *);
typedef void (*fr_event_status_t)(struct timeval *);
typedef void (*fr_event_fd_handler_t)(fr_event_list_t *el, int sock, void *ctx);
fr_event_list_t *fr_event_list_create(fr_event_status_t status);
void fr_event_list_free(fr_event_list_t *el);
int fr_event_list_num_elements(fr_event_list_t *el);
int fr_event_insert(fr_event_list_t *el,
fr_event_callback_t callback,
void *ctx, struct timeval *when, fr_event_t **ev_p);
int fr_event_delete(fr_event_list_t *el, fr_event_t **ev_p);
int fr_event_run(fr_event_list_t *el, struct timeval *when);
int fr_event_now(fr_event_list_t *el, struct timeval *when);
int fr_event_fd_insert(fr_event_list_t *el, int type, int fd,
fr_event_fd_handler_t handler, void *ctx);
int fr_event_fd_delete(fr_event_list_t *el, int type, int fd);
int fr_event_loop(fr_event_list_t *el);
void fr_event_loop_exit(fr_event_list_t *el, int code);
#ifdef __cplusplus
}
#endif
#endif