aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dbwrapper.cpp12
-rw-r--r--src/dbwrapper.h14
2 files changed, 15 insertions, 11 deletions
diff --git a/src/dbwrapper.cpp b/src/dbwrapper.cpp
index fe0a2e66f2..58fd47ce1c 100644
--- a/src/dbwrapper.cpp
+++ b/src/dbwrapper.cpp
@@ -33,6 +33,8 @@
#include <optional>
#include <utility>
+static auto CharCast(const std::byte* data) { return reinterpret_cast<const char*>(data); }
+
bool DestroyDB(const std::string& path_str)
{
return leveldb::DestroyDB(path_str, {}).ok();
@@ -340,6 +342,16 @@ bool CDBWrapper::ExistsImpl(Span<const std::byte> ssKey) const
return true;
}
+size_t CDBWrapper::EstimateSizeImpl(Span<const std::byte> ssKey1, Span<const std::byte> ssKey2) const
+{
+ leveldb::Slice slKey1(CharCast(ssKey1.data()), ssKey1.size());
+ leveldb::Slice slKey2(CharCast(ssKey2.data()), ssKey2.size());
+ uint64_t size = 0;
+ leveldb::Range range(slKey1, slKey2);
+ pdb->GetApproximateSizes(&range, 1, &size);
+ return size;
+}
+
bool CDBWrapper::IsEmpty()
{
std::unique_ptr<CDBIterator> it(NewIterator());
diff --git a/src/dbwrapper.h b/src/dbwrapper.h
index 9756207aec..fa7b6397cb 100644
--- a/src/dbwrapper.h
+++ b/src/dbwrapper.h
@@ -12,17 +12,15 @@
#include <util/fs.h>
#include <cstddef>
-#include <cstdint>
#include <exception>
-#include <leveldb/db.h>
#include <leveldb/options.h>
-#include <leveldb/slice.h>
#include <memory>
#include <optional>
#include <stdexcept>
#include <string>
#include <vector>
namespace leveldb {
+class DB;
class Env;
}
@@ -52,8 +50,6 @@ struct DBParams {
DBOptions options{};
};
-inline auto CharCast(const std::byte* data) { return reinterpret_cast<const char*>(data); }
-
class dbwrapper_error : public std::runtime_error
{
public:
@@ -231,6 +227,7 @@ private:
std::optional<std::string> ReadImpl(Span<const std::byte> ssKey) const;
bool ExistsImpl(Span<const std::byte> ssKey) const;
+ size_t EstimateSizeImpl(Span<const std::byte> ssKey1, Span<const std::byte> ssKey2) const;
public:
CDBWrapper(const DBParams& params);
@@ -312,12 +309,7 @@ public:
ssKey2.reserve(DBWRAPPER_PREALLOC_KEY_SIZE);
ssKey1 << key_begin;
ssKey2 << key_end;
- leveldb::Slice slKey1(CharCast(ssKey1.data()), ssKey1.size());
- leveldb::Slice slKey2(CharCast(ssKey2.data()), ssKey2.size());
- uint64_t size = 0;
- leveldb::Range range(slKey1, slKey2);
- pdb->GetApproximateSizes(&range, 1, &size);
- return size;
+ return EstimateSizeImpl(ssKey1, ssKey2);
}
};