mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 23:09:44 -04: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
3 changed files with 23 additions and 1 deletions
|
@ -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)
|
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;
|
penv = nullptr;
|
||||||
readoptions.verify_checksums = true;
|
readoptions.verify_checksums = true;
|
||||||
|
|
|
@ -39,6 +39,10 @@ public:
|
||||||
|
|
||||||
class CDBWrapper;
|
class CDBWrapper;
|
||||||
|
|
||||||
|
namespace dbwrapper {
|
||||||
|
using leveldb::DestroyDB;
|
||||||
|
}
|
||||||
|
|
||||||
/** These should be considered an implementation detail of the specific database.
|
/** These should be considered an implementation detail of the specific database.
|
||||||
*/
|
*/
|
||||||
namespace dbwrapper_private {
|
namespace dbwrapper_private {
|
||||||
|
@ -219,6 +223,12 @@ private:
|
||||||
|
|
||||||
std::vector<unsigned char> CreateObfuscateKey() const;
|
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:
|
public:
|
||||||
/**
|
/**
|
||||||
* @param[in] path Location in the filesystem where leveldb data will be stored.
|
* @param[in] path Location in the filesystem where leveldb data will be stored.
|
||||||
|
@ -268,6 +278,14 @@ public:
|
||||||
return WriteBatch(batch, fSync);
|
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>
|
template <typename K>
|
||||||
bool Exists(const K& key) const
|
bool Exists(const K& key) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include <coins.h>
|
#include <coins.h>
|
||||||
#include <dbwrapper.h>
|
#include <dbwrapper.h>
|
||||||
#include <sync.h>
|
#include <sync.h>
|
||||||
|
#include <fs.h>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <optional>
|
#include <optional>
|
||||||
|
@ -72,6 +73,9 @@ public:
|
||||||
|
|
||||||
//! Dynamically alter the underlying leveldb cache size.
|
//! Dynamically alter the underlying leveldb cache size.
|
||||||
void ResizeCache(size_t new_cache_size) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
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/) */
|
/** Access to the block database (blocks/index/) */
|
||||||
|
|
Loading…
Add table
Reference in a new issue