bool RecordIOReader::ReadRecord()

in src/pipemode_op/RecordReader/RecordIOReader.cpp [56:76]


bool RecordIOReader::ReadRecord(std::string* storage) {
    std::size_t total_record_size = 0;
    RecordIOHeader header;
    do {
        if (!Read(&header, sizeof(header))) {
            return false;
        }
        ValidateMagicNumber(header);
        std::size_t expected_size = GetRecordSize(header);
        std::size_t padded_expected_size = GetPaddedSize(expected_size);
        total_record_size += expected_size;
        storage->resize(total_record_size);
        Read(&(storage->at(total_record_size - expected_size)), expected_size);
        static char ignore[4] = {0, 0, 0, 0};
        std::size_t pad_amount = padded_expected_size - expected_size;
        if (pad_amount) {
            Read(&ignore, pad_amount);
        }
    } while (HasFollowingMultipartRecords(header));
    return true;
}