You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by we...@apache.org on 2017/04/30 17:31:55 UTC
arrow git commit: ARROW-918: [GLib] Use GArrowBuffer for read buffer
Repository: arrow
Updated Branches:
refs/heads/master ce0c96221 -> 2d5142cd3
ARROW-918: [GLib] Use GArrowBuffer for read buffer
It's efficient.
Author: Kouhei Sutou <ko...@clear-code.com>
Closes #618 from kou/glib-read-buffer and squashes the following commits:
e14bb40 [Kouhei Sutou] [GLib] Use GArrowBuffer for read buffer
Project: http://git-wip-us.apache.org/repos/asf/arrow/repo
Commit: http://git-wip-us.apache.org/repos/asf/arrow/commit/2d5142cd
Tree: http://git-wip-us.apache.org/repos/asf/arrow/tree/2d5142cd
Diff: http://git-wip-us.apache.org/repos/asf/arrow/diff/2d5142cd
Branch: refs/heads/master
Commit: 2d5142cd3fc9a5f5150daf6ea6335029de8002ae
Parents: ce0c962
Author: Kouhei Sutou <ko...@clear-code.com>
Authored: Sun Apr 30 13:31:49 2017 -0400
Committer: Wes McKinney <we...@twosigma.com>
Committed: Sun Apr 30 13:31:49 2017 -0400
----------------------------------------------------------------------
c_glib/arrow-glib/random-access-file.cpp | 20 +++++++++++---------
c_glib/arrow-glib/random-access-file.h | 10 ++++------
c_glib/arrow-glib/readable.cpp | 23 +++++++++++++----------
c_glib/arrow-glib/readable.h | 10 ++++------
c_glib/test/test-memory-mapped-file.rb | 18 +++++++-----------
5 files changed, 39 insertions(+), 42 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/arrow/blob/2d5142cd/c_glib/arrow-glib/random-access-file.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/random-access-file.cpp b/c_glib/arrow-glib/random-access-file.cpp
index 976a80d..7441316 100644
--- a/c_glib/arrow-glib/random-access-file.cpp
+++ b/c_glib/arrow-glib/random-access-file.cpp
@@ -23,6 +23,7 @@
#include <arrow/api.h>
+#include <arrow-glib/buffer.hpp>
#include <arrow-glib/error.hpp>
#include <arrow-glib/random-access-file.hpp>
@@ -88,28 +89,29 @@ garrow_random_access_file_get_support_zero_copy(GArrowRandomAccessFile *file)
* @file: A #GArrowRandomAccessFile.
* @position: The read start position.
* @n_bytes: The number of bytes to be read.
- * @n_read_bytes: (out): The read number of bytes.
- * @buffer: (array length=n_bytes): The buffer to be read data.
* @error: (nullable): Return location for a #GError or %NULL.
*
- * Returns: %TRUE on success, %FALSE if there was an error.
+ * Returns: (transfer full) (nullable): #GArrowBuffer that has read
+ * data on success, %NULL if there was an error.
*/
-gboolean
+GArrowBuffer *
garrow_random_access_file_read_at(GArrowRandomAccessFile *file,
gint64 position,
gint64 n_bytes,
- gint64 *n_read_bytes,
- guint8 *buffer,
GError **error)
{
const auto arrow_random_access_file =
garrow_random_access_file_get_raw(file);
+ std::shared_ptr<arrow::Buffer> arrow_buffer;
auto status = arrow_random_access_file->ReadAt(position,
n_bytes,
- n_read_bytes,
- buffer);
- return garrow_error_check(error, status, "[io][random-access-file][read-at]");
+ &arrow_buffer);
+ if (garrow_error_check(error, status, "[io][random-access-file][read-at]")) {
+ return garrow_buffer_new_raw(&arrow_buffer);
+ } else {
+ return NULL;
+ }
}
G_END_DECLS
http://git-wip-us.apache.org/repos/asf/arrow/blob/2d5142cd/c_glib/arrow-glib/random-access-file.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/random-access-file.h b/c_glib/arrow-glib/random-access-file.h
index 8a7f6b4..83a7d8c 100644
--- a/c_glib/arrow-glib/random-access-file.h
+++ b/c_glib/arrow-glib/random-access-file.h
@@ -45,11 +45,9 @@ GType garrow_random_access_file_get_type(void) G_GNUC_CONST;
guint64 garrow_random_access_file_get_size(GArrowRandomAccessFile *file,
GError **error);
gboolean garrow_random_access_file_get_support_zero_copy(GArrowRandomAccessFile *file);
-gboolean garrow_random_access_file_read_at(GArrowRandomAccessFile *file,
- gint64 position,
- gint64 n_bytes,
- gint64 *n_read_bytes,
- guint8 *buffer,
- GError **error);
+GArrowBuffer *garrow_random_access_file_read_at(GArrowRandomAccessFile *file,
+ gint64 position,
+ gint64 n_bytes,
+ GError **error);
G_END_DECLS
http://git-wip-us.apache.org/repos/asf/arrow/blob/2d5142cd/c_glib/arrow-glib/readable.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/readable.cpp b/c_glib/arrow-glib/readable.cpp
index d893853..6a9023e 100644
--- a/c_glib/arrow-glib/readable.cpp
+++ b/c_glib/arrow-glib/readable.cpp
@@ -23,6 +23,7 @@
#include <arrow/api.h>
+#include <arrow-glib/buffer.hpp>
#include <arrow-glib/error.hpp>
#include <arrow-glib/readable.hpp>
@@ -50,23 +51,25 @@ garrow_readable_default_init (GArrowReadableInterface *iface)
* garrow_readable_read:
* @readable: A #GArrowReadable.
* @n_bytes: The number of bytes to be read.
- * @n_read_bytes: (out): The read number of bytes.
- * @buffer: (array length=n_bytes): The buffer to be read data.
* @error: (nullable): Return location for a #GError or %NULL.
*
- * Returns: %TRUE on success, %FALSE if there was an error.
+ * Returns: (transfer full) (nullable): #GArrowBuffer that has read
+ * data on success, %NULL if there was an error.
*/
-gboolean
+GArrowBuffer *
garrow_readable_read(GArrowReadable *readable,
- gint64 n_bytes,
- gint64 *n_read_bytes,
- guint8 *buffer,
- GError **error)
+ gint64 n_bytes,
+ GError **error)
{
const auto arrow_readable = garrow_readable_get_raw(readable);
- auto status = arrow_readable->Read(n_bytes, n_read_bytes, buffer);
- return garrow_error_check(error, status, "[io][readable][read]");
+ std::shared_ptr<arrow::Buffer> arrow_buffer;
+ auto status = arrow_readable->Read(n_bytes, &arrow_buffer);
+ if (garrow_error_check(error, status, "[io][readable][read]")) {
+ return garrow_buffer_new_raw(&arrow_buffer);
+ } else {
+ return NULL;
+ }
}
G_END_DECLS
http://git-wip-us.apache.org/repos/asf/arrow/blob/2d5142cd/c_glib/arrow-glib/readable.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/readable.h b/c_glib/arrow-glib/readable.h
index bde4b01..216e736 100644
--- a/c_glib/arrow-glib/readable.h
+++ b/c_glib/arrow-glib/readable.h
@@ -19,7 +19,7 @@
#pragma once
-#include <glib-object.h>
+#include <arrow-glib/buffer.h>
G_BEGIN_DECLS
@@ -42,10 +42,8 @@ typedef struct _GArrowReadableInterface GArrowReadableInterface;
GType garrow_readable_get_type(void) G_GNUC_CONST;
-gboolean garrow_readable_read(GArrowReadable *readable,
- gint64 n_bytes,
- gint64 *n_read_bytes,
- guint8 *buffer,
- GError **error);
+GArrowBuffer *garrow_readable_read(GArrowReadable *readable,
+ gint64 n_bytes,
+ GError **error);
G_END_DECLS
http://git-wip-us.apache.org/repos/asf/arrow/blob/2d5142cd/c_glib/test/test-memory-mapped-file.rb
----------------------------------------------------------------------
diff --git a/c_glib/test/test-memory-mapped-file.rb b/c_glib/test/test-memory-mapped-file.rb
index e78d07a..e09e369 100644
--- a/c_glib/test/test-memory-mapped-file.rb
+++ b/c_glib/test/test-memory-mapped-file.rb
@@ -22,9 +22,8 @@ class TestMemoryMappedFile < Test::Unit::TestCase
tempfile.close
file = Arrow::MemoryMappedFile.open(tempfile.path, :read)
begin
- buffer = " " * 5
- file.read(buffer)
- assert_equal("Hello", buffer)
+ buffer = file.read(5)
+ assert_equal("Hello", buffer.data.to_s)
ensure
file.close
end
@@ -48,9 +47,8 @@ class TestMemoryMappedFile < Test::Unit::TestCase
tempfile.close
file = Arrow::MemoryMappedFile.open(tempfile.path, :read)
begin
- buffer = " " * 5
- _success, n_read_bytes = file.read(buffer)
- assert_equal("Hello", buffer.byteslice(0, n_read_bytes))
+ buffer = file.read(5)
+ assert_equal("Hello", buffer.data.to_s)
ensure
file.close
end
@@ -62,9 +60,8 @@ class TestMemoryMappedFile < Test::Unit::TestCase
tempfile.close
file = Arrow::MemoryMappedFile.open(tempfile.path, :read)
begin
- buffer = " " * 5
- _success, n_read_bytes = file.read_at(6, buffer)
- assert_equal("World", buffer.byteslice(0, n_read_bytes))
+ buffer = file.read_at(6, 5)
+ assert_equal("World", buffer.data.to_s)
ensure
file.close
end
@@ -116,8 +113,7 @@ class TestMemoryMappedFile < Test::Unit::TestCase
tempfile.close
file = Arrow::MemoryMappedFile.open(tempfile.path, :read)
begin
- buffer = " " * 5
- file.read(buffer)
+ file.read(5)
assert_equal(5, file.tell)
ensure
file.close