You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ap...@apache.org on 2018/11/01 16:49:30 UTC

[arrow] branch master updated: ARROW-3662: [C++] Add a const overload to MemoryMappedFile::GetSize

This is an automated email from the ASF dual-hosted git repository.

apitrou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new e69659d  ARROW-3662: [C++] Add a const overload to MemoryMappedFile::GetSize
e69659d is described below

commit e69659d9cb4b895dcc45a8f10979789dc2324872
Author: Dimitri Vorona <vo...@in.tum.de>
AuthorDate: Thu Nov 1 17:49:21 2018 +0100

    ARROW-3662: [C++] Add a const overload to MemoryMappedFile::GetSize
    
    Author: Dimitri Vorona <vo...@in.tum.de>
    
    Closes #2882 from alendit/get_size_const and squashes the following commits:
    
    5e497853 <Dimitri Vorona> Add const overload for MemoryMappedFile::GetSize
---
 cpp/src/arrow/io/file.cc         |  6 +++++-
 cpp/src/arrow/io/file.h          |  3 +++
 cpp/src/arrow/io/io-file-test.cc | 15 +++++++++++++++
 3 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/cpp/src/arrow/io/file.cc b/cpp/src/arrow/io/file.cc
index a8cb923..c7cc1d0 100644
--- a/cpp/src/arrow/io/file.cc
+++ b/cpp/src/arrow/io/file.cc
@@ -522,11 +522,15 @@ Status MemoryMappedFile::Open(const std::string& path, FileMode::type mode,
   return Status::OK();
 }
 
-Status MemoryMappedFile::GetSize(int64_t* size) {
+Status MemoryMappedFile::GetSize(int64_t* size) const {
   *size = memory_map_->size();
   return Status::OK();
 }
 
+Status MemoryMappedFile::GetSize(int64_t* size) {
+  return static_cast<const MemoryMappedFile*>(this)->GetSize(size);
+}
+
 Status MemoryMappedFile::Tell(int64_t* position) const {
   *position = memory_map_->position();
   return Status::OK();
diff --git a/cpp/src/arrow/io/file.h b/cpp/src/arrow/io/file.h
index ceee7e9..9d7f939 100644
--- a/cpp/src/arrow/io/file.h
+++ b/cpp/src/arrow/io/file.h
@@ -224,6 +224,9 @@ class ARROW_EXPORT MemoryMappedFile : public ReadWriteFileInterface {
   Status WriteAt(int64_t position, const void* data, int64_t nbytes) override;
 
   // @return: the size in bytes of the memory source
+  Status GetSize(int64_t* size) const;
+
+  // @return: the size in bytes of the memory source
   Status GetSize(int64_t* size) override;
 
   int file_descriptor() const;
diff --git a/cpp/src/arrow/io/io-file-test.cc b/cpp/src/arrow/io/io-file-test.cc
index b8edbc1..afe2c60 100644
--- a/cpp/src/arrow/io/io-file-test.cc
+++ b/cpp/src/arrow/io/io-file-test.cc
@@ -656,6 +656,21 @@ TEST_F(TestMemoryMappedFile, WriteResizeRead) {
   }
 }
 
+TEST_F(TestMemoryMappedFile, GetConstGetSize) {
+  const int64_t buffer_size = 1024;
+  std::vector<uint8_t> buffer(buffer_size);
+  random_bytes(buffer_size, 0, buffer.data());
+
+  std::string path = "io-memory-map-write-read-test";
+  std::shared_ptr<MemoryMappedFile> result;
+  ASSERT_OK(InitMemoryMap(buffer_size, path, &result));
+
+  const auto& const_result = *result;
+  int64_t out_size;
+  ASSERT_OK(const_result.GetSize(&out_size));
+  ASSERT_EQ(buffer_size, out_size);
+}
+
 TEST_F(TestMemoryMappedFile, ResizeRaisesOnExported) {
   const int64_t buffer_size = 1024;
   std::vector<uint8_t> buffer(buffer_size);