Ejemplo n.º 1
0
static void async_cb(uv_async_t *handle, int status)
{
    lcb_luv_socket_t sock = (lcb_luv_socket_t)handle->data;
    log_loop_trace("prepcb start");

    if (!sock) {
        fprintf(stderr, "We were called with prepare_t %p, with a missing socket\n",
                (void *)handle);
        return;
    }

    sock->async_state |= LCB_LUV_ASYNCf_ENTERED;
    do {

        if (ASYNC_IS(sock, DEINIT)) {
            /**
             * We were requested to asynchronously be cancelled
             */
            sock->async_state = 0;
            lcb_luv_socket_deinit(sock);
            break;
        }

        lcb_luv_socket_ref(sock);

        sock->async_state &= (~LCB_LUV_ASYNCf_REDO);
        maybe_callout(sock);

        lcb_luv_socket_unref(sock);

    } while (ASYNC_IS(sock, REDO));

    sock->async_state &= ~(
                             LCB_LUV_ASYNCf_ENTERED |
                             LCB_LUV_ASYNCf_REDO |
                             LCB_LUV_ASYNCf_SCHEDULED
                         );

    /**
     * we don't have an actual 'async_stop', so decrement the refcount
     * once more
     */
    lcb_luv_socket_unref(sock);

    log_loop_trace("prepcb stop");
    (void)status;
}
Ejemplo n.º 2
0
static void
prepare_cb(uv_prepare_t *handle, int status)
{
    lcb_luv_socket_t sock = (lcb_luv_socket_t)handle->data;
    log_loop_trace("prepcb start");
    if (!sock) {
        fprintf(stderr, "We were called with prepare_t %p, with a missing socket\n",
                (void*)handle);
        return;
    }

    lcb_luv_socket_ref(sock);
    maybe_callout(sock);
    lcb_luv_socket_unref(sock);
    log_loop_trace("prepcb stop");
    (void)status;
}
Ejemplo n.º 3
0
static void
async_cb(uv_async_t *handle, int status)
{
    lcb_luv_socket_t sock = (lcb_luv_socket_t)handle->data;
    log_loop_trace("prepcb start");

    if (!sock) {
        fprintf(stderr, "We were called with prepare_t %p, with a missing socket\n",
                (void*)handle);
        return;
    }

    sock->async_entered = 1;

    do {
        lcb_luv_socket_ref(sock);

        sock->async_redo = 0;
        maybe_callout(sock);

        lcb_luv_socket_unref(sock);

    } while (sock->async_redo);

    sock->async_entered = 0;
    sock->async_active = 0;

    /**
     * we don't have an actual 'async_stop', so decrement the refcount
     * once more
     */
    lcb_luv_socket_unref(sock);

    log_loop_trace("prepcb stop");
    (void)status;
}