From 385786b3628cd8354535b11fe282d4314885feb4 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Mon, 9 Oct 2017 16:52:20 +0800 Subject: [PATCH] kv: unify {create_and_,}open() methods this silences the warning of "-Woverloaded-virtual" where create() and create_and_open() from KeyValueDB are hidden from the ones defined in derived classes. Signed-off-by: Kefu Chai --- src/kv/KeyValueDB.h | 12 +++--------- src/kv/KineticStore.cc | 16 ++++++++++++++++ src/kv/KineticStore.h | 8 ++------ src/kv/LevelDBStore.cc | 14 ++++++++++++++ src/kv/LevelDBStore.h | 8 ++------ src/kv/MemDB.cc | 14 ++++++++++++++ src/kv/MemDB.h | 5 +++-- src/kv/RocksDBStore.cc | 14 +++++--------- src/kv/RocksDBStore.h | 8 ++------ src/test/ObjectMap/KeyValueDBMemory.h | 4 ++-- 10 files changed, 63 insertions(+), 40 deletions(-) diff --git a/src/kv/KeyValueDB.h b/src/kv/KeyValueDB.h index 0815568c9f593..54b55a5030796 100644 --- a/src/kv/KeyValueDB.h +++ b/src/kv/KeyValueDB.h @@ -156,17 +156,11 @@ public: /// test whether we can successfully initialize; may have side effects (e.g., create) static int test_init(const std::string& type, const std::string& dir); virtual int init(string option_str="") = 0; - virtual int open(std::ostream &out) = 0; - virtual int open(std::ostream &out, const vector& cfs) { - assert(0 == "Not implemented"); - } - virtual int create_and_open(std::ostream &out) = 0; - virtual void close() { } + virtual int open(std::ostream &out, const vector& cfs = {}) = 0; // vector cfs contains column families to be created when db is created. virtual int create_and_open(std::ostream &out, - const vector& cfs) { - assert(0 == "Not implemented"); - } + const vector& cfs = {}) = 0; + virtual void close() { } virtual Transaction get_transaction() = 0; virtual int submit_transaction(Transaction) = 0; diff --git a/src/kv/KineticStore.cc b/src/kv/KineticStore.cc index ddbd48720f8ae..5d5359b00960c 100644 --- a/src/kv/KineticStore.cc +++ b/src/kv/KineticStore.cc @@ -45,6 +45,22 @@ int KineticStore::_test_init(CephContext *c) return status.ok() ? 0 : -EIO; } +int KineticStore::open(ostream &out, const vector& cfs) +{ + if (!cfs.empty()) { + assert(0 == "Not implemented"); + } + return do_open(out, false); +} + +int KineticStore::create_and_open(ostream &out, const vector& cfs) +{ + if (!cfs.empty()) { + assert(0 == "Not implemented"); + } + return do_open(out, true); +} + int KineticStore::do_open(ostream &out, bool create_if_missing) { kinetic::KineticConnectionFactory conn_factory = diff --git a/src/kv/KineticStore.h b/src/kv/KineticStore.h index 8e9dd7ad77fa7..ddeab98dafc27 100644 --- a/src/kv/KineticStore.h +++ b/src/kv/KineticStore.h @@ -52,13 +52,9 @@ public: int init(); /// Opens underlying db - int open(ostream &out) { - return do_open(out, false); - } + int open(ostream &out, const std::vector& = {}) override; /// Creates underlying db if missing and opens it - int create_and_open(ostream &out) override { - return do_open(out, true); - } + int create_and_open(ostream &out, const std::vector& = {}) override; void close(); diff --git a/src/kv/LevelDBStore.cc b/src/kv/LevelDBStore.cc index f4fc12057f780..e124c1a537b94 100644 --- a/src/kv/LevelDBStore.cc +++ b/src/kv/LevelDBStore.cc @@ -61,6 +61,20 @@ int LevelDBStore::init(string option_str) return 0; } +int LevelDBStore::open(ostream &out, const vector& cfs) { + if (!cfs.empty()) { + assert(0 == "Not implemented"); + } + return do_open(out, false); +} + +int LevelDBStore::create_and_open(ostream &out, const vector& cfs) { + if (!cfs.empty()) { + assert(0 == "Not implemented"); + } + return do_open(out, true); +} + int LevelDBStore::do_open(ostream &out, bool create_if_missing) { leveldb::Options ldoptions; diff --git a/src/kv/LevelDBStore.h b/src/kv/LevelDBStore.h index e32bf5c2305b3..ca08430e67a86 100644 --- a/src/kv/LevelDBStore.h +++ b/src/kv/LevelDBStore.h @@ -174,13 +174,9 @@ public: int init(string option_str="") override; /// Opens underlying db - int open(ostream &out) override { - return do_open(out, false); - } + int open(ostream &out, const std::vector& = {}) override; /// Creates underlying db if missing and opens it - int create_and_open(ostream &out) override { - return do_open(out, true); - } + int create_and_open(ostream &out, const std::vector& = {}) override; void close() override; diff --git a/src/kv/MemDB.cc b/src/kv/MemDB.cc index d6af78b182706..7e5ffac46f7fb 100644 --- a/src/kv/MemDB.cc +++ b/src/kv/MemDB.cc @@ -167,6 +167,20 @@ int MemDB::do_open(ostream &out, bool create) return _init(create); } +int MemDB::open(ostream &out, const vector& cfs) { + if (!cfs.empty()) { + assert(0 == "Not implemented"); + } + return do_open(out, false); +} + +int MemDB::create_and_open(ostream &out, const vector& cfs) { + if (!cfs.empty()) { + assert(0 == "Not implemented"); + } + return do_open(out, true); +} + MemDB::~MemDB() { close(); diff --git a/src/kv/MemDB.h b/src/kv/MemDB.h index 7486821ae5627..dcdcb3abbf1e5 100644 --- a/src/kv/MemDB.h +++ b/src/kv/MemDB.h @@ -122,8 +122,9 @@ public: int _init(bool format); int do_open(ostream &out, bool create); - int open(ostream &out) override { return do_open(out, false); } - int create_and_open(ostream &out) override { return do_open(out, true); } + int open(ostream &out, const std::vector&) override; + int create_and_open(ostream &out, const std::vector&) override; + using KeyValueDB::create_and_open; KeyValueDB::Transaction get_transaction() override { return std::shared_ptr(new MDBTransactionImpl(this)); diff --git a/src/kv/RocksDBStore.cc b/src/kv/RocksDBStore.cc index 49f903dbbda2c..0fd20cde61133 100644 --- a/src/kv/RocksDBStore.cc +++ b/src/kv/RocksDBStore.cc @@ -309,21 +309,17 @@ int RocksDBStore::install_cf_mergeop( return 0; } -int RocksDBStore::create_and_open(ostream &out) -{ - int r = create_db_dir(); - if (r < 0) - return r; - return do_open(out, true); -} - int RocksDBStore::create_and_open(ostream &out, const vector& cfs) { int r = create_db_dir(); if (r < 0) return r; - return do_open(out, true, &cfs); + if (cfs.empty()) { + return do_open(out, true, nullptr); + } else { + return do_open(out, true, &cfs); + } } int RocksDBStore::do_open(ostream &out, bool create_if_missing, diff --git a/src/kv/RocksDBStore.h b/src/kv/RocksDBStore.h index a552fef017819..0cd93f7c641e4 100644 --- a/src/kv/RocksDBStore.h +++ b/src/kv/RocksDBStore.h @@ -157,16 +157,12 @@ public: static bool check_omap_dir(string &omap_dir); /// Opens underlying db - int open(ostream &out) override { - return do_open(out, false); - } - int open(ostream &out, const vector& cfs) override { + int open(ostream &out, const vector& cfs = {}) override { return do_open(out, false, &cfs); } /// Creates underlying db if missing and opens it - int create_and_open(ostream &out) override; int create_and_open(ostream &out, - const vector& cfs) override; + const vector& cfs = {}) override; void close() override; diff --git a/src/test/ObjectMap/KeyValueDBMemory.h b/src/test/ObjectMap/KeyValueDBMemory.h index 9f73d2d8d4621..f82762d4fcbe1 100644 --- a/src/test/ObjectMap/KeyValueDBMemory.h +++ b/src/test/ObjectMap/KeyValueDBMemory.h @@ -22,10 +22,10 @@ public: int init(string _opt) override { return 0; } - int open(ostream &out) override { + int open(std::ostream &out, const vector& cfs = {}) override { return 0; } - int create_and_open(ostream &out) override { + int create_and_open(ostream &out, const vector& cfs = {}) override { return 0; } -- 2.39.5