mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-02-17 10:59:27 +00:00
Use to simplify code determining the chainstate leveldb paths. New method is the now the only code that needs to figure out the storage path, so the path doesn't need to be constructed multiple places and backed out of leveldb.
59 lines
1.8 KiB
C++
59 lines
1.8 KiB
C++
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
// Copyright (c) 2009-2022 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_TXDB_H
|
|
#define BITCOIN_TXDB_H
|
|
|
|
#include <coins.h>
|
|
#include <dbwrapper.h>
|
|
#include <kernel/caches.h>
|
|
#include <kernel/cs_main.h>
|
|
#include <sync.h>
|
|
#include <util/fs.h>
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
#include <memory>
|
|
#include <optional>
|
|
#include <vector>
|
|
|
|
class COutPoint;
|
|
class uint256;
|
|
|
|
//! User-controlled performance and debug options.
|
|
struct CoinsViewOptions {
|
|
//! Maximum database write batch size in bytes.
|
|
size_t batch_write_bytes{DEFAULT_DB_CACHE_BATCH};
|
|
//! If non-zero, randomly exit when the database is flushed with (1/ratio) probability.
|
|
int simulate_crash_ratio{0};
|
|
};
|
|
|
|
/** CCoinsView backed by the coin database (chainstate/) */
|
|
class CCoinsViewDB final : public CCoinsView
|
|
{
|
|
protected:
|
|
DBParams m_db_params;
|
|
CoinsViewOptions m_options;
|
|
std::unique_ptr<CDBWrapper> m_db;
|
|
public:
|
|
explicit CCoinsViewDB(DBParams db_params, CoinsViewOptions options);
|
|
|
|
std::optional<Coin> GetCoin(const COutPoint& outpoint) const override;
|
|
bool HaveCoin(const COutPoint &outpoint) const override;
|
|
uint256 GetBestBlock() const override;
|
|
std::vector<uint256> GetHeadBlocks() const override;
|
|
bool BatchWrite(CoinsViewCacheCursor& cursor, const uint256 &hashBlock) override;
|
|
std::unique_ptr<CCoinsViewCursor> Cursor() const override;
|
|
|
|
//! Whether an unsupported database format is used.
|
|
bool NeedsUpgrade();
|
|
size_t EstimateSize() const override;
|
|
|
|
//! Dynamically alter the underlying leveldb cache size.
|
|
void ResizeCache(size_t new_cache_size) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
|
};
|
|
|
|
#endif // BITCOIN_TXDB_H
|