| 1608 | // Serialization public APIs |
| 1609 | |
| 1610 | Result<std::shared_ptr<Buffer>> SerializeRecordBatch(const RecordBatch& batch, |
| 1611 | std::shared_ptr<MemoryManager> mm) { |
| 1612 | auto options = IpcWriteOptions::Defaults(); |
| 1613 | int64_t size = 0; |
| 1614 | RETURN_NOT_OK(GetRecordBatchSize(batch, options, &size)); |
| 1615 | ARROW_ASSIGN_OR_RAISE(std::shared_ptr<Buffer> buffer, mm->AllocateBuffer(size)); |
| 1616 | ARROW_ASSIGN_OR_RAISE(auto writer, Buffer::GetWriter(buffer)); |
| 1617 | |
| 1618 | // XXX Should we have a helper function for getting a MemoryPool |
| 1619 | // for any MemoryManager (not only CPU)? |
| 1620 | if (mm->is_cpu()) { |
| 1621 | options.memory_pool = checked_pointer_cast<CPUMemoryManager>(mm)->pool(); |
| 1622 | } |
| 1623 | RETURN_NOT_OK(SerializeRecordBatch(batch, options, writer.get())); |
| 1624 | RETURN_NOT_OK(writer->Close()); |
| 1625 | return buffer; |
| 1626 | } |
| 1627 | |
| 1628 | Result<std::shared_ptr<Buffer>> SerializeRecordBatch(const RecordBatch& batch, |
| 1629 | const IpcWriteOptions& options) { |