diff --git a/src/cpp/ripple/Application.cpp b/src/cpp/ripple/Application.cpp index a9ff4ce79..e088f91f9 100644 --- a/src/cpp/ripple/Application.cpp +++ b/src/cpp/ripple/Application.cpp @@ -45,8 +45,8 @@ DatabaseCon::~DatabaseCon() Application::Application() : mIOWork(mIOService), mAuxWork(mAuxService), mUNL(mIOService), mNetOps(mIOService, &mLedgerMaster), mTempNodeCache("NodeCache", 16384, 90), mHashedObjectStore(16384, 300), mSLECache("LedgerEntryCache", 4096, 120), - mSNTPClient(mAuxService), mFeeTrack(), - mRpcDB(NULL), mTxnDB(NULL), mLedgerDB(NULL), mWalletDB(NULL), mHashNodeDB(NULL), mNetNodeDB(NULL), + mSNTPClient(mAuxService), mFeeTrack(), mRpcDB(NULL), mTxnDB(NULL), mLedgerDB(NULL), mWalletDB(NULL), + mHashNodeDB(NULL), mNetNodeDB(NULL), mPathFindDB(NULL), mConnectionPool(mIOService), mPeerDoor(NULL), mRPCDoor(NULL), mWSPublicDoor(NULL), mWSPrivateDoor(NULL), mSweepTimer(mAuxService), mShutdown(false) { @@ -54,8 +54,10 @@ Application::Application() : getRand(reinterpret_cast(&mNonceST), sizeof(mNonceST)); } -extern const char *RpcDBInit[], *TxnDBInit[], *LedgerDBInit[], *WalletDBInit[], *HashNodeDBInit[], *NetNodeDBInit[]; -extern int RpcDBCount, TxnDBCount, LedgerDBCount, WalletDBCount, HashNodeDBCount, NetNodeDBCount; +extern const char *RpcDBInit[], *TxnDBInit[], *LedgerDBInit[], *WalletDBInit[], *HashNodeDBInit[], + *NetNodeDBInit[], *PathFindDBInit[]; +extern int RpcDBCount, TxnDBCount, LedgerDBCount, WalletDBCount, HashNodeDBCount, + NetNodeDBCount, PathFindDBCount; bool Instance::running = true; void Application::stop() @@ -124,10 +126,14 @@ void Application::setup() boost::thread t1(boost::bind(&InitDB, &mRpcDB, "rpc.db", RpcDBInit, RpcDBCount)); boost::thread t2(boost::bind(&InitDB, &mTxnDB, "transaction.db", TxnDBInit, TxnDBCount)); boost::thread t3(boost::bind(&InitDB, &mLedgerDB, "ledger.db", LedgerDBInit, LedgerDBCount)); + t1.join(); t2.join(); t3.join(); + boost::thread t4(boost::bind(&InitDB, &mWalletDB, "wallet.db", WalletDBInit, WalletDBCount)); boost::thread t5(boost::bind(&InitDB, &mHashNodeDB, "hashnode.db", HashNodeDBInit, HashNodeDBCount)); boost::thread t6(boost::bind(&InitDB, &mNetNodeDB, "netnode.db", NetNodeDBInit, NetNodeDBCount)); - t1.join(); t2.join(); t3.join(); t4.join(); t5.join(); t6.join(); + boost::thread t7(boost::bind(&InitDB, &mPathFindDB, "pathfind.db", PathFindDBInit, PathFindDBCount)); + t4.join(); t5.join(); t6.join(); t7.join(); + mTxnDB->getDB()->setupCheckpointing(&mJobQueue); mLedgerDB->getDB()->setupCheckpointing(&mJobQueue); mHashNodeDB->getDB()->setupCheckpointing(&mJobQueue); @@ -319,6 +325,7 @@ Application::~Application() delete mWalletDB; delete mHashNodeDB; delete mNetNodeDB; + delete mPathFindDB; } void Application::startNewLedger() diff --git a/src/cpp/ripple/Application.h b/src/cpp/ripple/Application.h index 48e58d97a..8f793ba82 100644 --- a/src/cpp/ripple/Application.h +++ b/src/cpp/ripple/Application.h @@ -70,7 +70,7 @@ class Application TXQueue mTxnQueue; OrderBookDB mOrderBookDB; - DatabaseCon *mRpcDB, *mTxnDB, *mLedgerDB, *mWalletDB, *mHashNodeDB, *mNetNodeDB; + DatabaseCon *mRpcDB, *mTxnDB, *mLedgerDB, *mWalletDB, *mHashNodeDB, *mNetNodeDB, *mPathFindDB; ConnectionPool mConnectionPool; PeerDoor* mPeerDoor; @@ -136,6 +136,7 @@ public: DatabaseCon* getWalletDB() { return mWalletDB; } DatabaseCon* getHashNodeDB() { return mHashNodeDB; } DatabaseCon* getNetNodeDB() { return mNetNodeDB; } + DatabaseCon* getPathFindDB() { return mPathFindDB; } uint256 getNonce256() { return mNonce256; } std::size_t getNonceST() { return mNonceST; } diff --git a/src/cpp/ripple/DBInit.cpp b/src/cpp/ripple/DBInit.cpp index 4e2884b23..16bebd573 100644 --- a/src/cpp/ripple/DBInit.cpp +++ b/src/cpp/ripple/DBInit.cpp @@ -288,7 +288,38 @@ const char *NetNodeDBInit[] = { );" }; - int NetNodeDBCount = NUMBER(NetNodeDBInit); +const char *PathFindDBInit[] = { + "PRAGMA synchronous = OFF; ", + + "DROP TABLE TrustLines; ", + + "CREATE TABLE TrustLines { " + "To CHARACTER(40), " // Hex of account trusted + "By CHARACTER(40), " // Hex of account trusting + "Currency CHARACTER(80), " // Hex currency, hex issuer + "Use INTEGER, " // Use count + "Seq BIGINT UNSIGNED " // Sequence when use count was updated + "}; ", + + "CREATE INDEX TLBy ON TrustLines(By, Currency, Use);", + "CREATE INDEX TLTo ON TrustLines(To, Currency, Use);", + + "DROP TABLE Exchanges;", + + "CREATE TABLE Exchanges { " + "From CHARACTER(80), " + "To CHARACTER(80), " + "Currency CHARACTER(80), " + "Use INTEGER, " + "Seq BIGINT UNSIGNED " + "}; ", + + "CREATE INDEX ExBy ON Exchanges(By, Currency, Use);", + "CREATE INDEX ExTo ON Exchanges(To, Currency, Use);", +}; + +int PathFindDBCount = NUMBER(PathFindDBInit); + // vim:ts=4