/* Remove an event */ int mk_event_del(struct mk_event_loop *loop, int fd) { int ret; struct mk_event_ctx *ctx; ctx = loop->data; ret = _mk_event_del(ctx, fd); if (ret == -1) { return -1; } return 0; }
/* Remove an event */ int mk_event_del(mk_event_loop_t *loop, int fd) { int ret; mk_event_ctx_t *ctx; struct mk_event_fd_state *fds; ctx = loop->data; ret = _mk_event_del(ctx, fd); if (ret == -1) { return -1; } fds = mk_event_get_state(fd); fds->mask = MK_EVENT_EMPTY; fds->data = NULL; return 0; }
/* Remove an event */ int mk_event_del(struct mk_event_loop *loop, struct mk_event *event) { int ret; struct mk_event_ctx *ctx; ctx = loop->data; /* just remove a registered event */ if ((event->status & MK_EVENT_REGISTERED) == 0) { return -1; } ret = _mk_event_del(ctx, event); if (ret == -1) { return -1; } event->status = MK_EVENT_NONE; return 0; }
static inline int _mk_event_timeout_destroy(struct mk_event_ctx *ctx, void *data) { int fd; struct mk_event *event; struct fd_timer *timer; event = (struct mk_event *) data; fd = event->fd; _mk_event_del(ctx, event); timer = event->data; timer->run = MK_FALSE; /* Wait for the background worker to finish */ pthread_join(timer->tid, NULL); /* Cleanup */ close(timer->fd); close(fd); mk_mem_free(timer); return 0; }