LevelDB block and coin databases
Split off CBlockTreeDB and CCoinsViewDB into txdb-*.{cpp,h} files,
implemented by either LevelDB or BDB.
Based on code from earlier commits by Mike Hearn in his leveldb
branch.
This commit is contained in:
46
src/txdb-leveldb.h
Normal file
46
src/txdb-leveldb.h
Normal file
@@ -0,0 +1,46 @@
|
||||
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||
// Copyright (c) 2009-2012 The Bitcoin developers
|
||||
// Distributed under the MIT/X11 software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
#ifndef BITCOIN_TXDB_LEVELDB_H
|
||||
#define BITCOIN_TXDB_LEVELDB_H
|
||||
|
||||
#include "main.h"
|
||||
#include "leveldb.h"
|
||||
|
||||
/** CCoinsView backed by the LevelDB coin database (coins/) */
|
||||
class CCoinsViewDB : public CCoinsView
|
||||
{
|
||||
protected:
|
||||
CLevelDB db;
|
||||
public:
|
||||
CCoinsViewDB();
|
||||
|
||||
bool GetCoins(uint256 txid, CCoins &coins);
|
||||
bool SetCoins(uint256 txid, const CCoins &coins);
|
||||
bool HaveCoins(uint256 txid);
|
||||
CBlockIndex *GetBestBlock();
|
||||
bool SetBestBlock(CBlockIndex *pindex);
|
||||
bool BatchWrite(const std::map<uint256, CCoins> &mapCoins, CBlockIndex *pindex);
|
||||
};
|
||||
|
||||
/** Access to the block database (blktree/) */
|
||||
class CBlockTreeDB : public CLevelDB
|
||||
{
|
||||
public:
|
||||
CBlockTreeDB(const char* pszMode="r+") : CLevelDB(GetDataDir() / "blktree") { }
|
||||
private:
|
||||
CBlockTreeDB(const CBlockTreeDB&);
|
||||
void operator=(const CBlockTreeDB&);
|
||||
public:
|
||||
bool WriteBlockIndex(const CDiskBlockIndex& blockindex);
|
||||
bool ReadBestInvalidWork(CBigNum& bnBestInvalidWork);
|
||||
bool WriteBestInvalidWork(const CBigNum& bnBestInvalidWork);
|
||||
bool ReadBlockFileInfo(int nFile, CBlockFileInfo &fileinfo);
|
||||
bool WriteBlockFileInfo(int nFile, const CBlockFileInfo &fileinfo);
|
||||
bool ReadLastBlockFile(int &nFile);
|
||||
bool WriteLastBlockFile(int nFile);
|
||||
bool LoadBlockIndexGuts();
|
||||
};
|
||||
|
||||
#endif // BITCOIN_TXDB_LEVELDB_H
|
||||
Reference in New Issue
Block a user