static int start_write(lcb_io_opt_t iobase, lcb_sockdata_t *sockbase, lcb_io_writebuf_t *wbufbase, lcb_io_write_cb callback) { my_sockdata_t *sock = (my_sockdata_t *)sockbase; my_iops_t *io = (my_iops_t *)iobase; my_writebuf_t *wbuf = (my_writebuf_t *)wbufbase; int ii; int ret; wbuf->sock = sock; wbuf->write.callback = callback; for (ii = 0; ii < 2; ii++) { wbuf->uvbuf[ii].base = wbuf->base.buffer.iov[ii].iov_base; wbuf->uvbuf[ii].len = (lcb_uvbuf_len_t)wbuf->base.buffer.iov[ii].iov_len; } ret = uv_write(&wbuf->write.w, (uv_stream_t *)&sock->tcp, wbuf->uvbuf, 2, write_callback); set_last_error(io, ret); if (ret == 0) { incref_sock(sock); SOCK_INCR_PENDING(sock, write); } return ret; }
static int start_read(lcb_io_opt_t iobase, lcb_sockdata_t *sockbase, lcb_io_read_cb callback) { my_sockdata_t *sock = (my_sockdata_t *)sockbase; my_iops_t *io = (my_iops_t *)iobase; int ret; sock->cur_iov = 0; sock->tcp.callback = callback; ret = uv_read_start((uv_stream_t *)&sock->tcp.t, alloc_cb, read_cb); set_last_error(io, ret); if (ret == 0) { SOCK_INCR_PENDING(sock, read); incref_sock(sock); } return ret; }
static int start_read(lcb_io_opt_t iobase, lcb_sockdata_t *sockbase, lcb_IOV *iov, lcb_size_t niov, void *uarg, lcb_ioC_read2_callback callback) { my_sockdata_t *sock = (my_sockdata_t *)sockbase; my_iops_t *io = (my_iops_t *)iobase; int ret; sock->iov = *iov; sock->rdarg = uarg; sock->tcp.callback = callback; ret = uv_read_start((uv_stream_t *)&sock->tcp.t, alloc_cb, read_cb); set_last_error(io, ret); if (ret == 0) { SOCK_INCR_PENDING(sock, read); incref_sock(sock); } return ret; }