diff --git a/src/TransactionEngine.cpp b/src/TransactionEngine.cpp index d82ce779e5..5d5ccbc688 100644 --- a/src/TransactionEngine.cpp +++ b/src/TransactionEngine.cpp @@ -630,11 +630,6 @@ TransactionEngineResult TransactionEngine::setAuthorized(const SerializedTransac return terSUCCESS; } -bool TransactionEngine::entryExists(SLE::pointer sleEntry) -{ - return mEntries.find(sleEntry) != mEntries.end(); -} - SLE::pointer TransactionEngine::entryCreate(LedgerEntryType letType, const uint256& uIndex) { assert(!uIndex.isZero()); @@ -643,29 +638,31 @@ SLE::pointer TransactionEngine::entryCreate(LedgerEntryType letType, const uint2 sleNew->setIndex(uIndex); - mEntries[sleNew] = taaCREATE; + mEntries[uIndex] = std::make_pair(sleNew, taaCREATE); return sleNew; } + void TransactionEngine::entryDelete(SLE::pointer sleEntry) { assert(sleEntry); - entryMap::const_iterator it = mEntries.find(sleEntry); + const uint256& uIndex = sleEntry->getIndex(); + entryMap::const_iterator it = mEntries.find(uIndex); - switch (it == mEntries.end() ? taaNONE : it->second) + switch (it == mEntries.end() ? taaNONE : it->second.second) { case taaCREATE: - assert(false); // Unexpected case. + assert(false); // Unexpected case. break; case taaMODIFY: case taaNONE: - mEntries[sleEntry] = taaDELETE; // Upgrade. + mEntries[uIndex] = std::make_pair(sleEntry, taaDELETE); // Upgrade. break; case taaDELETE: - nothing(); // No change. + nothing(); // No change. break; } } @@ -673,21 +670,22 @@ void TransactionEngine::entryDelete(SLE::pointer sleEntry) void TransactionEngine::entryModify(SLE::pointer sleEntry) { assert(sleEntry); - entryMap::const_iterator it = mEntries.find(sleEntry); + const uint256& uIndex = sleEntry->getIndex(); + entryMap::const_iterator it = mEntries.find(uIndex); - switch (it == mEntries.end() ? taaNONE : it->second) + switch (it == mEntries.end() ? taaNONE : it->second.second) { case taaDELETE: - assert(false); // Unexpected case. + assert(false); // Unexpected case. break; case taaNONE: - mEntries[sleEntry] = taaMODIFY; // Upgrade. + mEntries[uIndex] = std::make_pair(sleEntry, taaMODIFY); // Upgrade. break; case taaCREATE: case taaMODIFY: - nothing(); // No change. + nothing(); // No change. break; } } @@ -697,9 +695,9 @@ void TransactionEngine::txnWrite() // Write back the account states and add the transaction to the ledger BOOST_FOREACH(entryMap_value_type it, mEntries) { - const SLE::pointer& sleEntry = it.first; + const SLE::pointer& sleEntry = it.second.first; - switch (it.second) + switch (it.second.second) { case taaNONE: assert(false); @@ -727,7 +725,7 @@ void TransactionEngine::txnWrite() { Log(lsINFO) << "applyTransaction: taaDELETE: " << sleEntry->getText(); - if (!mLedger->peekAccountStateMap()->delItem(sleEntry->getIndex())) + if (!mLedger->peekAccountStateMap()->delItem(it.first)) assert(false); } break; diff --git a/src/TransactionEngine.h b/src/TransactionEngine.h index 2474299742..2f8e9db3fe 100644 --- a/src/TransactionEngine.h +++ b/src/TransactionEngine.h @@ -105,10 +105,10 @@ typedef std::pair Affe class TransactionEngine { private: - typedef boost::unordered_map entryMap; - typedef boost::unordered_map::iterator entryMap_iterator; - typedef boost::unordered_map::const_iterator entryMap_const_iterator; - typedef boost::unordered_map::iterator::value_type entryMap_value_type; + typedef boost::unordered_map > entryMap; + typedef entryMap::iterator entryMap_iterator; + typedef entryMap::const_iterator entryMap_const_iterator; + typedef entryMap::iterator::value_type entryMap_value_type; TransactionEngineResult dirAdd( uint64& uNodeDir, // Node of entry. @@ -169,7 +169,6 @@ protected: SLE::pointer entryCreate(LedgerEntryType letType, const uint256& uIndex); void entryDelete(SLE::pointer sleEntry); void entryModify(SLE::pointer sleEntry); - bool entryExists(SLE::pointer sleEntry); STAmount rippleHolds(const uint160& uAccountID, const uint160& uCurrency, const uint160& uIssuerID); STAmount rippleTransit(const uint160& uSenderID, const uint160& uReceiverID, const uint160& uIssuerID, const STAmount& saAmount);