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; } }
int appinfo_entry(struct appinfo info, struct appinfo_common *common) { int entry_id; char section_id; char str[128]; struct app_header header; long pos = ftell(info.ai_fp); if (fread(&entry_id, sizeof(entry_id), 1, info.ai_fp) != 1 || entry_id == 0) { return 0; } if (fread(&header, sizeof(header), 1, info.ai_fp) != 1) { return 0; } if (!fgetc(info.ai_fp)) goto end; fgetc(info.ai_fp); if (!read_zstring(info.ai_fp, str, sizeof(str))) { return 0; } if (!strcmp(str, "common")) { read_common(info.ai_fp, common); } end: fseek(info.ai_fp, pos + header.size + 8, SEEK_SET); // for (;;) { // section_id = (char) fgetc(info.ai_fp); // // if (section_id == 0) // break; // // /*if (fread(§ion_id, sizeof(section_id), 1, info.ai_fp) != 1 || section_id == 0) { // printf("EOS\n"); // return 0; // }*/ // // fgetc(info.ai_fp); // // if (!read_zstring(info.ai_fp, str, sizeof(str))) { // return 0; // } // // break; // } return 1; }
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); }
static void io_read_handler(lcb_connection_t conn) { http_provider *http = conn->data; read_common(http); }