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();
|
||||
}
|
||||
|
||||
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)
|
||||
{ // returns true if transaction was added
|
||||
boost::recursive_mutex::scoped_lock ml(mLock);
|
||||
|
||||
@@ -26,6 +26,7 @@ protected:
|
||||
TransactionEngine mEngine;
|
||||
|
||||
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 mValidLedger; // The highest-sequence ledger we have fully accepted
|
||||
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
|
||||
Ledger::ref getCurrentLedger() { return mCurrentLedger; }
|
||||
|
||||
// An immutable snapshot of the current ledger
|
||||
Ledger::ref getCurrentSnapshot();
|
||||
|
||||
// The finalized ledger is the last closed/accepted ledger
|
||||
Ledger::ref getClosedLedger() { return mFinalizedLedger; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user