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