// 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 (chainstate/) */ class CCoinsViewDB : public CCoinsView { protected: CLevelDB db; public: CCoinsViewDB(size_t nCacheSize, bool fMemory = false, bool fWipe = false); /* bool GetCoins(const uint256 &txid, CCoins &coins); bool SetCoins(const uint256 &txid, const CCoins &coins); bool HaveCoins(const uint256 &txid); */ CBlockIndex *GetBestBlock(); bool SetBestBlock(CBlockIndex *pindex); bool BatchWrite(const std::map &mapCoins, CBlockIndex *pindex); bool GetStats(CCoinsStats &stats); }; /** Access to the block database (blocks/index/) */ class CBlockTreeDB : public CLevelDB { public: CBlockTreeDB(size_t nCacheSize, bool fMemory = false, bool fWipe = false); 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 WriteReindexing(bool fReindex); bool ReadReindexing(bool &fReindex); bool ReadTxIndex(const uint256 &txid, CDiskTxPos &pos); bool HaveTxIndex(const uint256 &txid); bool EraseTxIndex(const uint256 &txid); bool WriteTxIndex(const std::vector > &list); bool WriteFlag(const std::string &name, bool fValue); bool ReadFlag(const std::string &name, bool &fValue); bool WritePartialNameTree(const std::string &partialName, const std::string &nextChars); bool ReadPartialNameTree(const std::string &partialName, std::string &nextChars); bool AddCharToPartialNameTree(const std::string &partialName, char ch); bool AddNameToPartialNameTree(const std::string &name); void GetNamesFromPartial(const std::string &partial, std::set< std::string > &names, size_t count); bool LoadBlockIndexGuts(); }; #endif // BITCOIN_TXDB_LEVELDB_H