diff --git a/src/Application.cpp b/src/Application.cpp index 5f131c1bf3..5f7710f563 100644 --- a/src/Application.cpp +++ b/src/Application.cpp @@ -122,7 +122,6 @@ void Application::run() Ledger::pointer secondLedger = boost::make_shared(firstLedger); mMasterLedger.pushLedger(secondLedger); assert(!!secondLedger->getAccountState(rootAddress)); - mMasterLedger.setSynced(); // temporary mNetOps.setStateTimer(0); diff --git a/src/LedgerMaster.cpp b/src/LedgerMaster.cpp index a198a6a61f..0b13b55ecf 100644 --- a/src/LedgerMaster.cpp +++ b/src/LedgerMaster.cpp @@ -4,10 +4,6 @@ #include "Conversion.h" #include -LedgerMaster::LedgerMaster() : mIsSynced(false) -{ -} - uint32 LedgerMaster::getCurrentLedgerIndex() { return mCurrentLedger->getLedgerSeq(); @@ -35,6 +31,18 @@ void LedgerMaster::pushLedger(Ledger::pointer newLedger) mEngine.setLedger(newLedger); } +void LedgerMaster::pushLedger(Ledger::pointer newLCL, Ledger::pointer newOL) +{ + assert(newLCL->isClosed() && newLCL->isAccepted()); + assert(!newOL->isClosed() && !newOL->isAccepted()); + + ScopedLock sl(mLock); + mLedgerHistory.addAcceptedLedger(newLCL); + mFinalizedLedger = newLCL; + mCurrentLedger = newOL; + mEngine.setLedger(newOL); +} + void LedgerMaster::switchLedgers(Ledger::pointer lastClosed, Ledger::pointer current) { mFinalizedLedger = lastClosed; diff --git a/src/LedgerMaster.h b/src/LedgerMaster.h index 22958af5f6..f180f13c53 100644 --- a/src/LedgerMaster.h +++ b/src/LedgerMaster.h @@ -15,7 +15,6 @@ class LedgerMaster { boost::recursive_mutex mLock; - bool mIsSynced; TransactionEngine mEngine; @@ -32,25 +31,28 @@ class LedgerMaster public: - LedgerMaster(); + LedgerMaster() { ; } uint32 getCurrentLedgerIndex(); - bool isSynced() { return mIsSynced; } - void setSynced() { mIsSynced=true; } - Ledger::pointer getCurrentLedger() { return mCurrentLedger; } - Ledger::pointer getClosedLedger() { return mFinalizedLedger; } + ScopedLock getLock() { return ScopedLock(mLock); } + + Ledger::pointer getCurrentLedger() { return mCurrentLedger; } + Ledger::pointer getClosedLedger() { return mFinalizedLedger; } TransactionEngineResult doTransaction(const SerializedTransaction& txn, TransactionEngineParams params) { return mEngine.applyTransaction(txn, params); } void pushLedger(Ledger::pointer newLedger); + void pushLedger(Ledger::pointer newLCL, Ledger::pointer newOL); void switchLedgers(Ledger::pointer lastClosed, Ledger::pointer newCurrent); Ledger::pointer getLedgerBySeq(uint32 index) { - if (mCurrentLedger && (mCurrentLedger->getLedgerSeq()==index)) return mCurrentLedger; - if (mFinalizedLedger && (mFinalizedLedger->getLedgerSeq()==index)) return mFinalizedLedger; + if (mCurrentLedger && (mCurrentLedger->getLedgerSeq() == index)) + return mCurrentLedger; + if (mFinalizedLedger && (mFinalizedLedger->getLedgerSeq() == index)) + return mFinalizedLedger; return mLedgerHistory.getLedgerBySeq(index); } @@ -62,8 +64,6 @@ public: } bool addHeldTransaction(Transaction::pointer trans); - uint64 getBalance(std::string& strAcctID, const uint160 currency = 0); - uint64 getBalance(const NewcoinAddress& acctID, const uint160 currency = 0); }; #endif