Esempio n. 1
0
void lcb_server_v1_read_handler(lcb_sockdata_t *sockptr, lcb_ssize_t nr)
{
    lcb_server_t *c;
    int rv;
    hrtime_t stop;

    if (!lcb_sockrw_v1_cb_common(sockptr, NULL, (void **)&c)) {
        return;
    }

    lcb_sockrw_v1_onread_common(sockptr, &c->connection.input, nr);

    c->inside_handler = 1;

    if (nr < 1) {
        event_complete_common(c, LCB_NETWORK_ERROR);
        return;
    }

    lcb_connection_delay_timer(&c->connection);

    stop = gethrtime();

    while ((rv = lcb_proto_parse_single(c, stop)) > 0) {
        /* do nothing */
    }

    if (rv >= 0) {
        /* Schedule the read request again */
        lcb_sockrw_set_want(&c->connection, LCB_READ_EVENT, 0);
    }
    event_complete_common(c, LCB_SUCCESS);
}
Esempio n. 2
0
void lcb_server_v1_error_handler(lcb_sockdata_t *sockptr)
{
    lcb_server_t *c;

    if (!lcb_sockrw_v1_cb_common(sockptr, NULL, (void **)&c)) {
        return;
    }
    event_complete_common(c, LCB_NETWORK_ERROR);
}
Esempio n. 3
0
static void config_v1_error_handler(lcb_sockdata_t *sockptr)
{
    lcb_t instance;
    if (!lcb_sockrw_v1_cb_common(sockptr, NULL, (void **)&instance)) {
        return;
    }

    v1_error_common(instance);
}
Esempio n. 4
0
static void v1_generic_read_handler(lcb_sockdata_t *sd, lcb_ssize_t nr)
{
    lcb_connection_t conn = sd->lcbconn;
    if (!lcb_sockrw_v1_cb_common(sd, NULL, NULL)) {
        return;
    }

    lcb_sockrw_v1_onread_common(sd, &sd->lcbconn->input, nr);
    if (nr < 1) {
        conn->easy.error(conn);
        return;

    } else {
        conn->easy.read(conn);
    }
}
Esempio n. 5
0
static void config_v1_write_handler(lcb_sockdata_t *sockptr,
                                    lcb_io_writebuf_t *wbuf,
                                    int status)
{
    lcb_t instance;
    lcb_connection_t conn = sockptr->lcbconn;

    if (!lcb_sockrw_v1_cb_common(sockptr, wbuf, (void **)&instance)) {
        return;
    }
    lcb_sockrw_v1_onwrite_common(sockptr, wbuf, &conn->output);
    if (status) {
        v1_error_common(instance);
    }

    lcb_sockrw_set_want(conn, LCB_READ_EVENT, 1);
    lcb_sockrw_apply_want(conn);
}
Esempio n. 6
0
static void config_v1_read_handler(lcb_sockdata_t *sockptr, lcb_ssize_t nr)
{
    lcb_t instance;
    lcb_connection_t conn = sockptr->lcbconn;

    if (!lcb_sockrw_v1_cb_common(sockptr, NULL, (void **)&instance)) {
        return;
    }
    lcb_sockrw_v1_onread_common(sockptr, &conn->input, nr);
    if (nr < 1) {
        v1_error_common(instance);
        return;
    }

    lcb_sockrw_set_want(conn, LCB_READ_EVENT, 1);
    /* automatically does apply_want */
    handle_vbstream_read(instance);
}
Esempio n. 7
0
void lcb_server_v1_write_handler(lcb_sockdata_t *sockptr,
                                 lcb_io_writebuf_t *wbuf,
                                 int status)
{
    lcb_server_t *c;
    if (!lcb_sockrw_v1_cb_common(sockptr, wbuf, (void **)&c)) {
        return;
    }

    lcb_sockrw_v1_onwrite_common(sockptr, wbuf, &c->connection.output);

    c->inside_handler = 1;

    if (status) {
        event_complete_common(c, LCB_NETWORK_ERROR);
    } else {
        lcb_sockrw_set_want(&c->connection, LCB_READ_EVENT, 0);
        event_complete_common(c, LCB_SUCCESS);
    }
}
Esempio n. 8
0
static void v1_generic_write_handler(lcb_sockdata_t *sd,
                                     lcb_io_writebuf_t *wbuf,
                                     int status)
{
    lcb_t instance;
    lcb_connection_t conn = sd->lcbconn;

    if (!lcb_sockrw_v1_cb_common(sd, wbuf, (void **)&instance)) {
        return;
    }

    lcb_sockrw_v1_onwrite_common(sd, wbuf, &sd->lcbconn->output);

    if (status) {
        conn->easy.error(conn);
    } else {
        lcb_sockrw_set_want(conn, LCB_READ_EVENT, 1);
        lcb_sockrw_apply_want(conn);
    }
}