mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
LedgerMaster keeps cached snapshot of the current ledger.
This commit is contained in:
@@ -18,6 +18,14 @@ uint32 LedgerMaster::getCurrentLedgerIndex()
|
|||||||
return mCurrentLedger->getLedgerSeq();
|
return mCurrentLedger->getLedgerSeq();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ledger::ref LedgerMaster::getCurrentSnapshot()
|
||||||
|
{
|
||||||
|
if (!mCurrentSnapshot || (mCurrentSnapshot->getHash() != mCurrentLedger->getHash()))
|
||||||
|
mCurrentSnapshot = boost::make_shared<Ledger>(boost::ref(*mCurrentLedger), false);
|
||||||
|
assert(mCurrentSnapshot->isImmutable());
|
||||||
|
return mCurrentSnapshot;
|
||||||
|
}
|
||||||
|
|
||||||
void LedgerMaster::addHeldTransaction(Transaction::ref transaction)
|
void LedgerMaster::addHeldTransaction(Transaction::ref transaction)
|
||||||
{ // returns true if transaction was added
|
{ // returns true if transaction was added
|
||||||
boost::recursive_mutex::scoped_lock ml(mLock);
|
boost::recursive_mutex::scoped_lock ml(mLock);
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ protected:
|
|||||||
TransactionEngine mEngine;
|
TransactionEngine mEngine;
|
||||||
|
|
||||||
Ledger::pointer mCurrentLedger; // The ledger we are currently processiong
|
Ledger::pointer mCurrentLedger; // The ledger we are currently processiong
|
||||||
|
Ledger::pointer mCurrentSnapshot; // Snapshot of the current ledger
|
||||||
Ledger::pointer mFinalizedLedger; // The ledger that most recently closed
|
Ledger::pointer mFinalizedLedger; // The ledger that most recently closed
|
||||||
Ledger::pointer mValidLedger; // The highest-sequence ledger we have fully accepted
|
Ledger::pointer mValidLedger; // The highest-sequence ledger we have fully accepted
|
||||||
Ledger::pointer mPubLedger; // The last ledger we have published
|
Ledger::pointer mPubLedger; // The last ledger we have published
|
||||||
@@ -74,6 +75,9 @@ public:
|
|||||||
// The current ledger is the ledger we believe new transactions should go in
|
// The current ledger is the ledger we believe new transactions should go in
|
||||||
Ledger::ref getCurrentLedger() { return mCurrentLedger; }
|
Ledger::ref getCurrentLedger() { return mCurrentLedger; }
|
||||||
|
|
||||||
|
// An immutable snapshot of the current ledger
|
||||||
|
Ledger::ref getCurrentSnapshot();
|
||||||
|
|
||||||
// The finalized ledger is the last closed/accepted ledger
|
// The finalized ledger is the last closed/accepted ledger
|
||||||
Ledger::ref getClosedLedger() { return mFinalizedLedger; }
|
Ledger::ref getClosedLedger() { return mFinalizedLedger; }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user