Skip to content

Commit d24c266

Browse files
committed
Add deserialize_record_batch_message
1 parent 660a0e8 commit d24c266

File tree

4 files changed

+16
-15
lines changed

4 files changed

+16
-15
lines changed

include/serialize.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@ namespace sparrow_ipc
1515
SPARROW_IPC_API void serialize_record_batch_message(const ArrowArray& arrow_arr, const std::vector<int64_t>& buffers_sizes, std::vector<uint8_t>& final_buffer);
1616

1717
SPARROW_IPC_API void deserialize_schema_message(const uint8_t* buf_ptr, size_t& current_offset, std::optional<std::string>& name, std::optional<std::vector<sparrow::metadata_pair>>& metadata);
18+
SPARROW_IPC_API const org::apache::arrow::flatbuf::RecordBatch* deserialize_record_batch_message(const uint8_t* buf_ptr, size_t& current_offset);
1819
}
1920
}

include/serialize_null_array.hpp

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,7 @@ namespace sparrow_ipc
5858
details::deserialize_schema_message(buf_ptr, current_offset, name, metadata);
5959

6060
// II - Deserialize the RecordBatch message
61-
uint32_t batch_meta_len = *(reinterpret_cast<const uint32_t*>(buf_ptr + current_offset));
62-
current_offset += sizeof(uint32_t);
63-
auto batch_message = org::apache::arrow::flatbuf::GetMessage(buf_ptr + current_offset);
64-
if (batch_message->header_type() != org::apache::arrow::flatbuf::MessageHeader::RecordBatch)
65-
{
66-
throw std::runtime_error("Expected RecordBatch message, but got a different type.");
67-
}
68-
auto record_batch = static_cast<const org::apache::arrow::flatbuf::RecordBatch*>(batch_message->header());
61+
const auto* record_batch = details::deserialize_record_batch_message(buf_ptr, current_offset);
6962

7063
// The body is empty, so we don't need to read any further.
7164
// Construct the null_array from the deserialized metadata.

include/serialize_primitive_array.hpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,8 @@ namespace sparrow_ipc
7373

7474
// II - Deserialize the RecordBatch message
7575
uint32_t batch_meta_len = *(reinterpret_cast<const uint32_t*>(buf_ptr + current_offset));
76-
current_offset += sizeof(uint32_t);
77-
auto batch_message = org::apache::arrow::flatbuf::GetMessage(buf_ptr + current_offset);
78-
if (batch_message->header_type() != org::apache::arrow::flatbuf::MessageHeader::RecordBatch)
79-
{
80-
throw std::runtime_error("Expected RecordBatch message, but got a different type.");
81-
}
82-
auto record_batch = static_cast<const org::apache::arrow::flatbuf::RecordBatch*>(batch_message->header());
76+
const auto* record_batch = details::deserialize_record_batch_message(buf_ptr, current_offset);
77+
8378
current_offset += utils::align_to_8(batch_meta_len);
8479
const uint8_t* body_ptr = buf_ptr + current_offset;
8580

src/serialize.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,5 +196,17 @@ namespace sparrow_ipc
196196
}
197197
current_offset += schema_meta_len;
198198
}
199+
200+
const org::apache::arrow::flatbuf::RecordBatch* deserialize_record_batch_message(const uint8_t* buf_ptr, size_t& current_offset)
201+
{
202+
current_offset += sizeof(uint32_t);
203+
auto batch_message = org::apache::arrow::flatbuf::GetMessage(buf_ptr + current_offset);
204+
if (batch_message->header_type() != org::apache::arrow::flatbuf::MessageHeader::RecordBatch)
205+
{
206+
throw std::runtime_error("Expected RecordBatch message, but got a different type.");
207+
}
208+
return static_cast<const org::apache::arrow::flatbuf::RecordBatch*>(batch_message->header());
209+
}
210+
199211
} // namespace details
200212
} // namespace sparrow-ipc

0 commit comments

Comments
 (0)