From: Varada Kari Date: Thu, 22 Dec 2016 09:52:17 +0000 (+0530) Subject: os/kv: add interface to size of key and value from wholespaceiter X-Git-Tag: v12.0.0~97^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1b1018d730c14c834c3104e568def388bc279351;p=ceph.git os/kv: add interface to size of key and value from wholespaceiter Avoids converting the key and value to string or bufferlist Signed-off-by: Varada Kari --- diff --git a/src/kv/KeyValueDB.h b/src/kv/KeyValueDB.h index cfaea4b6ffde..1a9ea657cb65 100644 --- a/src/kv/KeyValueDB.h +++ b/src/kv/KeyValueDB.h @@ -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; diff --git a/src/kv/RocksDBStore.cc b/src/kv/RocksDBStore.cc index 4b7b2b98db6d..5b97598ebe12 100644 --- a/src/kv/RocksDBStore.cc +++ b/src/kv/RocksDBStore.cc @@ -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(); diff --git a/src/kv/RocksDBStore.h b/src/kv/RocksDBStore.h index 9b11d9aa84c5..44dce9c92f32 100644 --- a/src/kv/RocksDBStore.h +++ b/src/kv/RocksDBStore.h @@ -313,6 +313,8 @@ public: bufferlist value(); bufferptr value_as_ptr(); int status(); + size_t key_size(); + size_t value_size(); }; /// Utility