[Groonga-commit] groonga/grnxx at 434f659 [master] Update grnxx::Storage::unlink().

Back to archive index

susumu.yata null+****@clear*****
Wed Jul 10 18:36:55 JST 2013


susumu.yata	2013-07-10 18:36:55 +0900 (Wed, 10 Jul 2013)

  New Revision: 434f659e447aa63be649322e2abf89e308cf8645
  https://github.com/groonga/grnxx/commit/434f659e447aa63be649322e2abf89e308cf8645

  Message:
    Update grnxx::Storage::unlink().
    
    Throw an exception on failure.

  Modified files:
    lib/grnxx/storage.cpp
    lib/grnxx/storage.hpp
    lib/grnxx/storage/storage_impl.cpp
    lib/grnxx/storage/storage_impl.hpp
    test/test_storage.cpp

  Modified: lib/grnxx/storage.cpp (+2 -2)
===================================================================
--- lib/grnxx/storage.cpp    2013-07-10 18:13:34 +0900 (6e99095)
+++ lib/grnxx/storage.cpp    2013-07-10 18:36:55 +0900 (07daccf)
@@ -158,8 +158,8 @@ bool Storage::exists(const char *path) {
   return storage::StorageImpl::exists(path);
 }
 
-bool Storage::unlink(const char *path) {
-  return storage::StorageImpl::unlink(path);
+void Storage::unlink(const char *path) {
+  storage::StorageImpl::unlink(path);
 }
 
 }  // namespace grnxx

  Modified: lib/grnxx/storage.hpp (+2 -2)
