mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-07 19:48:58 +02:00
db: add StoragePath to CDBWrapper/CCoinsViewDB
This is used in subsequent commits. It allows us to clean up UTXO snapshot chainstate after background validation completes.
This commit is contained in:
parent
29d540b7ad
commit
d14bebf100
@ -128,7 +128,7 @@ static leveldb::Options GetOptions(size_t nCacheSize)
|
||||
}
|
||||
|
||||
CDBWrapper::CDBWrapper(const fs::path& path, size_t nCacheSize, bool fMemory, bool fWipe, bool obfuscate)
|
||||
: m_name{fs::PathToString(path.stem())}
|
||||
: m_name{fs::PathToString(path.stem())}, m_path{path}, m_is_memory{fMemory}
|
||||
{
|
||||
penv = nullptr;
|
||||
readoptions.verify_checksums = true;
|
||||
|
@ -39,6 +39,10 @@ public:
|
||||
|
||||
class CDBWrapper;
|
||||
|
||||
namespace dbwrapper {
|
||||
using leveldb::DestroyDB;
|
||||
}
|
||||
|
||||
/** These should be considered an implementation detail of the specific database.
|
||||
*/
|
||||
namespace dbwrapper_private {
|
||||
@ -219,6 +223,12 @@ private:
|
||||
|
||||
std::vector<unsigned char> CreateObfuscateKey() const;
|
||||
|
||||
//! path to filesystem storage
|
||||
const fs::path m_path;
|
||||
|
||||
//! whether or not the database resides in memory
|
||||
bool m_is_memory;
|
||||
|
||||
public:
|
||||
/**
|
||||
* @param[in] path Location in the filesystem where leveldb data will be stored.
|
||||
@ -268,6 +278,14 @@ public:
|
||||
return WriteBatch(batch, fSync);
|
||||
}
|
||||
|
||||
//! @returns filesystem path to the on-disk data.
|
||||
std::optional<fs::path> StoragePath() {
|
||||
if (m_is_memory) {
|
||||
return {};
|
||||
}
|
||||
return m_path;
|
||||
}
|
||||
|
||||
template <typename K>
|
||||
bool Exists(const K& key) const
|
||||
{
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include <coins.h>
|
||||
#include <dbwrapper.h>
|
||||
#include <sync.h>
|
||||
#include <fs.h>
|
||||
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
@ -72,6 +73,9 @@ public:
|
||||
|
||||
//! Dynamically alter the underlying leveldb cache size.
|
||||
void ResizeCache(size_t new_cache_size) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
||||
|
||||
//! @returns filesystem path to on-disk storage or std::nullopt if in memory.
|
||||
std::optional<fs::path> StoragePath() { return m_db->StoragePath(); }
|
||||
};
|
||||
|
||||
/** Access to the block database (blocks/index/) */
|
||||
|
Loading…
x
Reference in New Issue
Block a user