]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
kv/RocksDBStore: extract common code from set function.
authorPan Liu <wanjun.lp@alibaba-inc.com>
Mon, 7 Aug 2017 14:21:57 +0000 (22:21 +0800)
committerPan Liu <wanjun.lp@alibaba-inc.com>
Mon, 7 Aug 2017 14:21:57 +0000 (22:21 +0800)
Signed-off-by: Pan Liu <wanjun.lp@alibaba-inc.com>
src/kv/RocksDBStore.cc

index a13c47291c869f5c765693bb4a35aec5d5c1a57c..2c604ea95a94cca572587bf414c8210e023e99ba 100644 (file)
@@ -610,13 +610,11 @@ RocksDBStore::RocksDBTransactionImpl::RocksDBTransactionImpl(RocksDBStore *_db)
   db = _db;
 }
 
-void RocksDBStore::RocksDBTransactionImpl::set(
-  const string &prefix,
-  const string &k,
+static void put_bat(
+  rocksdb::WriteBatch& bat, 
+  const string &key, 
   const bufferlist &to_set_bl)
 {
-  string key = combine_strings(prefix, k);
-
   // bufferlist::c_str() is non-constant, so we can't call c_str()
   if (to_set_bl.is_contiguous() && to_set_bl.length() > 0) {
     bat.Put(rocksdb::Slice(key),
@@ -630,6 +628,16 @@ void RocksDBStore::RocksDBTransactionImpl::set(
   }
 }
 
+void RocksDBStore::RocksDBTransactionImpl::set(
+  const string &prefix,
+  const string &k,
+  const bufferlist &to_set_bl)
+{
+  string key = combine_strings(prefix, k);
+
+  put_bat(bat, key, to_set_bl);
+}
+
 void RocksDBStore::RocksDBTransactionImpl::set(
   const string &prefix,
   const char *k, size_t keylen,
@@ -638,17 +646,7 @@ void RocksDBStore::RocksDBTransactionImpl::set(
   string key;
   combine_strings(prefix, k, keylen, &key);
 
-  // bufferlist::c_str() is non-constant, so we can't call c_str()
-  if (to_set_bl.is_contiguous() && to_set_bl.length() > 0) {
-    bat.Put(rocksdb::Slice(key),
-            rocksdb::Slice(to_set_bl.buffers().front().c_str(),
-                           to_set_bl.length()));
-  } else {
-    rocksdb::Slice key_slice(key);
-    vector<rocksdb::Slice> value_slices(to_set_bl.buffers().size());
-    bat.Put(nullptr, rocksdb::SliceParts(&key_slice, 1),
-            prepare_sliceparts(to_set_bl, &value_slices));
-  }
+  put_bat(bat, key, to_set_bl);
 }
 
 void RocksDBStore::RocksDBTransactionImpl::rmkey(const string &prefix,