mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
New wobble handling.
This commit is contained in:
@@ -85,11 +85,13 @@ public:
|
||||
uint64 totCoins, uint64 timeStamp, uint32 ledgerSeq); // used for database ledgers
|
||||
Ledger(const std::vector<unsigned char>& rawLedger);
|
||||
Ledger(const std::string& rawLedger);
|
||||
Ledger(Ledger::pointer previous); // ledger after this one
|
||||
Ledger(bool fromAccepted, Ledger& previous); // ledger after this one
|
||||
Ledger(Ledger& target, bool isMutable); // snapshot
|
||||
|
||||
void updateHash();
|
||||
void setClosed() { mClosed = true; }
|
||||
void setAccepted() { mAccepted = true; }
|
||||
void setImmutable() { mImmutable = true; }
|
||||
bool isClosed() { return mClosed; }
|
||||
bool isAccepted() { return mAccepted; }
|
||||
|
||||
@@ -118,6 +120,7 @@ public:
|
||||
// low level functions
|
||||
SHAMap::pointer peekTransactionMap() { return mTransactionMap; }
|
||||
SHAMap::pointer peekAccountStateMap() { return mAccountStateMap; }
|
||||
Ledger::pointer snapShot(bool isMutable);
|
||||
|
||||
// ledger sync functions
|
||||
void setAcquiring(void);
|
||||
@@ -129,8 +132,6 @@ public:
|
||||
bool hasTransaction(const uint256& TransID) const;
|
||||
Transaction::pointer getTransaction(const uint256& transID) const;
|
||||
|
||||
Ledger::pointer switchPreviousLedger(Ledger::pointer oldPrevious, Ledger::pointer newPrevious, int limit);
|
||||
|
||||
// high-level functions
|
||||
AccountState::pointer getAccountState(const NewcoinAddress& acctID);
|
||||
LedgerStateParms writeBack(LedgerStateParms parms, SLE::pointer);
|
||||
|
||||
@@ -39,7 +39,6 @@ void LedgerMaster::pushLedger(Ledger::pointer newLCL, Ledger::pointer newOL)
|
||||
{
|
||||
assert(newLCL->isClosed() && newLCL->isAccepted());
|
||||
assert(!newOL->isClosed() && !newOL->isAccepted());
|
||||
Log(lsINFO) << "PushAccept: " << newLCL->getHash().GetHex();
|
||||
|
||||
ScopedLock sl(mLock);
|
||||
if (mFinalizedLedger && mFinalizedLedger->isAccepted())
|
||||
@@ -63,24 +62,22 @@ void LedgerMaster::switchLedgers(Ledger::pointer lastClosed, Ledger::pointer cur
|
||||
mEngine.setLedger(mCurrentLedger);
|
||||
}
|
||||
|
||||
Ledger::pointer LedgerMaster::closeTime()
|
||||
{
|
||||
boost::recursive_mutex::scoped_lock sl(mLock);
|
||||
assert(mCurrentLedger && mWobbleLedger);
|
||||
Ledger::pointer ret = mCurrentLedger;
|
||||
mCurrentLedger = mWobbleLedger;
|
||||
mEngine.setLedger(mCurrentLedger);
|
||||
mWobbleLedger = ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void LedgerMaster::beginWobble()
|
||||
{
|
||||
boost::recursive_mutex::scoped_lock sl(mLock);
|
||||
assert(!mWobbleLedger);
|
||||
mWobbleLedger = mCurrentLedger;
|
||||
mCurrentLedger = boost::make_shared<Ledger>(mCurrentLedger);
|
||||
mEngine.setLedger(mCurrentLedger);
|
||||
mWobbleLedger = boost::make_shared<Ledger>(boost::ref(*mCurrentLedger), true);
|
||||
mEngine.setDefaultLedger(mCurrentLedger);
|
||||
mEngine.setAlternateLedger(mWobbleLedger);
|
||||
}
|
||||
|
||||
void LedgerMaster::closeTime()
|
||||
{ // swap current and wobble ledgers
|
||||
boost::recursive_mutex::scoped_lock sl(mLock);
|
||||
assert(mCurrentLedger && mWobbleLedger);
|
||||
std::swap(mCurrentLedger, mWobbleLedger);
|
||||
mEngine.setDefaultLedger(mCurrentLedger);
|
||||
mEngine.setAlternateLedger(mWobbleLedger);
|
||||
}
|
||||
|
||||
Ledger::pointer LedgerMaster::endWobble()
|
||||
@@ -89,6 +86,7 @@ Ledger::pointer LedgerMaster::endWobble()
|
||||
assert(mWobbleLedger && mCurrentLedger);
|
||||
Ledger::pointer ret = mWobbleLedger;
|
||||
mWobbleLedger = Ledger::pointer();
|
||||
mEngine.setAlternateLedger(Ledger::pointer());
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user