static int
update_event(lcb_io_opt_t io,
             lcb_socket_t sock,
             void *event,
             short flags,
             void *data,
             pycbc_lcb_cb_t handler)
{
    pycbc_IOEvent *ev = (pycbc_IOEvent*)event;
    pycbc_evaction_t action;
    pycbc_evstate_t new_state;

    if (!flags) {
        action = PYCBC_EVACTION_UNWATCH;
        new_state = PYCBC_EVSTATE_SUSPENDED;

    } else {
        action = PYCBC_EVACTION_WATCH;
        new_state = PYCBC_EVSTATE_ACTIVE;
    }

    ev->cb.handler = handler;
    ev->cb.data = data;

    if (ev->flags == flags && new_state == ev->state && ev->fd == sock) {
        return 0;
    }

    return modify_event_python((pycbc_iops_t*)io,
                               (pycbc_Event*)ev,
                               action,
                               sock,
                               &flags);
}
Example #2
0
static void
delete_timer(lcb_io_opt_t io, void *timer)
{
    lcb_U32 dummy = 0;
    pycbc_IOPSWrapper *pio = PYCBC_IOW_FROM_IOPS(io);
    modify_event_python(pio, (pycbc_Event*)timer, PYCBC_EVACTION_UNWATCH, -1,
                        &dummy);
}
Example #3
0
static void
delete_event(lcb_io_opt_t io, lcb_socket_t sock, void *event)
{
    pycbc_Event *ev = (pycbc_Event*)event;
    pycbc_IOPSWrapper *pio = PYCBC_IOW_FROM_IOPS(io);
    short tmp = 0;

    modify_event_python(pio, ev, PYCBC_EVACTION_UNWATCH, sock, &tmp);
}
static void
delete_timer(lcb_io_opt_t io, void *timer)
{
    lcb_uint32_t dummy = 0;
    modify_event_python((pycbc_iops_t*)io,
                        (pycbc_Event*)timer,
                        PYCBC_EVACTION_UNWATCH,
                        -1,
                        &dummy);
}
static void
delete_event(lcb_io_opt_t io, lcb_socket_t sock, void *event)
{
    pycbc_IOEvent *ev = (pycbc_IOEvent*)event;

    modify_event_python((pycbc_iops_t*) io,
                        (pycbc_Event*) ev,
                        PYCBC_EVACTION_UNWATCH,
                        sock,
                        &ev->flags);
}
Example #6
0
static int
update_timer(lcb_io_opt_t io, void *timer, lcb_U32 usec, void *data,
             pycbc_lcb_cb_t handler)
{
    pycbc_TimerEvent *ev = (pycbc_TimerEvent*)timer;
    ev->cb.data = data;
    ev->cb.handler = handler;

    return modify_event_python(PYCBC_IOW_FROM_IOPS(io), (pycbc_Event*)ev,
                               PYCBC_EVACTION_WATCH, -1, &usec);
}
Example #7
0
static void
destroy_event_common(lcb_io_opt_t io, void *arg)
{
    pycbc_Event *ev = arg;
    lcb_U32 dummy = 0;
    pycbc_assert(ev->state != PYCBC_EVSTATE_ACTIVE);

    modify_event_python(PYCBC_IOW_FROM_IOPS(io), ev, PYCBC_EVACTION_CLEANUP,
                        0, &dummy);

    ev->state = PYCBC_EVSTATE_FREED;
    Py_DECREF(ev);
}
static int
update_timer(lcb_io_opt_t io,
             void *timer,
             lcb_uint32_t usec,
             void *data,
             pycbc_lcb_cb_t handler)
{
    pycbc_TimerEvent *ev = (pycbc_TimerEvent*)timer;
    ev->cb.data = data;
    ev->cb.handler = handler;

    return modify_event_python((pycbc_iops_t*)io,
                               (pycbc_Event*)ev,
                               PYCBC_EVACTION_WATCH,
                               -1,
                               &usec);
}