diff --git a/RefactoringNotes.txt b/RefactoringNotes.txt index b32823234..3c7671fc1 100644 --- a/RefactoringNotes.txt +++ b/RefactoringNotes.txt @@ -10,6 +10,8 @@ TODO - Replace uint160, uint256 in argument lists, template parameter lists, and data members with tyepdefs from ripple_ProtocolTypes.h +- Consolidate SQLite database classes: DatabaseCon, Database, SqliteDatabase. + -------------------------------------------------------------------------------- LoadEvent @@ -27,11 +29,15 @@ Naming Some names don't make sense. - LedgerAcquire + InboundLedger Not a noun. Is it really an InboundLedger ? Does it continue to exist after the ledger is received? + Index + Stop using Index to refer to keys in tables. + Index implies a small integer, or a data structure. + Inconsistent names We have full names like SerializedType and then acronyms like STObject diff --git a/modules/ripple_client/ripple_client.cpp b/modules/ripple_client/ripple_client.cpp index 331a0aca1..e4d438f9c 100644 --- a/modules/ripple_client/ripple_client.cpp +++ b/modules/ripple_client/ripple_client.cpp @@ -22,6 +22,7 @@ #include "../ripple_data/ripple_data.h" +/* #include "src/cpp/ripple/ripple_InfoSub.h" // Order and indentation reflect the hierarchy of dependencies @@ -46,7 +47,7 @@ #include "src/cpp/ripple/ripple_LoadManager.h" #include "src/cpp/ripple/ripple_Peer.h" #include "src/cpp/ripple/ripple_PeerSet.h" -#include "src/cpp/ripple/ripple_LedgerAcquire.h" +#include "src/cpp/ripple/ripple_InboundLedger.h" #include "src/cpp/ripple/ripple_LedgerHistory.h" #include "src/cpp/ripple/ripple_CanonicalTXSet.h" #include "src/cpp/ripple/LedgerMaster.h" @@ -56,6 +57,5 @@ #include "src/cpp/ripple/ripple_AcceptedLedgerTx.h" #include "src/cpp/ripple/NetworkOPs.h" #include "src/cpp/ripple/ripple_IApplication.h" - -#include "src/cpp/ripple/ripple_InfoSub.cpp" //#include "src/cpp/ripple/NetworkOPs.cpp" +*/ diff --git a/modules/ripple_main/ripple_main.cpp b/modules/ripple_main/ripple_main.cpp index 01aef6e28..70bdde3e4 100644 --- a/modules/ripple_main/ripple_main.cpp +++ b/modules/ripple_main/ripple_main.cpp @@ -149,8 +149,8 @@ #include "src/cpp/ripple/ripple_IValidations.h" #include "src/cpp/ripple/ripple_PeerSet.h" -#include "src/cpp/ripple/ripple_LedgerAcquire.h" -#include "src/cpp/ripple/ripple_LedgerAcquireMaster.h" +#include "src/cpp/ripple/ripple_InboundLedger.h" +#include "src/cpp/ripple/ripple_InboundLedgers.h" #include "src/cpp/database/database.h" #include "src/cpp/database/SqliteDatabase.h" @@ -375,8 +375,9 @@ static DH* handleTmpDh (SSL* ssl, int is_export, int iKeyLength) #include "src/cpp/ripple/ripple_Job.cpp" #include "src/cpp/ripple/ripple_JobQueue.cpp" -#include "src/cpp/ripple/ripple_LedgerAcquire.cpp" -#include "src/cpp/ripple/ripple_LedgerAcquireMaster.cpp" +#include "src/cpp/ripple/ripple_InboundLedger.cpp" +#include "src/cpp/ripple/ripple_InboundLedgers.cpp" +#include "src/cpp/ripple/ripple_InfoSub.cpp" #include "src/cpp/ripple/ripple_LedgerConsensus.cpp" #include "src/cpp/ripple/ripple_LedgerHistory.cpp" #include "src/cpp/ripple/ripple_LoadEvent.cpp" diff --git a/newcoin.vcxproj b/newcoin.vcxproj index 7bab345c5..dc1a9dc02 100644 --- a/newcoin.vcxproj +++ b/newcoin.vcxproj @@ -827,7 +827,7 @@ true true - + true true true @@ -879,7 +879,7 @@ true true - + true true true @@ -1770,7 +1770,7 @@ - + @@ -1780,7 +1780,7 @@ - + diff --git a/newcoin.vcxproj.filters b/newcoin.vcxproj.filters index 5001683f1..46e809184 100644 --- a/newcoin.vcxproj.filters +++ b/newcoin.vcxproj.filters @@ -148,6 +148,9 @@ {90a5527e-0de0-4d5f-a731-b6b196a013b5} + + {857187f0-ff25-4ebe-af30-544b7b7f503a} + @@ -747,15 +750,6 @@ 1. Modules\ripple_main\refactored - - 1. Modules\ripple_main\refactored - - - 1. Modules\ripple_main\refactored - - - 1. Modules\ripple_main\refactored - 1. Modules\ripple_main\refactored @@ -883,7 +877,16 @@ 1. Modules\ripple_main\refactored - 1. Modules\ripple_main\_unfactored\ledger + 1. Modules\ripple_main\refactored\ledger + + + 1. Modules\ripple_main\refactored\ledger + + + 1. Modules\ripple_main\refactored\ledger + + + 1. Modules\ripple_main\refactored\ledger @@ -1511,18 +1514,9 @@ 1. Modules\ripple_main\refactored - - 1. Modules\ripple_main\refactored - 1. Modules\ripple_basics\types - - 1. Modules\ripple_main\refactored - - - 1. Modules\ripple_main\refactored - 1. Modules\ripple_main\refactored @@ -1647,7 +1641,16 @@ 1. Modules\ripple_main\refactored - 1. Modules\ripple_main\_unfactored\ledger + 1. Modules\ripple_main\refactored\ledger + + + 1. Modules\ripple_main\refactored\ledger + + + 1. Modules\ripple_main\refactored\ledger + + + 1. Modules\ripple_main\refactored\ledger diff --git a/src/cpp/database/SqliteDatabase.h b/src/cpp/database/SqliteDatabase.h index f9ef60fa4..b7629d7f1 100644 --- a/src/cpp/database/SqliteDatabase.h +++ b/src/cpp/database/SqliteDatabase.h @@ -12,15 +12,6 @@ struct sqlite3_stmt; class SqliteDatabase : public Database { - sqlite3* mConnection; - sqlite3* mAuxConnection; - sqlite3_stmt* mCurrentStmt; - bool mMoreRows; - - boost::mutex walMutex; - JobQueue* mWalQ; - bool walRunning; - public: SqliteDatabase (const char* host); @@ -67,6 +58,16 @@ public: int getKBUsedDB (); int getKBUsedAll (); + +private: + sqlite3* mConnection; + sqlite3* mAuxConnection; + sqlite3_stmt* mCurrentStmt; + bool mMoreRows; + + boost::mutex walMutex; + JobQueue* mWalQ; + bool walRunning; }; class SqliteStatement diff --git a/src/cpp/ripple/LedgerMaster.cpp b/src/cpp/ripple/LedgerMaster.cpp index bf0bb8fd3..5a26e30bb 100644 --- a/src/cpp/ripple/LedgerMaster.cpp +++ b/src/cpp/ripple/LedgerMaster.cpp @@ -277,13 +277,13 @@ bool LedgerMaster::acquireMissingLedger (Ledger::ref origLedger, uint256 const& return true; } - if (theApp->getMasterLedgerAcquire ().isFailure (ledgerHash)) + if (theApp->getInboundLedgers ().isFailure (ledgerHash)) { WriteLog (lsTRACE, LedgerMaster) << "Already failed to acquire " << ledgerSeq; return false; } - mMissingLedger = theApp->getMasterLedgerAcquire ().findCreate (ledgerHash, ledgerSeq); + mMissingLedger = theApp->getInboundLedgers ().findCreate (ledgerHash, ledgerSeq); if (mMissingLedger->isComplete ()) { @@ -311,7 +311,7 @@ bool LedgerMaster::acquireMissingLedger (Ledger::ref origLedger, uint256 const& int fetchMax = theConfig.getSize (siLedgerFetch); int timeoutCount; - int fetchCount = theApp->getMasterLedgerAcquire ().getFetchCount (timeoutCount); + int fetchCount = theApp->getInboundLedgers ().getFetchCount (timeoutCount); if ((fetchCount < fetchMax) && theApp->getOPs ().isFull ()) { @@ -326,9 +326,9 @@ bool LedgerMaster::acquireMissingLedger (Ledger::ref origLedger, uint256 const& BOOST_REVERSE_FOREACH (const u_pair & it, vec) { if ((fetchCount < fetchMax) && (it.first < ledgerSeq) && - !mCompleteLedgers.hasValue (it.first) && !theApp->getMasterLedgerAcquire ().find (it.second)) + !mCompleteLedgers.hasValue (it.first) && !theApp->getInboundLedgers ().find (it.second)) { - LedgerAcquire::pointer acq = theApp->getMasterLedgerAcquire ().findCreate (it.second, it.first); + InboundLedger::pointer acq = theApp->getInboundLedgers ().findCreate (it.second, it.first); if (acq && acq->isComplete ()) { @@ -384,7 +384,7 @@ bool LedgerMaster::acquireMissingLedger (Ledger::ref origLedger, uint256 const& return true; } -void LedgerMaster::missingAcquireComplete (LedgerAcquire::pointer acq) +void LedgerMaster::missingAcquireComplete (InboundLedger::pointer acq) { boost::recursive_mutex::scoped_lock ml (mLock); @@ -418,6 +418,12 @@ bool LedgerMaster::shouldAcquire (uint32 currentLedger, uint32 ledgerHistory, ui void LedgerMaster::resumeAcquiring () { + // VFALCO NOTE These returns from the middle are troubling. You might think + // that calling a function called "resumeAcquiring" would + // actually resume acquiring. But it doesn't always resume acquiring, + // based on a myriad of conditions which short circuit the function + // in ways that the caller cannot expect or predict. + // if (!theApp->getOPs ().isFull ()) return; @@ -525,7 +531,7 @@ void LedgerMaster::setFullLedger (Ledger::pointer ledger) if (mMissingLedger && mMissingLedger->isDone ()) { if (mMissingLedger->isFailed ()) - theApp->getMasterLedgerAcquire ().dropLedger (mMissingLedger->getHash ()); + theApp->getInboundLedgers ().dropLedger (mMissingLedger->getHash ()); mMissingLedger.reset (); } @@ -628,7 +634,7 @@ void LedgerMaster::checkAccept (uint256 const& hash, uint32 seq) if (!ledger) { - theApp->getMasterLedgerAcquire ().findCreate (hash, seq); + theApp->getInboundLedgers ().findCreate (hash, seq); return; } @@ -689,13 +695,13 @@ void LedgerMaster::tryPublish () } else { - if (theApp->getMasterLedgerAcquire ().isFailure (hash)) + if (theApp->getInboundLedgers ().isFailure (hash)) { WriteLog (lsWARNING, LedgerMaster) << "Unable to acquire a recent validated ledger"; } else { - LedgerAcquire::pointer acq = theApp->getMasterLedgerAcquire ().findCreate (hash, seq); + InboundLedger::pointer acq = theApp->getInboundLedgers ().findCreate (hash, seq); if (!acq->isDone ()) { diff --git a/src/cpp/ripple/LedgerMaster.h b/src/cpp/ripple/LedgerMaster.h index d333680ea..330a2c8d5 100644 --- a/src/cpp/ripple/LedgerMaster.h +++ b/src/cpp/ripple/LedgerMaster.h @@ -177,7 +177,7 @@ private: bool acquireMissingLedger (Ledger::ref from, uint256 const& ledgerHash, uint32 ledgerSeq); void asyncAccept (Ledger::pointer); - void missingAcquireComplete (LedgerAcquire::pointer); + void missingAcquireComplete (InboundLedger::pointer); void pubThread (); void updatePaths (); @@ -197,7 +197,7 @@ private: CanonicalTXSet mHeldTransactions; RangeSet mCompleteLedgers; - LedgerAcquire::pointer mMissingLedger; + InboundLedger::pointer mMissingLedger; uint32 mMissingSeq; int mMinValidations; // The minimum validations to publish a ledger diff --git a/src/cpp/ripple/NetworkOPs.cpp b/src/cpp/ripple/NetworkOPs.cpp index 01fe13a68..12b917bfd 100644 --- a/src/cpp/ripple/NetworkOPs.cpp +++ b/src/cpp/ripple/NetworkOPs.cpp @@ -798,7 +798,7 @@ bool NetworkOPs::checkLastClosedLedger (const std::vector& peerLi if (mAcquiringLedger) { mAcquiringLedger->abort (); - theApp->getMasterLedgerAcquire ().dropLedger (mAcquiringLedger->getHash ()); + theApp->getInboundLedgers ().dropLedger (mAcquiringLedger->getHash ()); mAcquiringLedger.reset (); } @@ -819,11 +819,11 @@ bool NetworkOPs::checkLastClosedLedger (const std::vector& peerLi WriteLog (lsINFO, NetworkOPs) << "Acquiring consensus ledger " << closedLedger; if (!mAcquiringLedger || (mAcquiringLedger->getHash () != closedLedger)) - mAcquiringLedger = theApp->getMasterLedgerAcquire ().findCreate (closedLedger, 0); + mAcquiringLedger = theApp->getInboundLedgers ().findCreate (closedLedger, 0); if (!mAcquiringLedger || mAcquiringLedger->isFailed ()) { - theApp->getMasterLedgerAcquire ().dropLedger (closedLedger); + theApp->getInboundLedgers ().dropLedger (closedLedger); WriteLog (lsERROR, NetworkOPs) << "Network ledger cannot be acquired"; return true; } @@ -2270,7 +2270,7 @@ void NetworkOPs::gotFetchPack (bool progress, uint32 seq) mLastFetchPack = 0; mFetchSeq = seq; // earliest pack we have data on theApp->getJobQueue ().addJob (jtLEDGER_DATA, "gotFetchPack", - boost::bind (&LedgerAcquireMaster::gotFetchPack, &theApp->getMasterLedgerAcquire (), _1)); + boost::bind (&InboundLedgers::gotFetchPack, &theApp->getInboundLedgers (), _1)); } void NetworkOPs::missingNodeInLedger (uint32 seq) @@ -2279,7 +2279,7 @@ void NetworkOPs::missingNodeInLedger (uint32 seq) uint256 hash = theApp->getLedgerMaster ().getHashBySeq (seq); if (hash.isNonZero ()) - theApp->getMasterLedgerAcquire ().findCreate (hash, seq); + theApp->getInboundLedgers ().findCreate (hash, seq); } // vim:ts=4 diff --git a/src/cpp/ripple/NetworkOPs.h b/src/cpp/ripple/NetworkOPs.h index 34a3f2459..5b0e0e211 100644 --- a/src/cpp/ripple/NetworkOPs.h +++ b/src/cpp/ripple/NetworkOPs.h @@ -391,7 +391,7 @@ private: std::list > mStoredProposals; LedgerMaster* mLedgerMaster; - LedgerAcquire::pointer mAcquiringLedger; + InboundLedger::pointer mAcquiringLedger; int mCloseTimeOffset; diff --git a/src/cpp/ripple/ripple.proto b/src/cpp/ripple/ripple.proto index 5e4907020..fac4080e3 100644 --- a/src/cpp/ripple/ripple.proto +++ b/src/cpp/ripple/ripple.proto @@ -1,3 +1,5 @@ +// VFALCO TODO Rename the protobuf namespace from ripple to 'wire' or something +// package ripple; enum MessageType diff --git a/src/cpp/ripple/ripple_Application.cpp b/src/cpp/ripple/ripple_Application.cpp index 1e91f8db7..c99df463a 100644 --- a/src/cpp/ripple/ripple_Application.cpp +++ b/src/cpp/ripple/ripple_Application.cpp @@ -43,9 +43,9 @@ public: { return mLedgerMaster; } - LedgerAcquireMaster& getMasterLedgerAcquire () + InboundLedgers& getInboundLedgers () { - return mMasterLedgerAcquire; + return m_inboundLedgers; } TransactionMaster& getMasterTransaction () { @@ -192,7 +192,7 @@ private: LocalCredentials mLocalCredentials; LedgerMaster mLedgerMaster; - LedgerAcquireMaster mMasterLedgerAcquire; + InboundLedgers m_inboundLedgers; TransactionMaster mMasterTransaction; NetworkOPs mNetOps; NodeCache mTempNodeCache; @@ -215,10 +215,17 @@ private: beast::ScopedPointer mPeers; // VFALCO End Clean stuff - DatabaseCon* mRpcDB, *mTxnDB, *mLedgerDB, *mWalletDB, *mNetNodeDB, *mPathFindDB, *mHashNodeDB; + DatabaseCon* mRpcDB; + DatabaseCon* mTxnDB; + DatabaseCon* mLedgerDB; + DatabaseCon* mWalletDB; + DatabaseCon* mNetNodeDB; + DatabaseCon* mPathFindDB; + DatabaseCon* mHashNodeDB; - leveldb::DB* mHashNodeLDB; - leveldb::DB* mEphemeralLDB; + // VFALCO TODO Wrap this in an interface + leveldb::DB* mHashNodeLDB; + leveldb::DB* mEphemeralLDB; PeerDoor* mPeerDoor; RPCDoor* mRPCDoor; @@ -227,7 +234,7 @@ private: boost::asio::deadline_timer mSweepTimer; - std::map mPeerMap; + std::map mPeerMap; boost::recursive_mutex mPeerMapLock; volatile bool mShutdown; @@ -638,7 +645,7 @@ void Application::sweep () mLedgerMaster.sweep (); mTempNodeCache.sweep (); mValidations->sweep (); - getMasterLedgerAcquire ().sweep (); + getInboundLedgers ().sweep (); mSLECache.sweep (); AcceptedLedger::sweep (); // VFALCO NOTE AcceptedLedger is/has a singleton? SHAMap::sweep (); // VFALCO NOTE SHAMap is/has a singleton? diff --git a/src/cpp/ripple/ripple_IApplication.h b/src/cpp/ripple/ripple_IApplication.h index 1adc3a9bb..32d9eff7d 100644 --- a/src/cpp/ripple/ripple_IApplication.h +++ b/src/cpp/ripple/ripple_IApplication.h @@ -28,7 +28,7 @@ class IValidations; class HashedObjectStore; class JobQueue; -class LedgerAcquireMaster; +class InboundLedgers; class LedgerMaster; class LoadManager; class NetworkOPs; @@ -81,7 +81,7 @@ public: virtual HashedObjectStore& getHashedObjectStore () = 0; virtual JobQueue& getJobQueue () = 0; - virtual LedgerAcquireMaster& getMasterLedgerAcquire () = 0; + virtual InboundLedgers& getInboundLedgers () = 0; virtual LedgerMaster& getLedgerMaster () = 0; virtual LoadManager& getLoadManager () = 0; virtual NetworkOPs& getOPs () = 0; diff --git a/src/cpp/ripple/ripple_LedgerAcquire.cpp b/src/cpp/ripple/ripple_InboundLedger.cpp similarity index 84% rename from src/cpp/ripple/ripple_LedgerAcquire.cpp rename to src/cpp/ripple/ripple_InboundLedger.cpp index b09298f89..506ac2415 100644 --- a/src/cpp/ripple/ripple_LedgerAcquire.cpp +++ b/src/cpp/ripple/ripple_InboundLedger.cpp @@ -4,9 +4,9 @@ */ //============================================================================== -SETUP_LOG (LedgerAcquire) +SETUP_LOG (InboundLedger) -DECLARE_INSTANCE (LedgerAcquire); +DECLARE_INSTANCE (InboundLedger); // VFALCO TODO replace macros #define LA_DEBUG @@ -15,7 +15,7 @@ DECLARE_INSTANCE (LedgerAcquire); #define LEDGER_TIMEOUT_AGGRESSIVE 6 // how many timeouts before we get aggressive #define TRUST_NETWORK -LedgerAcquire::LedgerAcquire (uint256 const& hash, uint32 seq) +InboundLedger::InboundLedger (uint256 const& hash, uint32 seq) : PeerSet (hash, LEDGER_ACQUIRE_TIMEOUT) , mHaveBase (false) , mHaveState (false) @@ -28,12 +28,12 @@ LedgerAcquire::LedgerAcquire (uint256 const& hash, uint32 seq) , mSeq (seq) { #ifdef LA_DEBUG - WriteLog (lsTRACE, LedgerAcquire) << "Acquiring ledger " << mHash; + WriteLog (lsTRACE, InboundLedger) << "Acquiring ledger " << mHash; #endif tryLocal (); } -void LedgerAcquire::checkLocal () +void InboundLedger::checkLocal () { boost::recursive_mutex::scoped_lock sl (mLock); @@ -44,7 +44,7 @@ void LedgerAcquire::checkLocal () done (); } -bool LedgerAcquire::tryLocal () +bool InboundLedger::tryLocal () { // return value: true = no more work to do @@ -60,7 +60,7 @@ bool LedgerAcquire::tryLocal () if (!theApp->getOPs ().getFetchPack (mHash, data)) return false; - WriteLog (lsTRACE, LedgerAcquire) << "Ledger base found in fetch pack"; + WriteLog (lsTRACE, InboundLedger) << "Ledger base found in fetch pack"; mLedger = boost::make_shared (data, true); theApp->getHashedObjectStore ().store (hotLEDGER, mLedger->getLedgerSeq (), data, mHash); } @@ -72,7 +72,7 @@ bool LedgerAcquire::tryLocal () if (mLedger->getHash () != mHash) { // We know for a fact the ledger can never be acquired - WriteLog (lsWARNING, LedgerAcquire) << mHash << " cannot be a ledger"; + WriteLog (lsWARNING, InboundLedger) << mHash << " cannot be a ledger"; mFailed = true; return true; } @@ -84,7 +84,7 @@ bool LedgerAcquire::tryLocal () { if (mLedger->getTransHash ().isZero ()) { - WriteLog (lsTRACE, LedgerAcquire) << "No TXNs to fetch"; + WriteLog (lsTRACE, InboundLedger) << "No TXNs to fetch"; mHaveTransactions = true; } else @@ -93,12 +93,12 @@ bool LedgerAcquire::tryLocal () if (mLedger->peekTransactionMap ()->fetchRoot (mLedger->getTransHash (), &filter)) { - WriteLog (lsTRACE, LedgerAcquire) << "Got root txn map locally"; + WriteLog (lsTRACE, InboundLedger) << "Got root txn map locally"; std::vector h = mLedger->getNeededTransactionHashes (1, &filter); if (h.empty ()) { - WriteLog (lsTRACE, LedgerAcquire) << "Had full txn map locally"; + WriteLog (lsTRACE, InboundLedger) << "Had full txn map locally"; mHaveTransactions = true; } } @@ -109,7 +109,7 @@ bool LedgerAcquire::tryLocal () { if (mLedger->getAccountHash ().isZero ()) { - WriteLog (lsFATAL, LedgerAcquire) << "We are acquiring a ledger with a zero account hash"; + WriteLog (lsFATAL, InboundLedger) << "We are acquiring a ledger with a zero account hash"; mHaveState = true; } else @@ -118,12 +118,12 @@ bool LedgerAcquire::tryLocal () if (mLedger->peekAccountStateMap ()->fetchRoot (mLedger->getAccountHash (), &filter)) { - WriteLog (lsTRACE, LedgerAcquire) << "Got root AS map locally"; + WriteLog (lsTRACE, InboundLedger) << "Got root AS map locally"; std::vector h = mLedger->getNeededAccountStateHashes (1, &filter); if (h.empty ()) { - WriteLog (lsTRACE, LedgerAcquire) << "Had full AS map locally"; + WriteLog (lsTRACE, InboundLedger) << "Had full AS map locally"; mHaveState = true; } } @@ -132,7 +132,7 @@ bool LedgerAcquire::tryLocal () if (mHaveTransactions && mHaveState) { - WriteLog (lsDEBUG, LedgerAcquire) << "Had everything locally"; + WriteLog (lsDEBUG, InboundLedger) << "Had everything locally"; mComplete = true; mLedger->setClosed (); mLedger->setImmutable (); @@ -141,14 +141,14 @@ bool LedgerAcquire::tryLocal () return mComplete; } -void LedgerAcquire::onTimer (bool progress) +void InboundLedger::onTimer (bool progress) { mRecentTXNodes.clear (); mRecentASNodes.clear (); if (getTimeouts () > LEDGER_TIMEOUT_COUNT) { - WriteLog (lsWARNING, LedgerAcquire) << "Too many timeouts( " << getTimeouts () << ") for ledger " << mHash; + WriteLog (lsWARNING, InboundLedger) << "Too many timeouts( " << getTimeouts () << ") for ledger " << mHash; setFailed (); done (); return; @@ -159,7 +159,7 @@ void LedgerAcquire::onTimer (bool progress) mAggressive = true; mByHash = true; int pc = getPeerCount (); - WriteLog (lsDEBUG, LedgerAcquire) << "No progress(" << pc << ") for ledger " << pc << mHash; + WriteLog (lsDEBUG, InboundLedger) << "No progress(" << pc << ") for ledger " << pc << mHash; if (pc == 0) addPeers (); @@ -168,20 +168,20 @@ void LedgerAcquire::onTimer (bool progress) } } -void LedgerAcquire::awaitData () +void InboundLedger::awaitData () { boost::recursive_mutex::scoped_lock sl (mLock); ++mWaitCount; } -void LedgerAcquire::noAwaitData () +void InboundLedger::noAwaitData () { boost::recursive_mutex::scoped_lock sl (mLock); if (mWaitCount > 0 ) --mWaitCount; } -void LedgerAcquire::addPeers () +void InboundLedger::addPeers () { std::vector peerList = theApp->getPeers ().getPeerVector (); @@ -213,21 +213,21 @@ void LedgerAcquire::addPeers () peerHas (peerList[ (i + firstPeer) % vSize]); } -boost::weak_ptr LedgerAcquire::pmDowncast () +boost::weak_ptr InboundLedger::pmDowncast () { return boost::dynamic_pointer_cast (shared_from_this ()); } static void LADispatch ( Job& job, - LedgerAcquire::pointer la, - std::vector< FUNCTION_TYPE > trig) + InboundLedger::pointer la, + std::vector< FUNCTION_TYPE > trig) { for (unsigned int i = 0; i < trig.size (); ++i) trig[i] (la); } -void LedgerAcquire::done () +void InboundLedger::done () { if (mSignaled) return; @@ -236,12 +236,12 @@ void LedgerAcquire::done () touch (); #ifdef LA_DEBUG - WriteLog (lsTRACE, LedgerAcquire) << "Done acquiring ledger " << mHash; + WriteLog (lsTRACE, InboundLedger) << "Done acquiring ledger " << mHash; #endif assert (isComplete () || isFailed ()); - std::vector< FUNCTION_TYPE > triggers; + std::vector< FUNCTION_TYPE > triggers; { boost::recursive_mutex::scoped_lock sl (mLock); triggers.swap (mOnComplete); @@ -258,14 +258,14 @@ void LedgerAcquire::done () theApp->getLedgerMaster ().storeLedger (mLedger); } else - theApp->getMasterLedgerAcquire ().logFailure (mHash); + theApp->getInboundLedgers ().logFailure (mHash); if (!triggers.empty ()) // We hold the PeerSet lock, so must dispatch theApp->getJobQueue ().addJob (jtLEDGER_DATA, "triggers", BIND_TYPE (LADispatch, P_1, shared_from_this (), triggers)); } -bool LedgerAcquire::addOnComplete (FUNCTION_TYPE trigger) +bool InboundLedger::addOnComplete (FUNCTION_TYPE trigger) { boost::recursive_mutex::scoped_lock sl (mLock); @@ -276,13 +276,13 @@ bool LedgerAcquire::addOnComplete (FUNCTION_TYPE return true; } -void LedgerAcquire::trigger (Peer::ref peer) +void InboundLedger::trigger (Peer::ref peer) { boost::recursive_mutex::scoped_lock sl (mLock); if (isDone ()) { - WriteLog (lsDEBUG, LedgerAcquire) << "Trigger on ledger: " << mHash << + WriteLog (lsDEBUG, InboundLedger) << "Trigger on ledger: " << mHash << (mAborted ? " aborted" : "") << (mComplete ? " completed" : "") << (mFailed ? " failed" : ""); return; } @@ -290,21 +290,21 @@ void LedgerAcquire::trigger (Peer::ref peer) if ((mWaitCount > 0) && peer) { mRecentPeers.push_back (peer->getPeerId ()); - WriteLog (lsTRACE, LedgerAcquire) << "Deferring peer"; + WriteLog (lsTRACE, InboundLedger) << "Deferring peer"; return; } - if (ShouldLog (lsTRACE, LedgerAcquire)) + if (ShouldLog (lsTRACE, InboundLedger)) { if (peer) - WriteLog (lsTRACE, LedgerAcquire) << "Trigger acquiring ledger " << mHash << " from " << peer->getIP (); + WriteLog (lsTRACE, InboundLedger) << "Trigger acquiring ledger " << mHash << " from " << peer->getIP (); else - WriteLog (lsTRACE, LedgerAcquire) << "Trigger acquiring ledger " << mHash; + WriteLog (lsTRACE, InboundLedger) << "Trigger acquiring ledger " << mHash; if (mComplete || mFailed) - WriteLog (lsTRACE, LedgerAcquire) << "complete=" << mComplete << " failed=" << mFailed; + WriteLog (lsTRACE, InboundLedger) << "complete=" << mComplete << " failed=" << mFailed; else - WriteLog (lsTRACE, LedgerAcquire) << "base=" << mHaveBase << " tx=" << mHaveTransactions << " as=" << mHaveState; + WriteLog (lsTRACE, InboundLedger) << "base=" << mHaveBase << " tx=" << mHaveTransactions << " as=" << mHaveState; } if (!mHaveBase) @@ -313,7 +313,7 @@ void LedgerAcquire::trigger (Peer::ref peer) if (mFailed) { - WriteLog (lsWARNING, LedgerAcquire) << " failed local for " << mHash; + WriteLog (lsWARNING, InboundLedger) << " failed local for " << mHash; } } @@ -336,7 +336,7 @@ void LedgerAcquire::trigger (Peer::ref peer) bool typeSet = false; BOOST_FOREACH (neededHash_t & p, need) { - WriteLog (lsWARNING, LedgerAcquire) << "Want: " << p.second; + WriteLog (lsWARNING, InboundLedger) << "Want: " << p.second; if (!typeSet) { @@ -366,11 +366,11 @@ void LedgerAcquire::trigger (Peer::ref peer) } } } - WriteLog (lsINFO, LedgerAcquire) << "Attempting by hash fetch for ledger " << mHash; + WriteLog (lsINFO, InboundLedger) << "Attempting by hash fetch for ledger " << mHash; } else { - WriteLog (lsINFO, LedgerAcquire) << "getNeededHashes says acquire is complete"; + WriteLog (lsINFO, InboundLedger) << "getNeededHashes says acquire is complete"; mHaveBase = true; mHaveTransactions = true; mHaveState = true; @@ -382,7 +382,7 @@ void LedgerAcquire::trigger (Peer::ref peer) if (!mHaveBase && !mFailed) { tmGL.set_itype (ripple::liBASE); - WriteLog (lsTRACE, LedgerAcquire) << "Sending base request to " << (peer ? "selected peer" : "all peers"); + WriteLog (lsTRACE, InboundLedger) << "Sending base request to " << (peer ? "selected peer" : "all peers"); sendRequest (tmGL, peer); return; } @@ -399,7 +399,7 @@ void LedgerAcquire::trigger (Peer::ref peer) // we need the root node tmGL.set_itype (ripple::liTX_NODE); * (tmGL.add_nodeids ()) = SHAMapNode ().getRawString (); - WriteLog (lsTRACE, LedgerAcquire) << "Sending TX root request to " << (peer ? "selected peer" : "all peers"); + WriteLog (lsTRACE, InboundLedger) << "Sending TX root request to " << (peer ? "selected peer" : "all peers"); sendRequest (tmGL, peer); } else @@ -435,7 +435,7 @@ void LedgerAcquire::trigger (Peer::ref peer) { * (tmGL.add_nodeids ()) = it.getRawString (); } - WriteLog (lsTRACE, LedgerAcquire) << "Sending TX node " << nodeIDs.size () + WriteLog (lsTRACE, InboundLedger) << "Sending TX node " << nodeIDs.size () << " request to " << (peer ? "selected peer" : "all peers"); sendRequest (tmGL, peer); } @@ -452,7 +452,7 @@ void LedgerAcquire::trigger (Peer::ref peer) // we need the root node tmGL.set_itype (ripple::liAS_NODE); * (tmGL.add_nodeids ()) = SHAMapNode ().getRawString (); - WriteLog (lsTRACE, LedgerAcquire) << "Sending AS root request to " << (peer ? "selected peer" : "all peers"); + WriteLog (lsTRACE, InboundLedger) << "Sending AS root request to " << (peer ? "selected peer" : "all peers"); sendRequest (tmGL, peer); } else @@ -486,9 +486,9 @@ void LedgerAcquire::trigger (Peer::ref peer) tmGL.set_itype (ripple::liAS_NODE); BOOST_FOREACH (SHAMapNode & it, nodeIDs) * (tmGL.add_nodeids ()) = it.getRawString (); - WriteLog (lsTRACE, LedgerAcquire) << "Sending AS node " << nodeIDs.size () + WriteLog (lsTRACE, InboundLedger) << "Sending AS node " << nodeIDs.size () << " request to " << (peer ? "selected peer" : "all peers"); - CondLog (nodeIDs.size () == 1, lsTRACE, LedgerAcquire) << "AS node: " << nodeIDs[0]; + CondLog (nodeIDs.size () == 1, lsTRACE, InboundLedger) << "AS node: " << nodeIDs[0]; sendRequest (tmGL, peer); } } @@ -499,7 +499,7 @@ void LedgerAcquire::trigger (Peer::ref peer) if (mComplete || mFailed) { - WriteLog (lsDEBUG, LedgerAcquire) << "Done:" << (mComplete ? " complete" : "") << (mFailed ? " failed " : " ") + WriteLog (lsDEBUG, InboundLedger) << "Done:" << (mComplete ? " complete" : "") << (mFailed ? " failed " : " ") << mLedger->getLedgerSeq (); sl.unlock (); done (); @@ -558,7 +558,7 @@ int PeerSet::getPeerCount () const return ret; } -void LedgerAcquire::filterNodes (std::vector& nodeIDs, std::vector& nodeHashes, +void InboundLedger::filterNodes (std::vector& nodeIDs, std::vector& nodeHashes, std::set& recentNodes, int max, bool aggressive) { // ask for new nodes in preference to ones we've already asked for @@ -606,7 +606,7 @@ void LedgerAcquire::filterNodes (std::vector& nodeIDs, std::vector& nodeIDs, std::vectorgetHash () != mHash) { - WriteLog (lsWARNING, LedgerAcquire) << "Acquire hash mismatch"; - WriteLog (lsWARNING, LedgerAcquire) << mLedger->getHash () << "!=" << mHash; + WriteLog (lsWARNING, InboundLedger) << "Acquire hash mismatch"; + WriteLog (lsWARNING, InboundLedger) << mLedger->getHash () << "!=" << mHash; mLedger.reset (); #ifdef TRUST_NETWORK assert (false); @@ -664,7 +664,7 @@ bool LedgerAcquire::takeBase (const std::string& data) // data must not have has return true; } -bool LedgerAcquire::takeTxNode (const std::list& nodeIDs, +bool InboundLedger::takeTxNode (const std::list& nodeIDs, const std::list< Blob >& data, SHAMapAddNode& san) { boost::recursive_mutex::scoped_lock sl (mLock); @@ -712,17 +712,17 @@ bool LedgerAcquire::takeTxNode (const std::list& nodeIDs, return true; } -bool LedgerAcquire::takeAsNode (const std::list& nodeIDs, +bool InboundLedger::takeAsNode (const std::list& nodeIDs, const std::list< Blob >& data, SHAMapAddNode& san) { - WriteLog (lsTRACE, LedgerAcquire) << "got ASdata (" << nodeIDs.size () << ") acquiring ledger " << mHash; - CondLog (nodeIDs.size () == 1, lsTRACE, LedgerAcquire) << "got AS node: " << nodeIDs.front (); + WriteLog (lsTRACE, InboundLedger) << "got ASdata (" << nodeIDs.size () << ") acquiring ledger " << mHash; + CondLog (nodeIDs.size () == 1, lsTRACE, InboundLedger) << "got AS node: " << nodeIDs.front (); boost::recursive_mutex::scoped_lock sl (mLock); if (!mHaveBase) { - WriteLog (lsWARNING, LedgerAcquire) << "Don't have ledger base"; + WriteLog (lsWARNING, InboundLedger) << "Don't have ledger base"; return false; } @@ -740,13 +740,13 @@ bool LedgerAcquire::takeAsNode (const std::list& nodeIDs, if (!san.combine (mLedger->peekAccountStateMap ()->addRootNode (mLedger->getAccountHash (), *nodeDatait, snfWIRE, &tFilter))) { - WriteLog (lsWARNING, LedgerAcquire) << "Bad ledger base"; + WriteLog (lsWARNING, InboundLedger) << "Bad ledger base"; return false; } } else if (!san.combine (mLedger->peekAccountStateMap ()->addKnownNode (*nodeIDit, *nodeDatait, &tFilter))) { - WriteLog (lsWARNING, LedgerAcquire) << "Unable to add AS node"; + WriteLog (lsWARNING, InboundLedger) << "Unable to add AS node"; return false; } @@ -769,7 +769,7 @@ bool LedgerAcquire::takeAsNode (const std::list& nodeIDs, return true; } -bool LedgerAcquire::takeAsRootNode (Blob const& data, SHAMapAddNode& san) +bool InboundLedger::takeAsRootNode (Blob const& data, SHAMapAddNode& san) { boost::recursive_mutex::scoped_lock sl (mLock); @@ -784,7 +784,7 @@ bool LedgerAcquire::takeAsRootNode (Blob const& data, SHAMapAddNode& san) mLedger->peekAccountStateMap ()->addRootNode (mLedger->getAccountHash (), data, snfWIRE, &tFilter)); } -bool LedgerAcquire::takeTxRootNode (Blob const& data, SHAMapAddNode& san) +bool InboundLedger::takeTxRootNode (Blob const& data, SHAMapAddNode& san) { boost::recursive_mutex::scoped_lock sl (mLock); @@ -799,7 +799,7 @@ bool LedgerAcquire::takeTxRootNode (Blob const& data, SHAMapAddNode& san) mLedger->peekTransactionMap ()->addRootNode (mLedger->getTransHash (), data, snfWIRE, &tFilter)); } -std::vector LedgerAcquire::getNeededHashes () +std::vector InboundLedger::getNeededHashes () { std::vector ret; @@ -828,7 +828,7 @@ std::vector LedgerAcquire::getNeededHashes () return ret; } -Json::Value LedgerAcquire::getJson (int) +Json::Value InboundLedger::getJson (int) { Json::Value ret (Json::objectValue); ret["hash"] = mHash.GetHex (); diff --git a/src/cpp/ripple/ripple_LedgerAcquire.h b/src/cpp/ripple/ripple_InboundLedger.h similarity index 84% rename from src/cpp/ripple/ripple_LedgerAcquire.h rename to src/cpp/ripple/ripple_InboundLedger.h index 1e0c404f9..fe1f44b88 100644 --- a/src/cpp/ripple/ripple_LedgerAcquire.h +++ b/src/cpp/ripple/ripple_InboundLedger.h @@ -4,24 +4,24 @@ */ //============================================================================== -#ifndef RIPPLE_LEDGERACQUIRE_H -#define RIPPLE_LEDGERACQUIRE_H +#ifndef RIPPLE_INBOUNDLEDGER_H +#define RIPPLE_INBOUNDLEDGER_H -DEFINE_INSTANCE (LedgerAcquire); +DEFINE_INSTANCE (InboundLedger); // VFALCO TODO Rename to InboundLedger // A ledger we are trying to acquire -class LedgerAcquire : private IS_INSTANCE (LedgerAcquire) +class InboundLedger : private IS_INSTANCE (InboundLedger) , public PeerSet - , public boost::enable_shared_from_this + , public boost::enable_shared_from_this { public: - typedef boost::shared_ptr pointer; + typedef boost::shared_ptr pointer; public: - LedgerAcquire (uint256 const& hash, uint32 seq); + InboundLedger (uint256 const& hash, uint32 seq); - virtual ~LedgerAcquire () + virtual ~InboundLedger () { ; } @@ -63,7 +63,7 @@ public: } // VFALCO TODO Make thise the Listener / Observer pattern - bool addOnComplete (FUNCTION_TYPE); + bool addOnComplete (FUNCTION_TYPE); bool takeBase (const std::string& data); bool takeTxNode (const std::list& IDs, const std::list& data, @@ -117,7 +117,7 @@ private: std::vector mRecentPeers; - std::vector > mOnComplete; + std::vector > mOnComplete; }; #endif diff --git a/src/cpp/ripple/ripple_LedgerAcquireMaster.cpp b/src/cpp/ripple/ripple_InboundLedgers.cpp similarity index 71% rename from src/cpp/ripple/ripple_LedgerAcquireMaster.cpp rename to src/cpp/ripple/ripple_InboundLedgers.cpp index fcdd1608c..6873b1e9d 100644 --- a/src/cpp/ripple/ripple_LedgerAcquireMaster.cpp +++ b/src/cpp/ripple/ripple_InboundLedgers.cpp @@ -4,11 +4,11 @@ */ //============================================================================== -LedgerAcquire::pointer LedgerAcquireMaster::findCreate (uint256 const& hash, uint32 seq) +InboundLedger::pointer InboundLedgers::findCreate (uint256 const& hash, uint32 seq) { assert (hash.isNonZero ()); boost::mutex::scoped_lock sl (mLock); - LedgerAcquire::pointer& ptr = mLedgers[hash]; + InboundLedger::pointer& ptr = mLedgers[hash]; if (ptr) { @@ -16,7 +16,7 @@ LedgerAcquire::pointer LedgerAcquireMaster::findCreate (uint256 const& hash, uin return ptr; } - ptr = boost::make_shared (hash, seq); + ptr = boost::make_shared (hash, seq); if (!ptr->isDone ()) { @@ -29,17 +29,17 @@ LedgerAcquire::pointer LedgerAcquireMaster::findCreate (uint256 const& hash, uin ledger->setClosed (); ledger->setImmutable (); theApp->getLedgerMaster ().storeLedger (ledger); - WriteLog (lsDEBUG, LedgerAcquire) << "Acquiring ledger we already have: " << hash; + WriteLog (lsDEBUG, InboundLedger) << "Acquiring ledger we already have: " << hash; } return ptr; } -LedgerAcquire::pointer LedgerAcquireMaster::find (uint256 const& hash) +InboundLedger::pointer InboundLedgers::find (uint256 const& hash) { assert (hash.isNonZero ()); boost::mutex::scoped_lock sl (mLock); - std::map::iterator it = mLedgers.find (hash); + std::map::iterator it = mLedgers.find (hash); if (it != mLedgers.end ()) { @@ -47,26 +47,26 @@ LedgerAcquire::pointer LedgerAcquireMaster::find (uint256 const& hash) return it->second; } - return LedgerAcquire::pointer (); + return InboundLedger::pointer (); } -bool LedgerAcquireMaster::hasLedger (uint256 const& hash) +bool InboundLedgers::hasLedger (uint256 const& hash) { assert (hash.isNonZero ()); boost::mutex::scoped_lock sl (mLock); return mLedgers.find (hash) != mLedgers.end (); } -void LedgerAcquireMaster::dropLedger (uint256 const& hash) +void InboundLedgers::dropLedger (uint256 const& hash) { assert (hash.isNonZero ()); boost::mutex::scoped_lock sl (mLock); mLedgers.erase (hash); } -bool LedgerAcquireMaster::awaitLedgerData (uint256 const& ledgerHash) +bool InboundLedgers::awaitLedgerData (uint256 const& ledgerHash) { - LedgerAcquire::pointer ledger = find (ledgerHash); + InboundLedger::pointer ledger = find (ledgerHash); if (!ledger) return false; @@ -75,19 +75,19 @@ bool LedgerAcquireMaster::awaitLedgerData (uint256 const& ledgerHash) return true; } -void LedgerAcquireMaster::gotLedgerData (Job&, uint256 hash, +void InboundLedgers::gotLedgerData (Job&, uint256 hash, boost::shared_ptr packet_ptr, boost::weak_ptr wPeer) { ripple::TMLedgerData& packet = *packet_ptr; Peer::pointer peer = wPeer.lock (); - WriteLog (lsTRACE, LedgerAcquire) << "Got data (" << packet.nodes ().size () << ") for acquiring ledger: " << hash; + WriteLog (lsTRACE, InboundLedger) << "Got data (" << packet.nodes ().size () << ") for acquiring ledger: " << hash; - LedgerAcquire::pointer ledger = find (hash); + InboundLedger::pointer ledger = find (hash); if (!ledger) { - WriteLog (lsTRACE, LedgerAcquire) << "Got data for ledger we're not acquiring"; + WriteLog (lsTRACE, InboundLedger) << "Got data for ledger we're not acquiring"; if (peer) peer->punishPeer (LT_InvalidRequest); @@ -104,14 +104,14 @@ void LedgerAcquireMaster::gotLedgerData (Job&, uint256 hash, { if (packet.nodes_size () < 1) { - WriteLog (lsWARNING, LedgerAcquire) << "Got empty base data"; + WriteLog (lsWARNING, InboundLedger) << "Got empty base data"; peer->punishPeer (LT_InvalidRequest); return; } if (!ledger->takeBase (packet.nodes (0).nodedata ())) { - WriteLog (lsWARNING, LedgerAcquire) << "Got invalid base data"; + WriteLog (lsWARNING, InboundLedger) << "Got invalid base data"; peer->punishPeer (LT_InvalidRequest); return; } @@ -120,12 +120,12 @@ void LedgerAcquireMaster::gotLedgerData (Job&, uint256 hash, if ((packet.nodes ().size () > 1) && !ledger->takeAsRootNode (strCopy (packet.nodes (1).nodedata ()), san)) { - WriteLog (lsWARNING, LedgerAcquire) << "Included ASbase invalid"; + WriteLog (lsWARNING, InboundLedger) << "Included ASbase invalid"; } if ((packet.nodes ().size () > 2) && !ledger->takeTxRootNode (strCopy (packet.nodes (2).nodedata ()), san)) { - WriteLog (lsWARNING, LedgerAcquire) << "Included TXbase invalid"; + WriteLog (lsWARNING, InboundLedger) << "Included TXbase invalid"; } if (!san.isInvalid ()) @@ -134,7 +134,7 @@ void LedgerAcquireMaster::gotLedgerData (Job&, uint256 hash, ledger->trigger (peer); } else - WriteLog (lsDEBUG, LedgerAcquire) << "Peer sends invalid base data"; + WriteLog (lsDEBUG, InboundLedger) << "Peer sends invalid base data"; return; } @@ -146,7 +146,7 @@ void LedgerAcquireMaster::gotLedgerData (Job&, uint256 hash, if (packet.nodes ().size () <= 0) { - WriteLog (lsINFO, LedgerAcquire) << "Got response with no nodes"; + WriteLog (lsINFO, InboundLedger) << "Got response with no nodes"; peer->punishPeer (LT_InvalidRequest); return; } @@ -157,7 +157,7 @@ void LedgerAcquireMaster::gotLedgerData (Job&, uint256 hash, if (!node.has_nodeid () || !node.has_nodedata ()) { - WriteLog (lsWARNING, LedgerAcquire) << "Got bad node"; + WriteLog (lsWARNING, InboundLedger) << "Got bad node"; peer->punishPeer (LT_InvalidRequest); return; } @@ -179,23 +179,23 @@ void LedgerAcquireMaster::gotLedgerData (Job&, uint256 hash, ledger->trigger (peer); } else - WriteLog (lsDEBUG, LedgerAcquire) << "Peer sends invalid node data"; + WriteLog (lsDEBUG, InboundLedger) << "Peer sends invalid node data"; return; } - WriteLog (lsWARNING, LedgerAcquire) << "Not sure what ledger data we got"; + WriteLog (lsWARNING, InboundLedger) << "Not sure what ledger data we got"; peer->punishPeer (LT_InvalidRequest); } -void LedgerAcquireMaster::sweep () +void InboundLedgers::sweep () { mRecentFailures.sweep (); int now = UptimeTimer::getInstance ().getElapsedSeconds (); boost::mutex::scoped_lock sl (mLock); - std::map::iterator it = mLedgers.begin (); + std::map::iterator it = mLedgers.begin (); while (it != mLedgers.end ()) { @@ -211,12 +211,12 @@ void LedgerAcquireMaster::sweep () } } -int LedgerAcquireMaster::getFetchCount (int& timeoutCount) +int InboundLedgers::getFetchCount (int& timeoutCount) { timeoutCount = 0; int ret = 0; { - typedef std::pair u256_acq_pair; + typedef std::pair u256_acq_pair; boost::mutex::scoped_lock sl (mLock); BOOST_FOREACH (const u256_acq_pair & it, mLedgers) { @@ -230,19 +230,19 @@ int LedgerAcquireMaster::getFetchCount (int& timeoutCount) return ret; } -void LedgerAcquireMaster::gotFetchPack (Job&) +void InboundLedgers::gotFetchPack (Job&) { - std::vector acquires; + std::vector acquires; { boost::mutex::scoped_lock sl (mLock); acquires.reserve (mLedgers.size ()); - typedef std::pair u256_acq_pair; + typedef std::pair u256_acq_pair; BOOST_FOREACH (const u256_acq_pair & it, mLedgers) acquires.push_back (it.second); } - BOOST_FOREACH (const LedgerAcquire::pointer & acquire, acquires) + BOOST_FOREACH (const InboundLedger::pointer & acquire, acquires) { acquire->checkLocal (); } diff --git a/src/cpp/ripple/ripple_LedgerAcquireMaster.h b/src/cpp/ripple/ripple_InboundLedgers.h similarity index 53% rename from src/cpp/ripple/ripple_LedgerAcquireMaster.h rename to src/cpp/ripple/ripple_InboundLedgers.h index b79bde96f..0006af1dc 100644 --- a/src/cpp/ripple/ripple_LedgerAcquireMaster.h +++ b/src/cpp/ripple/ripple_InboundLedgers.h @@ -4,37 +4,53 @@ */ //============================================================================== -#ifndef RIPPLE_LEDGERACQUIREMASTER_H -#define RIPPLE_LEDGERACQUIREMASTER_H +#ifndef RIPPLE_INBOUNDLEDGERS_H +#define RIPPLE_INBOUNDLEDGERS_H /** Manages the lifetime of inbound ledgers. + + @see InboundLedger */ // VFALCO TODO Rename to InboundLedgers // VFALCO TODO Create abstract interface -class LedgerAcquireMaster +class InboundLedgers { public: // How long before we try again to acquire the same ledger static const int kReacquireIntervalSeconds = 600; - LedgerAcquireMaster () + InboundLedgers () : mRecentFailures ("LedgerAcquireRecentFailures", 0, kReacquireIntervalSeconds) { } - LedgerAcquire::pointer findCreate (uint256 const& hash, uint32 seq); - LedgerAcquire::pointer find (uint256 const& hash); - bool hasLedger (uint256 const& ledgerHash); - void dropLedger (uint256 const& ledgerHash); + // VFALCO TODO Should this be called findOrAdd ? + // + InboundLedger::pointer findCreate (uint256 const& hash, uint32 seq); - bool awaitLedgerData (uint256 const& ledgerHash); - void gotLedgerData (Job&, uint256 hash, boost::shared_ptr packet, boost::weak_ptr peer); + InboundLedger::pointer find (uint256 const& hash); + + bool hasLedger (LedgerHash const& ledgerHash); + + void dropLedger (LedgerHash const& ledgerHash); + + bool awaitLedgerData (LedgerHash const& ledgerHash); + + // VFALCO TODO Why is hash passed by value? + // VFALCO TODO Remove the dependency on the Peer object. + // + void gotLedgerData (Job&, + LedgerHash hash, + boost::shared_ptr packet, + boost::weak_ptr peer); int getFetchCount (int& timeoutCount); + void logFailure (uint256 const& h) { mRecentFailures.add (h); } + bool isFailure (uint256 const& h) { return mRecentFailures.isPresent (h, false); @@ -45,10 +61,8 @@ public: private: boost::mutex mLock; - std::map mLedgers; + std::map mLedgers; KeyCache mRecentFailures; }; #endif - -// vim:ts=4 diff --git a/src/cpp/ripple/ripple_LedgerConsensus.cpp b/src/cpp/ripple/ripple_LedgerConsensus.cpp index b266a9f1c..d01ab5eaa 100644 --- a/src/cpp/ripple/ripple_LedgerConsensus.cpp +++ b/src/cpp/ripple/ripple_LedgerConsensus.cpp @@ -208,9 +208,9 @@ void LedgerConsensus::handleLCL (uint256 const& lclHash) WriteLog (lsWARNING, LedgerConsensus) << "Need consensus ledger " << mPrevLedgerHash; if (mAcquiringLedger) - theApp->getMasterLedgerAcquire ().dropLedger (mAcquiringLedger->getHash ()); + theApp->getInboundLedgers ().dropLedger (mAcquiringLedger->getHash ()); - mAcquiringLedger = theApp->getMasterLedgerAcquire ().findCreate (mPrevLedgerHash, 0); + mAcquiringLedger = theApp->getInboundLedgers ().findCreate (mPrevLedgerHash, 0); mHaveCorrectLCL = false; return; } diff --git a/src/cpp/ripple/ripple_LedgerConsensus.h b/src/cpp/ripple/ripple_LedgerConsensus.h index 9b8b983b5..892de3602 100644 --- a/src/cpp/ripple/ripple_LedgerConsensus.h +++ b/src/cpp/ripple/ripple_LedgerConsensus.h @@ -120,7 +120,7 @@ private: uint32 mCloseTime; // The wall time this ledger closed uint256 mPrevLedgerHash, mNewLedgerHash; Ledger::pointer mPreviousLedger; - LedgerAcquire::pointer mAcquiringLedger; + InboundLedger::pointer mAcquiringLedger; LedgerProposal::pointer mOurPosition; RippleAddress mValPublic, mValPrivate; bool mProposing, mValidating, mHaveCorrectLCL, mConsensusFail; diff --git a/src/cpp/ripple/ripple_Peer.cpp b/src/cpp/ripple/ripple_Peer.cpp index 35112a8ec..0ce93504a 100644 --- a/src/cpp/ripple/ripple_Peer.cpp +++ b/src/cpp/ripple/ripple_Peer.cpp @@ -2070,9 +2070,9 @@ void PeerImp::recvLedger (const boost::shared_ptr& packet_ return; } - if (theApp->getMasterLedgerAcquire ().awaitLedgerData (hash)) + if (theApp->getInboundLedgers ().awaitLedgerData (hash)) theApp->getJobQueue ().addJob (jtLEDGER_DATA, "gotLedgerData", - BIND_TYPE (&LedgerAcquireMaster::gotLedgerData, &theApp->getMasterLedgerAcquire (), + BIND_TYPE (&InboundLedgers::gotLedgerData, &theApp->getInboundLedgers (), P_1, hash, packet_ptr, boost::weak_ptr (shared_from_this ()))); else punishPeer (LT_UnwantedData); diff --git a/src/cpp/ripple/ripple_PeerSet.cpp b/src/cpp/ripple/ripple_PeerSet.cpp index ce1cf1ac4..b849ed587 100644 --- a/src/cpp/ripple/ripple_PeerSet.cpp +++ b/src/cpp/ripple/ripple_PeerSet.cpp @@ -4,7 +4,7 @@ */ //============================================================================== -class LedgerAcquire; +class InboundLedger; PeerSet::PeerSet (uint256 const& hash, int interval) : mHash (hash) @@ -52,7 +52,7 @@ void PeerSet::invokeOnTimer () if (!mProgress) { ++mTimeouts; - WriteLog (lsWARNING, LedgerAcquire) << "Timeout(" << mTimeouts << ") pc=" << mPeers.size () << " acquiring " << mHash; + WriteLog (lsWARNING, InboundLedger) << "Timeout(" << mTimeouts << ") pc=" << mPeers.size () << " acquiring " << mHash; onTimer (false); } else @@ -78,7 +78,7 @@ void PeerSet::TimerEntry (boost::weak_ptr wptr, const boost::system::er if (jc > 4) { - WriteLog (lsDEBUG, LedgerAcquire) << "Deferring PeerSet timer due to load"; + WriteLog (lsDEBUG, InboundLedger) << "Deferring PeerSet timer due to load"; ptr->setTimer (); } else diff --git a/src/cpp/ripple/ripple_TransactionAcquire.cpp b/src/cpp/ripple/ripple_TransactionAcquire.cpp index eb935bf4a..0d5c58184 100644 --- a/src/cpp/ripple/ripple_TransactionAcquire.cpp +++ b/src/cpp/ripple/ripple_TransactionAcquire.cpp @@ -22,7 +22,7 @@ static void TACompletionHandler (uint256 hash, SHAMap::pointer map) { boost::recursive_mutex::scoped_lock sl (theApp->getMasterLock ()); theApp->getOPs ().mapComplete (hash, map); - theApp->getMasterLedgerAcquire ().dropLedger (hash); + theApp->getInboundLedgers ().dropLedger (hash); } void TransactionAcquire::done ()