===================================================================
--- lib/grnxx/storage.hpp    2013-07-10 18:13:34 +0900 (64dbb31)
+++ lib/grnxx/storage.hpp    2013-07-10 18:36:55 +0900 (49003e7)
@@ -148,8 +148,8 @@ class Storage {
 
   // Return true iff "path" refers to a valid storage.
   static bool exists(const char *path);
-  // Remove a storage and return true on success.
-  static bool unlink(const char *path);
+  // Remove a storage.
+  static void unlink(const char *path);
 
   // Create a node of at least "size" bytes under the specified parent node.
   virtual StorageNode create_node(uint32_t parent_node_id, uint64_t size) = 0;

  Modified: lib/grnxx/storage/storage_impl.cpp (+3 -11)
===================================================================
--- lib/grnxx/storage/storage_impl.cpp    2013-07-10 18:13:34 +0900 (5a2b648)
+++ lib/grnxx/storage/storage_impl.cpp    2013-07-10 18:36:55 +0900 (6c7b949)
@@ -156,16 +156,13 @@ bool StorageImpl::exists(const char *path) {
   return true;
 }
 
-bool StorageImpl::unlink(const char *path) {
+void StorageImpl::unlink(const char *path) {
   if (!path) {
     GRNXX_ERROR() << "invalid argument: path = nullptr";
     throw LogicError();
   }
-  if (!File::exists(path)) {
-    return false;
-  }
   std::unique_ptr<StorageImpl> storage(open(path, STORAGE_READ_ONLY));
-  return storage->unlink_storage();
+  storage->unlink_storage();
 }
 
 StorageNode StorageImpl::create_node(uint32_t parent_node_id, uint64_t size) {
@@ -474,11 +471,7 @@ void StorageImpl::open_or_create_storage(const char *path, StorageFlags flags,
   }
 }
 
-bool StorageImpl::unlink_storage() {
-  if (flags_ & (STORAGE_ANONYMOUS | STORAGE_TEMPORARY)) {
-    // Nothing to do.
-    return false;
-  }
+void StorageImpl::unlink_storage() {
   const uint16_t max_file_id = static_cast<uint16_t>(
       header_->total_size / header_->max_file_size);
   File::unlink(path_.get());
@@ -487,7 +480,6 @@ bool StorageImpl::unlink_storage() {
     std::unique_ptr<char[]> numbered_path(generate_path(i));
     File::unlink(numbered_path.get());
   }
-  return true;
 }
 
 void StorageImpl::prepare_pointers() {

  Modified: lib/grnxx/storage/storage_impl.hpp (+2 -2)
===================================================================
--- lib/grnxx/storage/storage_impl.hpp    2013-07-10 18:13:34 +0900 (8ed0910)
+++ lib/grnxx/storage/storage_impl.hpp    2013-07-10 18:36:55 +0900 (9987e97)
@@ -52,7 +52,7 @@ class StorageImpl : public Storage {
                                      const StorageOptions &options);
 
   static bool exists(const char *path);
-  static bool unlink(const char *path);
+  static void unlink(const char *path);
 
   StorageNode create_node(uint32_t parent_node_id, uint64_t size);
   StorageNode open_node(uint32_t node_id);
@@ -91,7 +91,7 @@ class StorageImpl : public Storage {
   void open_storage(const char *path, StorageFlags flags);
   void open_or_create_storage(const char *path, StorageFlags flags,
                               const StorageOptions &options);
-  bool unlink_storage();
+  void unlink_storage();
 
   void prepare_pointers();
   void prepare_indexes();

  Modified: test/test_storage.cpp (+21 -16)
===================================================================
--- test/test_storage.cpp    2013-07-10 18:13:34 +0900 (9f7690f)
+++ test/test_storage.cpp    2013-07-10 18:36:55 +0900 (a521233)
@@ -324,9 +324,15 @@ void test_chunk_size() {
   assert(chunk->size() == (1 << 20));
 }
 
+void unlink_storage_if_exists(const char *path) {
+  if (grnxx::Storage::exists(path)) {
+    grnxx::Storage::unlink(path);
+  }
+}
+
 void test_storage_create() {
   const char FILE_PATH[] = "temp.grn";
-  grnxx::Storage::unlink(FILE_PATH);
+  unlink_storage_if_exists(FILE_PATH);
   std::unique_ptr<grnxx::Storage> storage;
 
   storage.reset(grnxx::Storage::create(FILE_PATH));
@@ -336,24 +342,24 @@ void test_storage_create() {
   storage.reset(grnxx::Storage::create(nullptr, grnxx::STORAGE_TEMPORARY));
 
   storage.reset();
-  assert(grnxx::Storage::unlink(FILE_PATH));
+  grnxx::Storage::unlink(FILE_PATH);
 }
 
 void test_storage_open() {
   const char FILE_PATH[] = "temp.grn";
-  grnxx::Storage::unlink(FILE_PATH);
+  unlink_storage_if_exists(FILE_PATH);
   std::unique_ptr<grnxx::Storage> storage;
 
   storage.reset(grnxx::Storage::create(FILE_PATH));
   storage.reset(grnxx::Storage::open(FILE_PATH));
 
   storage.reset();
-  assert(grnxx::Storage::unlink(FILE_PATH));
+  grnxx::Storage::unlink(FILE_PATH);
 }
 
 void test_storage_open_or_create() {
   const char FILE_PATH[] = "temp.grn";
-  grnxx::Storage::unlink(FILE_PATH);
+  unlink_storage_if_exists(FILE_PATH);
   std::unique_ptr<grnxx::Storage> storage;
 
   storage.reset(grnxx::Storage::open_or_create(FILE_PATH));
@@ -365,19 +371,18 @@ void test_storage_open_or_create() {
 
 void test_storage_exists_and_unlink() {
   const char FILE_PATH[] = "temp.grn";
-  grnxx::Storage::unlink(FILE_PATH);
+  unlink_storage_if_exists(FILE_PATH);
   std::unique_ptr<grnxx::Storage> storage(grnxx::Storage::create(FILE_PATH));
   storage.reset();
 
   assert(grnxx::Storage::exists(FILE_PATH));
-  assert(grnxx::Storage::unlink(FILE_PATH));
-  assert(!grnxx::Storage::unlink(FILE_PATH));
+  grnxx::Storage::unlink(FILE_PATH);
   assert(!grnxx::Storage::exists(FILE_PATH));
 }
 
 void test_storage_create_node() {
   const char FILE_PATH[] = "temp.grn";
-  grnxx::Storage::unlink(FILE_PATH);
+  unlink_storage_if_exists(FILE_PATH);
   std::unique_ptr<grnxx::Storage> storage;
   grnxx::StorageNode node;
 
@@ -411,12 +416,12 @@ void test_storage_create_node() {
 //  node = storage->create_node(-1, 1 << 16);
 //  node = storage->create_node(grnxx::STORAGE_ROOT_NODE_ID, -1);
 
-  assert(grnxx::Storage::unlink(FILE_PATH));
+  grnxx::Storage::unlink(FILE_PATH);
 }
 
 void test_storage_open_node() {
   const char FILE_PATH[] = "temp.grn";
-  grnxx::Storage::unlink(FILE_PATH);
+  unlink_storage_if_exists(FILE_PATH);
   std::unique_ptr<grnxx::Storage> storage;
   grnxx::StorageNode node;
   std::uint32_t node_id_1, node_id_2;
@@ -442,7 +447,7 @@ void test_storage_open_node() {
   assert(node.size() == (1 << 24));
 
   storage.reset();
-  assert(grnxx::Storage::unlink(FILE_PATH));
+  grnxx::Storage::unlink(FILE_PATH);
 }
 
 void test_storage_unlink_node() {
@@ -494,7 +499,7 @@ void test_storage_sweep() {
 
 void test_storage_path() {
   const char FILE_PATH[] = "temp.grn";
-  grnxx::Storage::unlink(FILE_PATH);
+  unlink_storage_if_exists(FILE_PATH);
   std::unique_ptr<grnxx::Storage> storage;
 
   storage.reset(grnxx::Storage::create(FILE_PATH));
@@ -503,12 +508,12 @@ void test_storage_path() {
   storage.reset(grnxx::Storage::create(FILE_PATH, grnxx::STORAGE_TEMPORARY));
   assert(std::strcmp(storage->path(), FILE_PATH) == 0);
 
-  assert(grnxx::Storage::unlink(FILE_PATH));
+  grnxx::Storage::unlink(FILE_PATH);
 }
 
 void test_storage_flags() {
   const char FILE_PATH[] = "temp.grn";
-  grnxx::Storage::unlink(FILE_PATH);
+  unlink_storage_if_exists(FILE_PATH);
   std::unique_ptr<grnxx::Storage> storage;
 
   storage.reset(grnxx::Storage::create(FILE_PATH));
@@ -520,7 +525,7 @@ void test_storage_flags() {
   storage.reset(grnxx::Storage::create(FILE_PATH, grnxx::STORAGE_TEMPORARY));
   assert(storage->flags() == grnxx::STORAGE_TEMPORARY);
 
-  assert(grnxx::Storage::unlink(FILE_PATH));
+  grnxx::Storage::unlink(FILE_PATH);
 }
 
 void test_storage_max_file_size() {
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index