Esempio n. 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;
    }
}
Esempio n. 2
0
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(&section_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;
}
Esempio n. 3
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);
}
Esempio n. 4
0
static void io_read_handler(lcb_connection_t conn)
{
    http_provider *http = conn->data;
    read_common(http);
}