void S3Init::s3_read()

in awsio/csrc/io/s3/s3_io.cpp [317:351]


void S3Init::s3_read(const std::string &file_url, std::string *result) {
    std::string bucket, object;
    parseS3Path(file_url, &bucket, &object);
    S3FS s3handler(bucket, object, multi_part_download_,
                   initializeTransferManager(), initializeS3Client());

    uint64_t offset = 0;
    uint64_t result_size = 0;
    uint64_t file_size = this->get_file_size(bucket, object);
    std::size_t part_count = (std::max)(
        static_cast<size_t>((file_size + buffer_size_ - 1) / buffer_size_),
        static_cast<std::size_t>(1));
    result->resize(file_size);

    for (int i = 0; i < part_count; i++) {

        offset = result_size;

	size_t buf_len = std::min<size_t>(buffer_size_, file_size - result_size);

        size_t read_len =
            s3handler.read(offset, buf_len, (char *)(result->data()) + offset);

        result_size += read_len;

        if (result_size == file_size) {
            break;
        }

        if (read_len != buf_len) {
            std::cout << "Result size and buffer size did not match";
            break;
        }
    }
}