コード例 #1
0
ファイル: mk_event.c プロジェクト: iamaeternus/monkey
/* 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;
}
コード例 #2
0
ファイル: mk_event.c プロジェクト: Denisss025/monkey
/* 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;
}
コード例 #3
0
ファイル: mk_event.c プロジェクト: ianjohnson/monkey
/* 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;
}
コード例 #4
0
ファイル: mk_event_select.c プロジェクト: monkey/monkey
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;
}