Validators Work

Conflicts:
	src/ripple_app/ledger/LedgerMaster.cpp
This commit is contained in:
Vinnie Falco
2013-09-23 18:58:21 -07:00
parent 426636f48d
commit 9b22c810ef
7 changed files with 393 additions and 52 deletions

View File

@@ -453,32 +453,45 @@ void LedgerMaster::setFullLedger (Ledger::pointer ledger, bool isSynchronous, bo
mLedgerHistory.addLedger(ledger);
ledger->setFull();
ScopedLockType ml (mLock, __FILE__, __LINE__);
mCompleteLedgers.setValue (ledger->getLedgerSeq ());
ledger->pendSaveValidated (isSynchronous, isCurrent);
if (!mValidLedger || (ledger->getLedgerSeq() > mValidLedger->getLedgerSeq()))
mValidLedger = ledger;
if (!mPubLedger)
{
mPubLedger = ledger;
getApp().getOrderBookDB().setup(ledger);
}
ScopedLockType ml (mLock, __FILE__, __LINE__);
if ((ledger->getLedgerSeq () != 0) && mCompleteLedgers.hasValue (ledger->getLedgerSeq () - 1))
{
// we think we have the previous ledger, double check
Ledger::pointer prevLedger = getLedgerBySeq (ledger->getLedgerSeq () - 1);
mCompleteLedgers.setValue (ledger->getLedgerSeq ());
if (!prevLedger || (prevLedger->getHash () != ledger->getParentHash ()))
ledger->pendSaveValidated (isSynchronous, isCurrent);
if (!mValidLedger || (ledger->getLedgerSeq() > mValidLedger->getLedgerSeq()))
mValidLedger = ledger;
if (!mPubLedger)
{
WriteLog (lsWARNING, LedgerMaster) << "Acquired ledger invalidates previous ledger: " <<
(prevLedger ? "hashMismatch" : "missingLedger");
fixMismatch (ledger);
mPubLedger = ledger;
getApp().getOrderBookDB().setup(ledger);
}
if ((ledger->getLedgerSeq () != 0) && mCompleteLedgers.hasValue (ledger->getLedgerSeq () - 1))
{
// we think we have the previous ledger, double check
Ledger::pointer prevLedger = getLedgerBySeq (ledger->getLedgerSeq () - 1);
if (!prevLedger || (prevLedger->getHash () != ledger->getParentHash ()))
{
WriteLog (lsWARNING, LedgerMaster) << "Acquired ledger invalidates previous ledger: " <<
(prevLedger ? "hashMismatch" : "missingLedger");
fixMismatch (ledger);
}
}
}
//--------------------------------------------------------------------------
//
#if RIPPLE_USE_NEW_VALIDATORS
{
if (isCurrent)
getApp ().getValidators ().ledgerClosed (ledger->getHash());
}
#endif
//
//--------------------------------------------------------------------------
}
void LedgerMaster::checkAccept (uint256 const& hash)