mirror of
https://github.com/vale981/ray
synced 2025-03-12 14:16:39 -04:00

* Ion and Philipp's table retries * Refactor the retry struct: - Rename it from retry_struct to retry_info - Retry information contains the failure callback, not the retry callback - All functions take in retry information as an arg instead of its expanded fields * Rename cb -> callback * Remove prints * Fix compiler warnings * Change some CHECKs to greatest ASSERTs * Key outstanding callbacks hash table with timer ID instead of callback data pointer * Use the new retry API for table commands * Memory cleanup in plasma unit tests * fix Robert's comments * add valgrind for common
61 lines
1.7 KiB
C
61 lines
1.7 KiB
C
#include "event_loop.h"
|
|
|
|
#include "common.h"
|
|
#include <errno.h>
|
|
|
|
#define INITIAL_EVENT_LOOP_SIZE 1024
|
|
|
|
event_loop *event_loop_create(void) {
|
|
return aeCreateEventLoop(INITIAL_EVENT_LOOP_SIZE);
|
|
}
|
|
|
|
void event_loop_destroy(event_loop *loop) {
|
|
/* Clean up timer events. This is to make valgrind happy. */
|
|
aeTimeEvent *te = loop->timeEventHead;
|
|
while (te) {
|
|
aeTimeEvent *next = te->next;
|
|
free(te);
|
|
te = next;
|
|
}
|
|
aeDeleteEventLoop(loop);
|
|
}
|
|
|
|
void event_loop_add_file(event_loop *loop,
|
|
int fd,
|
|
int events,
|
|
event_loop_file_handler handler,
|
|
void *context) {
|
|
/* Try to add the file descriptor. */
|
|
int err = aeCreateFileEvent(loop, fd, events, handler, context);
|
|
/* If it cannot be added, increase the size of the event loop. */
|
|
if (err == AE_ERR && errno == ERANGE) {
|
|
err = aeResizeSetSize(loop, 3 * aeGetSetSize(loop) / 2);
|
|
CHECK(err == AE_OK);
|
|
err = aeCreateFileEvent(loop, fd, events, handler, context);
|
|
}
|
|
/* In any case, test if there were errors. */
|
|
CHECK(err == AE_OK);
|
|
}
|
|
|
|
void event_loop_remove_file(event_loop *loop, int fd) {
|
|
aeDeleteFileEvent(loop, fd, EVENT_LOOP_READ | EVENT_LOOP_WRITE);
|
|
}
|
|
|
|
int64_t event_loop_add_timer(event_loop *loop,
|
|
int64_t timeout,
|
|
event_loop_timer_handler handler,
|
|
void *context) {
|
|
return aeCreateTimeEvent(loop, timeout, handler, context, NULL);
|
|
}
|
|
|
|
int event_loop_remove_timer(event_loop *loop, int64_t id) {
|
|
return aeDeleteTimeEvent(loop, id);
|
|
}
|
|
|
|
void event_loop_run(event_loop *loop) {
|
|
aeMain(loop);
|
|
}
|
|
|
|
void event_loop_stop(event_loop *loop) {
|
|
aeStop(loop);
|
|
}
|