Track whether a ledger is fully-validated.

This commit is contained in:
JoelKatz
2013-07-29 11:50:56 -07:00
parent 6b3faf6af8
commit 7581b4d24a
3 changed files with 18 additions and 2 deletions

View File

@@ -14,6 +14,7 @@ Ledger::Ledger (const RippleAddress& masterID, uint64 startAmount)
, mCloseResolution (LEDGER_TIME_ACCURACY)
, mCloseFlags (0)
, mClosed (false)
, mValidated (false)
, mValidHash (false)
, mAccepted (false)
, mImmutable (false)
@@ -58,6 +59,7 @@ Ledger::Ledger (uint256 const& parentHash,
, mCloseResolution (closeResolution)
, mCloseFlags (closeFlags)
, mClosed (false)
, mValidated (false)
, mValidHash (false)
, mAccepted (false)
, mImmutable (true)
@@ -97,6 +99,7 @@ Ledger::Ledger (Ledger& ledger,
, mCloseResolution (ledger.mCloseResolution)
, mCloseFlags (ledger.mCloseFlags)
, mClosed (ledger.mClosed)
, mValidated (ledger.mValidated)
, mValidHash (false)
, mAccepted (ledger.mAccepted)
, mImmutable (!isMutable)
@@ -116,6 +119,7 @@ Ledger::Ledger (bool /* dummy */,
, mCloseResolution (prevLedger.mCloseResolution)
, mCloseFlags (0)
, mClosed (false)
, mValidated (false)
, mValidHash (false)
, mAccepted (false)
, mImmutable (false)
@@ -148,6 +152,7 @@ Ledger::Ledger (bool /* dummy */,
Ledger::Ledger (Blob const& rawLedger,
bool hasPrefix)
: mClosed (false)
, mValidated (false)
, mValidHash (false)
, mAccepted (false)
, mImmutable (true)
@@ -160,7 +165,7 @@ Ledger::Ledger (Blob const& rawLedger,
}
Ledger::Ledger (const std::string& rawLedger, bool hasPrefix) :
mClosed (false), mValidHash (false), mAccepted (false), mImmutable (true)
mClosed (false), mValidated(false), mValidHash (false), mAccepted (false), mImmutable (true)
{
Serializer s (rawLedger);
setRaw (s, hasPrefix);

View File

@@ -91,6 +91,10 @@ public:
{
mClosed = true;
}
void setValidated()
{
mValidated = true;
}
void setAccepted (uint32 closeTime, int closeResolution, bool correctCloseTime);
void setAccepted ();
void setImmutable ();
@@ -102,6 +106,10 @@ public:
{
return mAccepted;
}
bool isValidated ()
{
return mValidated;
}
bool isImmutable ()
{
return mImmutable;
@@ -449,7 +457,7 @@ private:
uint32 mParentCloseTime; // when the previous ledger closed
int mCloseResolution; // the resolution for this ledger close time (2-120 seconds)
uint32 mCloseFlags; // flags indicating how this ledger close took place
bool mClosed, mValidHash, mAccepted, mImmutable;
bool mClosed, mValidated, mValidHash, mAccepted, mImmutable;
uint32 mReferenceFeeUnits; // Fee units for the reference transaction
uint32 mReserveBase, mReserveIncrement; // Reserve basse and increment in fee units

View File

@@ -159,6 +159,7 @@ void LedgerMaster::storeLedger (Ledger::pointer ledger)
void LedgerMaster::forceValid (Ledger::pointer ledger)
{
ledger->setValidated();
if (!mValidLedger || (mPubLedger->getLedgerSeq() < ledger->getLedgerSeq()))
mValidLedger = ledger;
if (!mPubLedger || (mPubLedger->getLedgerSeq() < 2))
@@ -683,6 +684,7 @@ void LedgerMaster::checkAccept (uint256 const& hash, uint32 seq)
return;
}
ledger->setValidated();
mValidLedger = ledger;
uint64 fee, fee2, ref;
@@ -769,6 +771,7 @@ void LedgerMaster::tryPublish ()
if (ledger && (ledger->getLedgerSeq() == (mPubLedger->getLedgerSeq() + 1)))
{ // We acquired the next ledger we need to publish
ledger->setValidated();
mPubLedger = ledger;
mPubLedgers.push_back (mPubLedger);
}