aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bitcoin-qt.pro46
-rw-r--r--src/makefile.linux-mingw12
-rw-r--r--src/makefile.mingw12
-rw-r--r--src/makefile.osx12
-rw-r--r--src/makefile.unix12
-rw-r--r--src/test/test_bitcoin.cpp5
-rw-r--r--src/txdb-bdb.cpp171
-rw-r--r--src/txdb-bdb.h61
-rw-r--r--src/txdb-leveldb.h47
-rw-r--r--src/txdb.cpp (renamed from src/txdb-leveldb.cpp)2
-rw-r--r--src/txdb.h49
11 files changed, 78 insertions, 351 deletions
diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro
index d0f535347e..1808fcc3dc 100644
--- a/bitcoin-qt.pro
+++ b/bitcoin-qt.pro
@@ -90,33 +90,23 @@ contains(BITCOIN_NEED_QT_PLUGINS, 1) {
QTPLUGIN += qcncodecs qjpcodecs qtwcodecs qkrcodecs qtaccessiblewidgets
}
-contains(USE_LEVELDB, -) {
- message(Building without LevelDB)
- SOURCES += src/txdb-bdb.cpp
- HEADERS += src/txdb-bdb.h
+INCLUDEPATH += src/leveldb/include src/leveldb/helpers
+LIBS += $$PWD/src/leveldb/libleveldb.a $$PWD/src/leveldb/libmemenv.a
+!windows {
+ genleveldb.commands = cd $$PWD/src/leveldb ; $(MAKE) libleveldb.a libmemenv.a
} else {
- message(Building with LevelDB)
- DEFINES += USE_LEVELDB
- INCLUDEPATH += src/leveldb/include src/leveldb/helpers
- LIBS += $$PWD/src/leveldb/libleveldb.a $$PWD/src/leveldb/libmemenv.a
- SOURCES += src/leveldb.cpp src/txdb-leveldb.cpp
- HEADERS += src/leveldb.h src/txdb-leveldb.h
- !windows {
- genleveldb.commands = cd $$PWD/src/leveldb ; $(MAKE) libleveldb.a libmemenv.a
- } else {
- # make an educated guess about what the ranlib command is called
- isEmpty(QMAKE_RANLIB) {
- QMAKE_RANLIB = $$replace(QMAKE_STRIP, strip, ranlib)
- }
- genleveldb.commands = cd $$PWD/src/leveldb ; CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE CXXFLAGS="-I$$BOOST_INCLUDE_PATH" LDFLAGS="-L$$BOOST_LIB_PATH" $(MAKE) libleveldb.a libmemenv.a ; $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a ; $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a
+ # make an educated guess about what the ranlib command is called
+ isEmpty(QMAKE_RANLIB) {
+ QMAKE_RANLIB = $$replace(QMAKE_STRIP, strip, ranlib)
}
- genleveldb.target = $$PWD/src/leveldb/libleveldb.a
- genleveldb.depends = FORCE
- PRE_TARGETDEPS += $$PWD/src/leveldb/libleveldb.a
- QMAKE_EXTRA_TARGETS += genleveldb
- # Gross ugly hack that depends on qmake internals, unfortunately there's no other way to do it.
- QMAKE_CLEAN += $$PWD/src/leveldb/libleveldb.a; cd $$PWD/src/leveldb ; $(MAKE) clean
+ genleveldb.commands = cd $$PWD/src/leveldb ; CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE CXXFLAGS="-I$$BOOST_INCLUDE_PATH" LDFLAGS="-L$$BOOST_LIB_PATH" $(MAKE) libleveldb.a libmemenv.a ; $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a ; $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a
}
+genleveldb.target = $$PWD/src/leveldb/libleveldb.a
+genleveldb.depends = FORCE
+PRE_TARGETDEPS += $$PWD/src/leveldb/libleveldb.a
+QMAKE_EXTRA_TARGETS += genleveldb
+# Gross ugly hack that depends on qmake internals, unfortunately there's no other way to do it.
+QMAKE_CLEAN += $$PWD/src/leveldb/libleveldb.a; cd $$PWD/src/leveldb ; $(MAKE) clean
# regenerate src/build.h
!windows|contains(USE_BUILD_INFO, 1) {
@@ -202,7 +192,9 @@ HEADERS += src/qt/bitcoingui.h \
src/qt/rpcconsole.h \
src/version.h \
src/netbase.h \
- src/clientversion.h
+ src/clientversion.h \
+ src/txdb.h \
+ src/leveldb.h
SOURCES += src/qt/bitcoin.cpp src/qt/bitcoingui.cpp \
src/qt/transactiontablemodel.cpp \
@@ -262,7 +254,9 @@ SOURCES += src/qt/bitcoin.cpp src/qt/bitcoingui.cpp \
src/qt/notificator.cpp \
src/qt/qtipcserver.cpp \
src/qt/rpcconsole.cpp \
- src/noui.cpp
+ src/noui.cpp \
+ src/leveldb.cpp \
+ src/txdb.cpp
RESOURCES += \
src/qt/bitcoin.qrc
diff --git a/src/makefile.linux-mingw b/src/makefile.linux-mingw
index eee325d624..f4adbb2bff 100644
--- a/src/makefile.linux-mingw
+++ b/src/makefile.linux-mingw
@@ -6,7 +6,6 @@ DEPSDIR:=/usr/i586-mingw32msvc
USE_UPNP:=0
USE_IPV6:=1
-USE_LEVELDB:=1
INCLUDEPATHS= \
-I"$(CURDIR)" \
@@ -83,21 +82,18 @@ OBJS= \
obj/util.o \
obj/wallet.o \
obj/walletdb.o \
- obj/noui.o
+ obj/noui.o \
+ obj/leveldb.o \
+ obj/txdb.o
all: bitcoind.exe
-ifdef USE_LEVELDB
LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a
-DEFS += -I"$(CURDIR)/leveldb/include" -DUSE_LEVELDB
+DEFS += -I"$(CURDIR)/leveldb/include"
DEFS += -I"$(CURDIR)/leveldb/helpers"
-OBJS += obj/leveldb.o obj/txdb-leveldb.o
leveldb/libleveldb.a:
@echo "Building LevelDB ..."; cd leveldb; TARGET_OS=OS_WINDOWS_CROSSCOMPILE CXXFLAGS="-I$(INCLUDEPATHS)" LDFLAGS="-L$(LIBPATHS)" make libleveldb.a libmemenv.a; cd ..
obj/leveldb.o: leveldb/libleveldb.a
-else
-OBJS += obj/txdb-bdb.o
-endif
obj/build.h: FORCE
/bin/sh ../share/genbuild.sh obj/build.h
diff --git a/src/makefile.mingw b/src/makefile.mingw
index 4d95d1c038..89a4f372c5 100644
--- a/src/makefile.mingw
+++ b/src/makefile.mingw
@@ -4,7 +4,6 @@
USE_UPNP:=0
USE_IPV6:=1
-USE_LEVELDB:=1
INCLUDEPATHS= \
-I"C:\boost-1.50.0-mgw" \
@@ -79,7 +78,9 @@ OBJS= \
obj/util.o \
obj/wallet.o \
obj/walletdb.o \
- obj/noui.o
+ obj/noui.o \
+ obj/leveldb.o \
+ obj/txdb.o
all: bitcoind.exe
@@ -90,17 +91,12 @@ test check: test_bitcoin.exe FORCE
#
# LevelDB support
#
-ifdef USE_LEVELDB
LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a
-DEFS += $(addprefix -I,$(CURDIR)/leveldb/include) -DUSE_LEVELDB
+DEFS += $(addprefix -I,$(CURDIR)/leveldb/include)
DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers)
-OBJS += obj/leveldb.o obj/txdb-leveldb.o
leveldb/libleveldb.a:
cd leveldb; make libleveldb.a libmemenv.a; cd ..
obj/leveldb.o: leveldb/libleveldb.lib
-else
-OBJS += obj/txdb-bdb.o
-endif
obj/%.o: %.cpp $(HEADERS)
g++ -c $(CFLAGS) -o $@ $<
diff --git a/src/makefile.osx b/src/makefile.osx
index 9a9296f412..f3e17d0d13 100644
--- a/src/makefile.osx
+++ b/src/makefile.osx
@@ -21,7 +21,6 @@ LIBPATHS= \
USE_UPNP:=1
USE_IPV6:=1
-USE_LEVELDB:=1
LIBS= -dead_strip
@@ -97,7 +96,9 @@ OBJS= \
obj/util.o \
obj/wallet.o \
obj/walletdb.o \
- obj/noui.o
+ obj/noui.o \
+ obj/leveldb.o \
+ obj/txdb.o
ifndef USE_UPNP
override USE_UPNP = -
@@ -123,17 +124,12 @@ test check: test_bitcoin FORCE
#
# LevelDB support
#
-ifdef USE_LEVELDB
LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a
-DEFS += $(addprefix -I,$(CURDIR)/leveldb/include) -DUSE_LEVELDB
+DEFS += $(addprefix -I,$(CURDIR)/leveldb/include)
DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers)
-OBJS += obj/leveldb.o obj/txdb-leveldb.o
leveldb/libleveldb.a:
@echo "Building LevelDB ..."; cd leveldb; make libleveldb.a libmemenv.a; cd ..
obj/leveldb.o: leveldb/libleveldb.a
-else
-OBJS += obj/txdb-bdb.o
-endif
# auto-generated dependencies:
-include obj/*.P
diff --git a/src/makefile.unix b/src/makefile.unix
index 95234bae2a..df05f7990a 100644
--- a/src/makefile.unix
+++ b/src/makefile.unix
@@ -4,7 +4,6 @@
USE_UPNP:=0
USE_IPV6:=1
-USE_LEVELDB:=1
LINK:=$(CXX)
@@ -128,7 +127,9 @@ OBJS= \
obj/util.o \
obj/wallet.o \
obj/walletdb.o \
- obj/noui.o
+ obj/noui.o \
+ obj/leveldb.o \
+ obj/txdb.o
all: bitcoind
@@ -139,17 +140,12 @@ test check: test_bitcoin FORCE
#
# LevelDB support
#
-ifdef USE_LEVELDB
LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a
-DEFS += $(addprefix -I,$(CURDIR)/leveldb/include) -DUSE_LEVELDB
+DEFS += $(addprefix -I,$(CURDIR)/leveldb/include)
DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers)
-OBJS += obj/leveldb.o obj/txdb-leveldb.o
leveldb/libleveldb.a:
@echo "Building LevelDB ..."; cd leveldb; make libleveldb.a libmemenv.a; cd ..;
obj/leveldb.o: leveldb/libleveldb.a
-else
-OBJS += obj/txdb-bdb.o
-endif
# auto-generated dependencies:
-include obj/*.P
diff --git a/src/test/test_bitcoin.cpp b/src/test/test_bitcoin.cpp
index 0173c0064b..c1f47f786b 100644
--- a/src/test/test_bitcoin.cpp
+++ b/src/test/test_bitcoin.cpp
@@ -19,13 +19,8 @@ struct TestingSetup {
fPrintToDebugger = true; // don't want to write to debug.log file
noui_connect();
bitdb.MakeMock();
-#ifdef USE_LEVELDB
pblocktree = new CBlockTreeDB(true);
pcoinsdbview = new CCoinsViewDB(true);
-#else
- pblocktree = new CBlockTreeDB();
- pcoinsdbview = new CCoinsViewDB();
-#endif
pcoinsTip = new CCoinsViewCache(*pcoinsdbview);
LoadBlockIndex(true);
bool fFirstRun;
diff --git a/src/txdb-bdb.cpp b/src/txdb-bdb.cpp
deleted file mode 100644
index 8954b8b30a..0000000000
--- a/src/txdb-bdb.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-// 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.
-
-#include "txdb-bdb.h"
-
-bool CCoinsDB::HaveCoins(uint256 hash) {
- assert(!fClient);
- return Exists(make_pair('c', hash));
-}
-
-bool CCoinsDB::ReadCoins(uint256 hash, CCoins &coins) {
- assert(!fClient);
- return Read(make_pair('c', hash), coins);
-}
-
-bool CCoinsDB::WriteCoins(uint256 hash, const CCoins &coins) {
- assert(!fClient);
- if (coins.IsPruned())
- return Erase(make_pair('c', hash));
- else
- return Write(make_pair('c', hash), coins);
-}
-
-bool CCoinsDB::ReadHashBestChain(uint256& hashBestChain)
-{
- return Read('B', hashBestChain);
-}
-
-bool CCoinsDB::WriteHashBestChain(uint256 hashBestChain)
-{
- return Write('B', hashBestChain);
-}
-
-bool CBlockTreeDB::WriteBlockIndex(const CDiskBlockIndex& blockindex)
-{
- return Write(make_pair('b', blockindex.GetBlockHash()), blockindex);
-}
-
-bool CBlockTreeDB::ReadBestInvalidWork(CBigNum& bnBestInvalidWork)
-{
- return Read('I', bnBestInvalidWork);
-}
-
-bool CBlockTreeDB::WriteBestInvalidWork(CBigNum bnBestInvalidWork)
-{
- return Write('I', bnBestInvalidWork);
-}
-
-bool CBlockTreeDB::WriteBlockFileInfo(int nFile, const CBlockFileInfo &info) {
- return Write(make_pair('f', nFile), info);
-}
-
-bool CBlockTreeDB::ReadBlockFileInfo(int nFile, CBlockFileInfo &info) {
- return Read(make_pair('f', nFile), info);
-}
-
-bool CBlockTreeDB::WriteLastBlockFile(int nFile) {
- return Write('l', nFile);
-}
-
-bool CBlockTreeDB::ReadLastBlockFile(int &nFile) {
- return Read('l', nFile);
-}
-
-CCoinsViewDB::CCoinsViewDB() : db() {}
-bool CCoinsViewDB::GetCoins(uint256 txid, CCoins &coins) { return db.ReadCoins(txid, coins); }
-bool CCoinsViewDB::SetCoins(uint256 txid, const CCoins &coins) { return db.WriteCoins(txid, coins); }
-bool CCoinsViewDB::HaveCoins(uint256 txid) { return db.HaveCoins(txid); }
-CBlockIndex *CCoinsViewDB::GetBestBlock() {
- uint256 hashBestChain;
- if (!db.ReadHashBestChain(hashBestChain))
- return NULL;
- std::map<uint256, CBlockIndex*>::iterator it = mapBlockIndex.find(hashBestChain);
- if (it == mapBlockIndex.end())
- return NULL;
- return it->second;
-}
-bool CCoinsViewDB::SetBestBlock(CBlockIndex *pindex) { return db.WriteHashBestChain(pindex->GetBlockHash()); }
-bool CCoinsViewDB::BatchWrite(const std::map<uint256, CCoins> &mapCoins, CBlockIndex *pindex) {
- printf("Committing %u changed transactions to coin database...\n", (unsigned int)mapCoins.size());
-
- if (!db.TxnBegin())
- return false;
- bool fOk = true;
- for (std::map<uint256, CCoins>::const_iterator it = mapCoins.begin(); it != mapCoins.end(); it++) {
- fOk = db.WriteCoins(it->first, it->second);
- if (!fOk)
- break;
- }
- if (fOk)
- fOk = db.WriteHashBestChain(pindex->GetBlockHash());
-
- if (!fOk)
- db.TxnAbort();
- else
- fOk = db.TxnCommit();
-
- return fOk;
-}
-
-
-bool CBlockTreeDB::LoadBlockIndexGuts()
-{
- // Get database cursor
- Dbc* pcursor = GetCursor();
- if (!pcursor)
- return false;
-
- // Load mapBlockIndex
- unsigned int fFlags = DB_SET_RANGE;
- loop
- {
- // Read next record
- CDataStream ssKey(SER_DISK, CLIENT_VERSION);
- if (fFlags == DB_SET_RANGE)
- ssKey << make_pair('b', uint256(0));
- CDataStream ssValue(SER_DISK, CLIENT_VERSION);
- int ret = ReadAtCursor(pcursor, ssKey, ssValue, fFlags);
- fFlags = DB_NEXT;
- if (ret == DB_NOTFOUND)
- break;
- else if (ret != 0)
- return false;
-
- // Unserialize
-
- try {
- char chType;
- ssKey >> chType;
- if (chType == 'b' && !fRequestShutdown)
- {
- CDiskBlockIndex diskindex;
- ssValue >> diskindex;
-
- // Construct block index object
- CBlockIndex* pindexNew = InsertBlockIndex(diskindex.GetBlockHash());
- pindexNew->pprev = InsertBlockIndex(diskindex.hashPrev);
- pindexNew->nHeight = diskindex.nHeight;
- pindexNew->nFile = diskindex.nFile;
- pindexNew->nDataPos = diskindex.nDataPos;
- pindexNew->nUndoPos = diskindex.nUndoPos;
- pindexNew->nVersion = diskindex.nVersion;
- pindexNew->hashMerkleRoot = diskindex.hashMerkleRoot;
- pindexNew->nTime = diskindex.nTime;
- pindexNew->nBits = diskindex.nBits;
- pindexNew->nNonce = diskindex.nNonce;
- pindexNew->nStatus = diskindex.nStatus;
- pindexNew->nTx = diskindex.nTx;
-
- // Watch for genesis block
- if (pindexGenesisBlock == NULL && diskindex.GetBlockHash() == hashGenesisBlock)
- pindexGenesisBlock = pindexNew;
-
- if (!pindexNew->CheckIndex())
- return error("LoadBlockIndex() : CheckIndex failed: %s", pindexNew->ToString().c_str());
- }
- else
- {
- break; // if shutdown requested or finished loading block index
- }
- } // try
- catch (std::exception &e) {
- return error("%s() : deserialize error", __PRETTY_FUNCTION__);
- }
- }
- pcursor->close();
-
- return true;
-}
diff --git a/src/txdb-bdb.h b/src/txdb-bdb.h
deleted file mode 100644
index 3e8d40c274..0000000000
--- a/src/txdb-bdb.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// 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() : CDB("coins.dat", "cr+") { }
-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() : CDB("blktree.dat", "cr+") { }
-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
diff --git a/src/txdb-leveldb.h b/src/txdb-leveldb.h
deleted file mode 100644
index 123ec00d23..0000000000
--- a/src/txdb-leveldb.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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 fMemory = false);
-
- 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);
- bool GetStats(CCoinsStats &stats);
-};
-
-/** Access to the block database (blktree/) */
-class CBlockTreeDB : public CLevelDB
-{
-public:
- CBlockTreeDB(bool fMemory = 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 LoadBlockIndexGuts();
-};
-
-#endif // BITCOIN_TXDB_LEVELDB_H
diff --git a/src/txdb-leveldb.cpp b/src/txdb.cpp
index 7c72ccac02..67d15cb58f 100644
--- a/src/txdb-leveldb.cpp
+++ b/src/txdb.cpp
@@ -3,7 +3,7 @@
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
-#include "txdb-leveldb.h"
+#include "txdb.h"
#include "main.h"
using namespace std;
diff --git a/src/txdb.h b/src/txdb.h
index e21a1e6774..123ec00d23 100644
--- a/src/txdb.h
+++ b/src/txdb.h
@@ -2,13 +2,46 @@
// 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_H
-#define BITCOIN_TXDB_H
+#ifndef BITCOIN_TXDB_LEVELDB_H
+#define BITCOIN_TXDB_LEVELDB_H
-#ifdef USE_LEVELDB
-#include "txdb-leveldb.h"
-#else
-#include "txdb-bdb.h"
-#endif
+#include "main.h"
+#include "leveldb.h"
-#endif // BITCOIN_TXDB_H
+/** CCoinsView backed by the LevelDB coin database (coins/) */
+class CCoinsViewDB : public CCoinsView
+{
+protected:
+ CLevelDB db;
+public:
+ CCoinsViewDB(bool fMemory = false);
+
+ 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);
+ bool GetStats(CCoinsStats &stats);
+};
+
+/** Access to the block database (blktree/) */
+class CBlockTreeDB : public CLevelDB
+{
+public:
+ CBlockTreeDB(bool fMemory = 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 LoadBlockIndexGuts();
+};
+
+#endif // BITCOIN_TXDB_LEVELDB_H