fr_schedule_worker_t *sw = arg;
fr_schedule_t *sc = sw->sc;
fr_schedule_child_status_t status = FR_CHILD_FAIL;
+ fr_event_list_t *el;
char buffer[32];
fr_log(sc->log, L_INFO, "Worker %d starting\n", sw->id);
- sw->worker = fr_worker_create(sw, sc->log, sc->worker_flags);
+ el = fr_event_list_alloc(sw, NULL, NULL);
+ if (!el) {
+ fr_log(sc->log, L_ERR, "Worker %d - Failed creating event list: %s",
+ sw->id, fr_strerror());
+ goto fail;
+ }
+
+ sw->worker = fr_worker_create(sw, el, sc->log, sc->worker_flags);
if (!sw->worker) {
fr_log(sc->log, L_ERR, "Worker %d - Failed creating worker: %s", sw->id, fr_strerror());
goto fail;
/** Create a worker
*
* @param[in] ctx the talloc context
+ * @param[in] el the event list
* @param[in] logger the destination for all logging messages
* @param[in] flags debug flags
* @return
* - NULL on error
* - fr_worker_t on success
*/
-fr_worker_t *fr_worker_create(TALLOC_CTX *ctx, fr_log_t *logger, uint32_t flags)
+fr_worker_t *fr_worker_create(TALLOC_CTX *ctx, fr_event_list_t *el, fr_log_t *logger, uint32_t flags)
{
int max_channels = 64;
fr_worker_t *worker;
goto nomem;
}
+ worker->el = el;
worker->log = logger;
/*
worker->message_set_size = 1024;
worker->ring_buffer_size = (1 << 16);
- worker->el = fr_event_list_alloc(worker, NULL, NULL);
- if (!worker->el) {
- fr_strerror_printf("Failed creating event list: %s", fr_strerror());
- talloc_free(worker);
- return NULL;
- }
-
if (fr_event_pre_insert(worker->el, fr_worker_pre_event, worker) < 0) {
fr_strerror_printf("Failed adding pre-check to event list");
talloc_free(worker);
*/
typedef struct fr_worker_t fr_worker_t;
-fr_worker_t *fr_worker_create(TALLOC_CTX *ctx, fr_log_t *logger, uint32_t flags);
+fr_worker_t *fr_worker_create(TALLOC_CTX *ctx, fr_event_list_t *el, fr_log_t *logger, uint32_t flags) CC_HINT(nonnull(2,3));
void fr_worker_destroy(fr_worker_t *worker) CC_HINT(nonnull);
int fr_worker_kq(fr_worker_t *worker) CC_HINT(nonnull);
fr_event_list_t *fr_worker_el(fr_worker_t *worker) CC_HINT(nonnull);
TALLOC_CTX *ctx;
fr_worker_t *worker;
fr_schedule_worker_t *sw;
+ fr_event_list_t *el;
sw = (fr_schedule_worker_t *) arg;
ctx = talloc_init("worker");
if (!ctx) _exit(1);
- worker = sw->worker = fr_worker_create(ctx, &default_log, ~0);
+ el = fr_event_list_alloc(ctx, NULL, NULL);
+ if (!el) {
+ fprintf(stderr, "radius_test: Failed to create the event list\n");
+ exit(1);
+ }
+
+ worker = sw->worker = fr_worker_create(ctx, el, &default_log, ~0);
if (!worker) {
fprintf(stderr, "radius_test: Failed to create the worker\n");
exit(1);
TALLOC_CTX *ctx;
fr_worker_t *worker;
fr_schedule_worker_t *sw;
+ fr_event_list_t *el;
sw = (fr_schedule_worker_t *) arg;
ctx = talloc_init("worker");
if (!ctx) _exit(1);
- worker = sw->worker = fr_worker_create(ctx, &default_log, ~0);
+ el = fr_event_list_alloc(ctx, NULL, NULL);
+ if (!el) {
+ fprintf(stderr, "worker_test: Failed to create the event list\n");
+ exit(1);
+ }
+
+ worker = sw->worker = fr_worker_create(ctx, el, &default_log, ~0);
if (!worker) {
fprintf(stderr, "worker_test: Failed to create the worker\n");
exit(1);