Hi,

Plasma support is provided by separated library: plasma-glib

https://arrow.apache.org/docs/c_glib/plasma-glib/api-index-full.html

----
const gchar *socket_name = "/tmp/plasma-store.sock";
GPlasmaClientOptions *options = NULL;
GError *error = NULL;
GPlasmaClient client = gplasma_client_new(socket_name, options, &NULL);
// Check error

GPlasmaObjectID *id = gplasma_object_id_new("ID", 2, &error);
// Check error
gint64 timeout_ms = 1000;
GPLasmaReferredObject *object =
  gplasma_client_refer_object(client,
                              id,
                              timeout_ms,
                              &error);
// Check error

GArrowBuffer *data;
g_object_get(object,
             "data", &data,
             NULL);
GArrowBufferInputStream *input = garrow_buffer_input_stream_new(data);
// Or StreamReader
GArrowRecordBatchFileReader *reader =
  garrow_record_batch_file_reader_new(input, &error);
// Check error

guint n_record_batches =
  garrow_record_batch_file_reader_get_n_record_batches(reader);
guint i;
for (i = 0; i < n_record_batches; i++) {
  GArrowRecordBatch *record_batch =
    garrow_record_batch_file_reader_read_record_batch(reader, i, &error);
  // Check error
  // Process record_batch
  g_object_unref(record_batch);
}
g_object_unref(reader);
g_object_unref(input);
g_object_unref(data);
g_object_unref(object);
g_object_unref(client);
----


Thanks,
--
kou

In <knflod8d.c8b1c455-d174-4fb8-b410-0cbbaa5b5...@we.are.superhuman.com>
  "[GLib] Call Plasma from GLib?" on Tue, 13 Apr 2021 05:48:18 +0000,
  "Xander Dunn" <[email protected]> wrote:

> I've been using Arrow's GLib library to write an Arrow library for the Swift 
> programming language. In Python I am using pyarrow.plasma to store 
> RecordBatch buffers, and I would like to retrieve those in Swift. However, I 
> just noticed that there is no mention of plasma in the GLib interface: 
> https://arrow.apache.org/docs/c_glib/arrow-glib/api-index-full.html. Is 
> Plasma not a part of GLib by design or is it planned to add it? In the 
> meantime, it looks like my option is to call the arrow C++ library from my 
> Swift layer? I see instructions here for using Plasma in C++: 
> https://github.com/apache/arrow/blob/master/cpp/apidoc/tutorials/plasma.md
> 
> And an unrelated, less important question:
> 
> Should I be able to call Plasma from the C++ library in Cython rather than 
> using the pyarrow Plasma interface in Cython? I think I will just need to 
> `cdef extern` declare all of the C++ interfaces I need to call.
> 
> Thanks,
> 
> Xander

Reply via email to