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