In Python I'm encoding RecordBatches like this:
```python
client = plasma.connect("/tmp/plasma")
object_id = plasma.ObjectID(bytes(my_id, "ascii"))
mock_sink = pa.MockOutputStream()
stream_writer = pa.RecordBatchStreamWriter(mock_sink, pybatch.schema)
stream_writer.write_batch(pybatch)
stream_writer.close()
data_size = mock_sink.size()
buf = client.create(object_id, data_size)
stream = pa.FixedSizeBufferWriter(buf)
stream_writer = pa.RecordBatchStreamWriter(stream, pybatch.schema)
stream_writer.write_batch(pybatch)
stream_writer.close()
client.seal(object_id)
```
This works, code from here: https://arrow.apache.org/docs/python/plasma.html
I am now having difficulty figuring out the right calls on the C++ side to
decode these RecordBatch messages. I am successfully getting the Plasma objects
as arrow::Buffer's, but I haven't managed to decode it into a RecordBatch:
```c++
auto object_id = plasma::ObjectID::from_binary(my_id);
plasma::ObjectBuffer object_buffer;
arrow::Status status = client.Get(&object_id, 1, -1, &object_buffer);
std::shared_ptr<Buffer> data = object_buffer.data;
fmt::print("{} Got data with size {}\n", current_id, data->size());
// Everything above works and prints the object size in bytes I'm expecting
//auto buf_reader = arrow::io::BufferReader(buffer);
//auto reader = arrow::ipc::RecordBatchStreamReader::Open(&buf_reader);
// auto batch = reader.ReadNextBatch();
```
I'm stuck on creating the BufferReader. I believe it's declared in
arrow/io/memory.h, so I include that with `#include <arrow/io/memory.h>` and
get these compile errors in clang:
```
pymydata/pymydata/PreprocessData.cc:312:18 (
http://pymydata/pymydata/PreprocessData.cc:312:18 ) : error: call to
implicitly-deleted copy constructor of 'arrow::io::BufferReader'
auto buf_reader = arrow::io::BufferReader(buffer);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/xander/anaconda3/envs/my_model/include/arrow/io/memory.h:146:7: note:
copy constructor of 'BufferReader' is implicitly deleted because base class
'internal::RandomAccessFileConcurrencyWrapper<BufferReader>' has a deleted copy
constructor
: public internal::RandomAccessFileConcurrencyWrapper<BufferReader> {
^
/home/xander/anaconda3/envs/my_model/include/arrow/io/concurrency.h:162:57:
note: copy constructor of
'RandomAccessFileConcurrencyWrapper<arrow::io::BufferReader>' is implicitly
deleted because base class 'arrow::io::RandomAccessFile' has a deleted copy
constructor
class ARROW_EXPORT RandomAccessFileConcurrencyWrapper : public RandomAccessFile
{
^
/home/xander/anaconda3/envs/my_model/include/arrow/io/interfaces.h:187:7: note:
copy constructor of 'RandomAccessFile' is implicitly deleted because base class
'arrow::io::InputStream' has a deleted copy constructor
public InputStream,
^
```
GCC produces similar errors.
Arrow 3.0.0. C++11. Am I calling the BufferReader init correctly? Do I have the
right #include? Any pointers on decoding RecordBatches on the C++ side will be
helpful. Hopefully I'm missing something simple.
Thanks,
Xander