Example #1
0
libcouchbase_ssize_t
lcb_luv_recvv(struct libcouchbase_io_opt_st *iops,
              libcouchbase_socket_t sock_i,
              struct libcouchbase_iovec_st *iov,
              libcouchbase_size_t niov)
{
    libcouchbase_ssize_t nr = 0, iret = -1;
    int ii, my_errno;
    lcb_luv_socket_t sock = lcb_luv_sock_from_idx(iops, sock_i);

    if (sock == NULL) {
        iops->error = EBADF;
        return -1;
    }

    for (ii = 0; ii < niov; ii++) {
        if (iov[ii].iov_len == 0) {
            break;
        }
        iret = read_common(sock, iov[ii].iov_base, iov[ii].iov_len, &my_errno);
        if (iret > 0) {
            nr += iret;
        } else {
            break;
        }
    }
    if (!nr) {
        iops->error = my_errno;
        return -1;
    } else {
        return nr;
    }
}
Example #2
0
libcouchbase_ssize_t
lcb_luv_recv(struct libcouchbase_io_opt_st *iops,
             libcouchbase_socket_t sock_i,
             void *buffer,
             libcouchbase_size_t len,
             int flags)
{
    lcb_luv_socket_t sock = lcb_luv_sock_from_idx(iops, sock_i);
    if (sock == NULL) {
        iops->error = EBADF;
        return -1;
    }

    return read_common(sock, buffer, len, &iops->error);
}
Example #3
0
lcb_ssize_t lcb_luv_send(struct lcb_io_opt_st *iops,
                         lcb_socket_t sock_i,
                         const void *msg,
                         lcb_size_t len,
                         int flags)
{
    lcb_luv_socket_t sock = lcb_luv_sock_from_idx(iops, sock_i);
    lcb_ssize_t ret;
    (void)flags;
    if (sock == NULL) {
        iops->v.v0.error = EBADF;
        return -1;
    }
    ret = write_common(sock, msg, len, &iops->v.v0.error);
    if (ret > 0) {
        lcb_luv_send_async_write_ready(sock);
    }
    return ret;
}
Example #4
0
libcouchbase_ssize_t
lcb_luv_send(struct libcouchbase_io_opt_st *iops,
             libcouchbase_socket_t sock_i,
             const void *msg,
             libcouchbase_size_t len,
             int flags)
{
    lcb_luv_socket_t sock = lcb_luv_sock_from_idx(iops, sock_i);
    libcouchbase_ssize_t ret;
    if (sock == NULL) {
        iops->error = EBADF;
        return -1;
    }
    ret = write_common(sock, msg, len, &iops->error);
    if (ret > 0) {
        lcb_luv_schedule_enable(sock);
    }
    return ret;
}
Example #5
0
lcb_ssize_t lcb_luv_sendv(struct lcb_io_opt_st *iops,
                          lcb_socket_t sock_i,
                          struct lcb_iovec_st *iov,
                          lcb_size_t niov)
{
    lcb_ssize_t nw = 0, iret;
    lcb_size_t ii;
    int my_errno = 0;
    lcb_luv_socket_t sock = lcb_luv_sock_from_idx(iops, sock_i);
    if (sock == NULL) {
        iops->v.v0.error = EBADF;
        return -1;
    }
    for (ii = 0; ii < niov; ii++) {

        if (iov[ii].iov_len == 0) {
            break;
        }

        iret = write_common(sock, iov[ii].iov_base, iov[ii].iov_len, &my_errno);
        if (iret > 0) {
            nw += iret;
        } else {
            break;
        }
    }

    if (my_errno) {
        iops->v.v0.error = my_errno;
    }
    if (nw > 0) {
        lcb_luv_send_async_write_ready(sock);
    }

    if (iret == -1) {
        return -1;
    } else {
        return nw;
    }
}
Example #6
0
libcouchbase_ssize_t
lcb_luv_sendv(struct libcouchbase_io_opt_st *iops,
              libcouchbase_socket_t sock_i,
              struct libcouchbase_iovec_st *iov,
              libcouchbase_size_t niov)
{
    libcouchbase_ssize_t nr = 0, iret;
    int ii, my_errno = 0;
    lcb_luv_socket_t sock = lcb_luv_sock_from_idx(iops, sock_i);
    if (sock == NULL) {
        iops->error = EBADF;
        return -1;
    }
    for (ii = 0; ii < niov; ii++) {

        if (iov[ii].iov_len == 0) {
            break;
        }

        iret = write_common(sock, iov[ii].iov_base, iov[ii].iov_len, &my_errno);
        if (iret > 0) {
            nr += iret;
        } else {
            break;
        }
    }
    if (my_errno) {
        iops->error = my_errno;
    }
    if (nr > 0) {
        lcb_luv_schedule_enable(sock);
        return nr;
    } else {
        return -1;
    }
}