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(TALLOC_CTX *ctx, fr_event_status_t status);
+fr_event_list_t *fr_event_list_init(TALLOC_CTX *ctx, fr_event_status_t status);
int fr_event_list_num_fds(fr_event_list_t *el);
int fr_event_list_num_elements(fr_event_list_t *el);
return 0;
}
+static int fr_event_fd_cmp(void const *a, void const *b)
+{
+ fr_event_fd_t const *efd_a = a;
+ fr_event_fd_t const *efd_b = b;
+
+ if (efd_a->fd > efd_b->fd) return +1;
+ if (efd_a->fd < efd_b->fd) return -1;
+
+ return 0;
+}
static int _event_list_free(fr_event_list_t *list)
{
}
-fr_event_list_t *fr_event_list_create(TALLOC_CTX *ctx, fr_event_status_t status)
+fr_event_list_t *fr_event_list_init(TALLOC_CTX *ctx, fr_event_status_t status)
{
int i;
fr_event_list_t *el;
struct timeval now, when;
fr_event_list_t *el;
- el = fr_event_list_create(NULL, NULL);
+ el = fr_event_list_init(NULL, NULL);
if (!el) exit(1);
memset(&rand_pool, 0, sizeof(rand_pool));
* Externally-visibly functions.
*/
int radius_event_init(TALLOC_CTX *ctx) {
- el = fr_event_list_create(ctx, event_status);
+ el = fr_event_list_init(ctx, event_status);
if (!el) return 0;
#ifdef HAVE_SYSTEMD_WATCHDOG
char *buff;
- events = fr_event_list_create(conf, _rs_event_status);
+ events = fr_event_list_init(conf, _rs_event_status);
if (!events) {
ERROR();
goto finish;
ctx = talloc_init("thread_pool");
- el = fr_event_list_create(ctx, NULL);
+ el = fr_event_list_init(ctx, NULL);
rad_assert(el != NULL);
local_backlog = fr_heap_create(timestamp_cmp, offsetof(REQUEST, heap_id));
return 0;
}
- session->el = fr_event_list_create(session, NULL);
+ session->el = fr_event_list_init(session, NULL);
if (!session->el) {
ERROR("Failed creating event list");
close_pipes: