MCPcopy Create free account
hub / github.com/apache/arrow / WriteFileFooter

Function WriteFileFooter

cpp/src/arrow/ipc/metadata_internal.cc:1400–1437  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1398}
1399
1400Status WriteFileFooter(const Schema& schema, const std::vector<FileBlock>& dictionaries,
1401 const std::vector<FileBlock>& record_batches,
1402 const std::shared_ptr<const KeyValueMetadata>& metadata,
1403 io::OutputStream* out) {
1404 FBB fbb;
1405
1406 flatbuffers::Offset<flatbuf::Schema> fb_schema;
1407 DictionaryFieldMapper mapper(schema);
1408 RETURN_NOT_OK(SchemaToFlatbuffer(fbb, schema, mapper, &fb_schema));
1409
1410#ifndef NDEBUG
1411 for (size_t i = 0; i < dictionaries.size(); ++i) {
1412 DCHECK(bit_util::IsMultipleOf8(dictionaries[i].offset)) << i;
1413 DCHECK(bit_util::IsMultipleOf8(dictionaries[i].metadata_length)) << i;
1414 DCHECK(bit_util::IsMultipleOf8(dictionaries[i].body_length)) << i;
1415 }
1416
1417 for (size_t i = 0; i < record_batches.size(); ++i) {
1418 DCHECK(bit_util::IsMultipleOf8(record_batches[i].offset)) << i;
1419 DCHECK(bit_util::IsMultipleOf8(record_batches[i].metadata_length)) << i;
1420 DCHECK(bit_util::IsMultipleOf8(record_batches[i].body_length)) << i;
1421 }
1422#endif
1423
1424 auto fb_dictionaries = FileBlocksToFlatbuffer(fbb, dictionaries);
1425 auto fb_record_batches = FileBlocksToFlatbuffer(fbb, record_batches);
1426
1427 auto fb_custom_metadata = SerializeCustomMetadata(fbb, metadata);
1428
1429 auto footer =
1430 flatbuf::CreateFooter(fbb, kCurrentMetadataVersion, fb_schema, fb_dictionaries,
1431 fb_record_batches, fb_custom_metadata);
1432 fbb.Finish(footer);
1433
1434 int32_t size = fbb.GetSize();
1435
1436 return out->Write(fbb.GetBufferPointer(), size);
1437}
1438
1439// ----------------------------------------------------------------------
1440

Callers 1

CloseMethod · 0.85

Calls 9

SchemaToFlatbufferFunction · 0.85
IsMultipleOf8Function · 0.85
FileBlocksToFlatbufferFunction · 0.85
SerializeCustomMetadataFunction · 0.85
CreateFooterFunction · 0.85
sizeMethod · 0.45
FinishMethod · 0.45
GetSizeMethod · 0.45
WriteMethod · 0.45

Tested by

no test coverage detected