0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-02 09:46:52 -05:00

refactor: Wrap DestroyDB in dbwrapper helper

Wrap leveldb::DestroyDB in a helper function without exposing
leveldb-specifics.

Also, add missing optional include.

The context of this commit is an effort to decouple the dbwrapper header
file from leveldb includes. To this end, the includes are moved to the
dbwrapper implementation file. This is done as part of the kernel
project to reduce the number of required includes for users of the
kernel.
This commit is contained in:
TheCharlatan 2023-07-13 21:17:45 +02:00
parent 42a9110899
commit afc534df9a
No known key found for this signature in database
GPG key ID: 9B79B45691DB4173
3 changed files with 10 additions and 6 deletions

View file

@ -27,6 +27,11 @@
#include <memory>
#include <optional>
bool DestroyDB(const std::string& path_str)
{
return leveldb::DestroyDB(path_str, {}).ok();
}
class CBitcoinLevelDBLogger : public leveldb::Logger {
public:
// This code is adapted from posix_logger.h, which is why it is using vsprintf.

View file

@ -21,6 +21,7 @@
#include <leveldb/slice.h>
#include <leveldb/status.h>
#include <leveldb/write_batch.h>
#include <optional>
#include <stdexcept>
#include <string>
#include <vector>
@ -64,10 +65,6 @@ public:
class CDBWrapper;
namespace dbwrapper {
using leveldb::DestroyDB;
}
/** These should be considered an implementation detail of the specific database.
*/
namespace dbwrapper_private {
@ -82,7 +79,9 @@ void HandleError(const leveldb::Status& status);
*/
const std::vector<unsigned char>& GetObfuscateKey(const CDBWrapper &w);
};
}; // namespace dbwrapper_private
bool DestroyDB(const std::string& path_str);
/** Batch of changes queued to be written to a CDBWrapper */
class CDBBatch

View file

@ -5027,7 +5027,7 @@ static bool DeleteCoinsDBFromDisk(const fs::path db_path, bool is_snapshot)
// We have to destruct before this call leveldb::DB in order to release the db
// lock, otherwise `DestroyDB` will fail. See `leveldb::~DBImpl()`.
const bool destroyed = dbwrapper::DestroyDB(path_str, {}).ok();
const bool destroyed = DestroyDB(path_str);
if (!destroyed) {
LogPrintf("error: leveldb DestroyDB call failed on %s\n", path_str);