]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/kv: add interface to size of key and value from wholespaceiter
authorVarada Kari <varada.kari@sandisk.com>
Thu, 22 Dec 2016 09:52:17 +0000 (15:22 +0530)
committerVarada Kari <varada.kari@sandisk.com>
Thu, 12 Jan 2017 08:22:02 +0000 (13:52 +0530)
Avoids converting the key and value to string or bufferlist

Signed-off-by: Varada Kari <varada.kari@sandisk.com>
src/kv/KeyValueDB.h
src/kv/RocksDBStore.cc
src/kv/RocksDBStore.h

index cfaea4b6ffdede5cd307a5f8481bfb56823c7997..1a9ea657cb653875202adc3fdd1b265bcc4941ee 100644 (file)
@@ -192,6 +192,12 @@ public:
       }
     }
     virtual int status() = 0;
+    virtual size_t key_size() {
+      return 0;
+    }
+    virtual size_t value_size() {
+      return 0;
+    }
     virtual ~WholeSpaceIteratorImpl() { }
   };
   typedef ceph::shared_ptr< WholeSpaceIteratorImpl > WholeSpaceIterator;
index 4b7b2b98db6d4b81497591da56bb0594e53fe9d9..5b97598ebe122a2b99d6e45255b4663e4197edb2 100644 (file)
@@ -869,6 +869,16 @@ bufferlist RocksDBStore::RocksDBWholeSpaceIteratorImpl::value()
   return to_bufferlist(dbiter->value());
 }
 
+size_t RocksDBStore::RocksDBWholeSpaceIteratorImpl::key_size()
+{
+  return dbiter->key().size();
+}
+
+size_t RocksDBStore::RocksDBWholeSpaceIteratorImpl::value_size()
+{
+  return dbiter->value().size();
+}
+
 bufferptr RocksDBStore::RocksDBWholeSpaceIteratorImpl::value_as_ptr()
 {
   rocksdb::Slice val = dbiter->value();
index 9b11d9aa84c5f3ef5eb551ebf9bae705f97aa1cf..44dce9c92f32f3de36948974a42976b99d373f56 100644 (file)
@@ -313,6 +313,8 @@ public:
     bufferlist value();
     bufferptr value_as_ptr();
     int status();
+    size_t key_size();
+    size_t value_size();
   };
 
   /// Utility