diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2012-09-03 21:14:03 +0200 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2012-10-20 23:08:57 +0200 |
commit | 2d8a48292b0da96cda8d7b45a24a22adfb4667b2 (patch) | |
tree | 351935f27dcd037d68d514c3a79ff5d2d24da367 /src/txdb-bdb.h | |
parent | 44d40f26dcc73469bfbfda5f981c2c528d592ac7 (diff) |
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.
Diffstat (limited to 'src/txdb-bdb.h')
-rw-r--r-- | src/txdb-bdb.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/txdb-bdb.h b/src/txdb-bdb.h new file mode 100644 index 0000000000..d61e95bac2 --- /dev/null +++ b/src/txdb-bdb.h @@ -0,0 +1,61 @@ +// 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_BDB_H +#define BITCOIN_TXDB_BDB_H + +#include "db.h" + +/** Access to the transaction database (coins.dat) */ +class CCoinsDB : public CDB +{ +public: + CCoinsDB(const char* pszMode="r+") : CDB("coins.dat", pszMode) { } +private: + CCoinsDB(const CCoinsDB&); + void operator=(const CCoinsDB&); +public: + bool ReadCoins(uint256 hash, CCoins &coins); + bool WriteCoins(uint256 hash, const CCoins& coins); + bool HaveCoins(uint256 hash); + bool ReadHashBestChain(uint256& hashBestChain); + bool WriteHashBestChain(uint256 hashBestChain); +}; + +/** CCoinsView backed by a CCoinsDB */ +class CCoinsViewDB : public CCoinsView +{ +protected: + CCoinsDB 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.dat) */ +class CBlockTreeDB : public CDB +{ +public: + CBlockTreeDB(const char* pszMode="r+") : CDB("blktree.dat", pszMode) { } +private: + CBlockTreeDB(const CBlockTreeDB&); + void operator=(const CBlockTreeDB&); +public: + bool WriteBlockIndex(const CDiskBlockIndex& blockindex); + bool ReadBestInvalidWork(CBigNum& bnBestInvalidWork); + bool WriteBestInvalidWork(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_BDB_H |