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); }
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); } }
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); }