Cleanups. Remove some unneeded filters.

This commit is contained in:
JoelKatz
2013-01-15 10:20:41 -08:00
parent 343d9edb51
commit 90010b8870

View File

@@ -97,24 +97,21 @@ bool LedgerAcquire::tryLocal()
{ {
mLedger = theApp->getLedgerMaster().getLedgerByHash(mHash); mLedger = theApp->getLedgerMaster().getLedgerByHash(mHash);
if (!mLedger) if (!mLedger)
{
cLog(lsDEBUG) << "root ledger node not local";
return false; return false;
}
} }
else else
{
mLedger = boost::make_shared<Ledger>(strCopy(node->getData()), true); mLedger = boost::make_shared<Ledger>(strCopy(node->getData()), true);
}
if (mLedger->getHash() != mHash) if (mLedger->getHash() != mHash)
{ // We know for a fact the ledger can never be acquired { // We know for a fact the ledger can never be acquired
cLog(lsWARNING) << mHash << " cannot be a ledger"; cLog(lsWARNING) << mHash << " cannot be a ledger";
mFailed = true; mFailed = true;
return true; return true;
} }
mHaveBase = true; mHaveBase = true;
if (!mLedger->getTransHash()) if (mLedger->getTransHash().isZero())
{ {
cLog(lsDEBUG) << "No TXNs to fetch"; cLog(lsDEBUG) << "No TXNs to fetch";
mHaveTransactions = true; mHaveTransactions = true;
@@ -137,7 +134,7 @@ bool LedgerAcquire::tryLocal()
} }
} }
if (!mLedger->getAccountHash()) if (mLedger->getAccountHash().isZero())
mHaveState = true; mHaveState = true;
else else
{ {
@@ -230,18 +227,18 @@ void LedgerAcquire::done()
return; return;
mSignaled = true; mSignaled = true;
touch(); touch();
#ifdef LA_DEBUG #ifdef LA_DEBUG
cLog(lsTRACE) << "Done acquiring ledger " << mHash; cLog(lsTRACE) << "Done acquiring ledger " << mHash;
#endif #endif
std::vector< boost::function<void (LedgerAcquire::pointer)> > triggers;
assert(isComplete() || isFailed()); assert(isComplete() || isFailed());
std::vector< boost::function<void (LedgerAcquire::pointer)> > triggers;
{ {
boost::recursive_mutex::scoped_lock sl(mLock); boost::recursive_mutex::scoped_lock sl(mLock);
triggers = mOnComplete; triggers.swap(mOnComplete);
} }
mOnComplete.clear();
if (isComplete() && !isFailed() && mLedger) if (isComplete() && !isFailed() && mLedger)
{ {
@@ -384,8 +381,7 @@ void LedgerAcquire::trigger(Peer::ref peer)
std::vector<uint256> nodeHashes; std::vector<uint256> nodeHashes;
nodeIDs.reserve(256); nodeIDs.reserve(256);
nodeHashes.reserve(256); nodeHashes.reserve(256);
TransactionStateSF tFilter(mLedger->getHash(), mLedger->getLedgerSeq()); mLedger->peekTransactionMap()->getMissingNodes(nodeIDs, nodeHashes, 256, NULL);
mLedger->peekTransactionMap()->getMissingNodes(nodeIDs, nodeHashes, 256, &tFilter);
if (nodeIDs.empty()) if (nodeIDs.empty())
{ {
if (!mLedger->peekTransactionMap()->isValid()) if (!mLedger->peekTransactionMap()->isValid())
@@ -432,8 +428,7 @@ void LedgerAcquire::trigger(Peer::ref peer)
std::vector<uint256> nodeHashes; std::vector<uint256> nodeHashes;
nodeIDs.reserve(256); nodeIDs.reserve(256);
nodeHashes.reserve(256); nodeHashes.reserve(256);
AccountStateSF aFilter(mLedger->getHash(), mLedger->getLedgerSeq()); mLedger->peekAccountStateMap()->getMissingNodes(nodeIDs, nodeHashes, 256, NULL);
mLedger->peekAccountStateMap()->getMissingNodes(nodeIDs, nodeHashes, 256, &aFilter);
if (nodeIDs.empty()) if (nodeIDs.empty())
{ {
if (!mLedger->peekAccountStateMap()->isValid()) if (!mLedger->peekAccountStateMap()->isValid())
@@ -606,10 +601,12 @@ bool LedgerAcquire::takeBase(const std::string& data) // data must not have hash
bool LedgerAcquire::takeTxNode(const std::list<SHAMapNode>& nodeIDs, bool LedgerAcquire::takeTxNode(const std::list<SHAMapNode>& nodeIDs,
const std::list< std::vector<unsigned char> >& data, SMAddNode& san) const std::list< std::vector<unsigned char> >& data, SMAddNode& san)
{ {
if (!mHaveBase) return false; if (!mHaveBase)
return false;
std::list<SHAMapNode>::const_iterator nodeIDit = nodeIDs.begin(); std::list<SHAMapNode>::const_iterator nodeIDit = nodeIDs.begin();
std::list< std::vector<unsigned char> >::const_iterator nodeDatait = data.begin(); std::list< std::vector<unsigned char> >::const_iterator nodeDatait = data.begin();
TransactionStateSF tFilter(mLedger->getHash(), mLedger->getLedgerSeq()); TransactionStateSF tFilter(mLedger->getLedgerSeq());
while (nodeIDit != nodeIDs.end()) while (nodeIDit != nodeIDs.end())
{ {
if (nodeIDit->isRoot()) if (nodeIDit->isRoot())
@@ -653,7 +650,7 @@ bool LedgerAcquire::takeAsNode(const std::list<SHAMapNode>& nodeIDs,
std::list<SHAMapNode>::const_iterator nodeIDit = nodeIDs.begin(); std::list<SHAMapNode>::const_iterator nodeIDit = nodeIDs.begin();
std::list< std::vector<unsigned char> >::const_iterator nodeDatait = data.begin(); std::list< std::vector<unsigned char> >::const_iterator nodeDatait = data.begin();
AccountStateSF tFilter(mLedger->getHash(), mLedger->getLedgerSeq()); AccountStateSF tFilter(mLedger->getLedgerSeq());
while (nodeIDit != nodeIDs.end()) while (nodeIDit != nodeIDs.end())
{ {
if (nodeIDit->isRoot()) if (nodeIDit->isRoot())
@@ -690,7 +687,7 @@ bool LedgerAcquire::takeAsRootNode(const std::vector<unsigned char>& data, SMAdd
{ {
if (!mHaveBase) if (!mHaveBase)
return false; return false;
AccountStateSF tFilter(mLedger->getHash(), mLedger->getLedgerSeq()); AccountStateSF tFilter(mLedger->getLedgerSeq());
return san.combine( return san.combine(
mLedger->peekAccountStateMap()->addRootNode(mLedger->getAccountHash(), data, snfWIRE, &tFilter)); mLedger->peekAccountStateMap()->addRootNode(mLedger->getAccountHash(), data, snfWIRE, &tFilter));
} }
@@ -699,7 +696,7 @@ bool LedgerAcquire::takeTxRootNode(const std::vector<unsigned char>& data, SMAdd
{ {
if (!mHaveBase) if (!mHaveBase)
return false; return false;
TransactionStateSF tFilter(mLedger->getHash(), mLedger->getLedgerSeq()); TransactionStateSF tFilter(mLedger->getLedgerSeq());
return san.combine( return san.combine(
mLedger->peekTransactionMap()->addRootNode(mLedger->getTransHash(), data, snfWIRE, &tFilter)); mLedger->peekTransactionMap()->addRootNode(mLedger->getTransHash(), data, snfWIRE, &tFilter));
} }
@@ -847,7 +844,8 @@ SMAddNode LedgerAcquireMaster::gotLedgerData(ripple::TMLedgerData& packet, Peer:
{ {
cLog(lsWARNING) << "Included TXbase invalid"; cLog(lsWARNING) << "Included TXbase invalid";
} }
ledger->trigger(peer); if (!san.isInvalid())
ledger->trigger(peer);
return san; return san;
} }