diff --git a/src/cpp/ripple/LedgerMaster.cpp b/src/cpp/ripple/LedgerMaster.cpp index 6e3a1ca26a..c7c1036aa6 100644 --- a/src/cpp/ripple/LedgerMaster.cpp +++ b/src/cpp/ripple/LedgerMaster.cpp @@ -23,6 +23,23 @@ Ledger::ref LedgerMaster::getCurrentSnapshot () return mCurrentSnapshot; } +int LedgerMaster::getPublishedLedgerAge () +{ + boost::recursive_mutex::scoped_lock ml (mLock); + if (!mPubLedger) + { + WriteLog (lsDEBUG, LedgerMaster) << "No published ledger"; + return 999999; + } + + int64 ret = getApp().getOPs ().getCloseTimeNC (); + ret -= static_cast (mPubLedger->getCloseTimeNC ()); + ret = std::max (0LL, ret); + + WriteLog (lsTRACE, LedgerMaster) << "Published ledger age is " << ret; + return static_cast (ret); +} + int LedgerMaster::getValidatedLedgerAge () { boost::recursive_mutex::scoped_lock ml (mLock); @@ -42,7 +59,7 @@ int LedgerMaster::getValidatedLedgerAge () bool LedgerMaster::isCaughtUp(std::string& reason) { - if (getValidatedLedgerAge() > 180) + if (getPublishedLedgerAge() > 180) { reason = "No recently-validated ledger"; return false; diff --git a/src/cpp/ripple/LedgerMaster.h b/src/cpp/ripple/LedgerMaster.h index 4df10d0eb7..d000566ae5 100644 --- a/src/cpp/ripple/LedgerMaster.h +++ b/src/cpp/ripple/LedgerMaster.h @@ -58,11 +58,19 @@ public: return mFinalizedLedger; } - // The published ledger is the last fully validated ledger + // The validated ledger is the last fully validated ledger Ledger::ref getValidatedLedger () + { + return mValidLedger; + } + + // This is the last ledger we published to clients and can lag the validated ledger + Ledger::ref getPublishedLedger () { return mPubLedger; } + + int getPublishedLedgerAge (); int getValidatedLedgerAge (); bool isCaughtUp(std::string& reason);