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