Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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;
}