diff --git a/src/ripple/app/ledger/AccountStateSF.cpp b/src/ripple/app/ledger/AccountStateSF.cpp index f1691e3fc6..3b3551b1e4 100644 --- a/src/ripple/app/ledger/AccountStateSF.cpp +++ b/src/ripple/app/ledger/AccountStateSF.cpp @@ -34,9 +34,8 @@ AccountStateSF::AccountStateSF(Application& app) } void AccountStateSF::gotNode (bool fromFilter, - SHAMapNodeID const& id, SHAMapHash const& nodeHash, - Blob& nodeData, + Blob&& nodeData, SHAMapTreeNode::TNType) const { // VFALCO SHAMapSync filters should be passed the SHAMap, the @@ -46,8 +45,7 @@ void AccountStateSF::gotNode (bool fromFilter, hotACCOUNT_NODE, std::move (nodeData), nodeHash.as_uint256()); } -bool AccountStateSF::haveNode (SHAMapNodeID const& id, - SHAMapHash const& nodeHash, +bool AccountStateSF::haveNode (SHAMapHash const& nodeHash, Blob& nodeData) const { return app_.getLedgerMaster ().getFetchPack (nodeHash.as_uint256(), nodeData); diff --git a/src/ripple/app/ledger/AccountStateSF.h b/src/ripple/app/ledger/AccountStateSF.h index 7b690b089a..7d27925f28 100644 --- a/src/ripple/app/ledger/AccountStateSF.h +++ b/src/ripple/app/ledger/AccountStateSF.h @@ -39,13 +39,11 @@ public: // Note that the nodeData is overwritten by this call void gotNode (bool fromFilter, - SHAMapNodeID const& id, SHAMapHash const& nodeHash, - Blob& nodeData, + Blob&& nodeData, SHAMapTreeNode::TNType) const override; - bool haveNode (SHAMapNodeID const& id, - SHAMapHash const& nodeHash, + bool haveNode (SHAMapHash const& nodeHash, Blob& nodeData) const override; }; diff --git a/src/ripple/app/ledger/ConsensusTransSetSF.cpp b/src/ripple/app/ledger/ConsensusTransSetSF.cpp index 8bc7a47009..1dc6c22ca9 100644 --- a/src/ripple/app/ledger/ConsensusTransSetSF.cpp +++ b/src/ripple/app/ledger/ConsensusTransSetSF.cpp @@ -39,8 +39,8 @@ ConsensusTransSetSF::ConsensusTransSetSF (Application& app, NodeCache& nodeCache } void ConsensusTransSetSF::gotNode ( - bool fromFilter, const SHAMapNodeID& id, SHAMapHash const& nodeHash, - Blob& nodeData, SHAMapTreeNode::TNType type) const + bool fromFilter, SHAMapHash const& nodeHash, + Blob&& nodeData, SHAMapTreeNode::TNType type) const { if (fromFilter) return; @@ -76,7 +76,7 @@ void ConsensusTransSetSF::gotNode ( } bool ConsensusTransSetSF::haveNode ( - const SHAMapNodeID& id, SHAMapHash const& nodeHash, Blob& nodeData) const + SHAMapHash const& nodeHash, Blob& nodeData) const { if (m_nodeCache.retrieve (nodeHash, nodeData)) return true; diff --git a/src/ripple/app/ledger/ConsensusTransSetSF.h b/src/ripple/app/ledger/ConsensusTransSetSF.h index 4542aecc91..c37f6272a8 100644 --- a/src/ripple/app/ledger/ConsensusTransSetSF.h +++ b/src/ripple/app/ledger/ConsensusTransSetSF.h @@ -40,13 +40,11 @@ public: // Note that the nodeData is overwritten by this call void gotNode (bool fromFilter, - SHAMapNodeID const& id, SHAMapHash const& nodeHash, - Blob& nodeData, + Blob&& nodeData, SHAMapTreeNode::TNType) const override; - bool haveNode (SHAMapNodeID const& id, - SHAMapHash const& nodeHash, + bool haveNode (SHAMapHash const& nodeHash, Blob& nodeData) const override; private: diff --git a/src/ripple/app/ledger/TransactionStateSF.cpp b/src/ripple/app/ledger/TransactionStateSF.cpp index 122683e04f..c2baa57d40 100644 --- a/src/ripple/app/ledger/TransactionStateSF.cpp +++ b/src/ripple/app/ledger/TransactionStateSF.cpp @@ -35,9 +35,8 @@ TransactionStateSF::TransactionStateSF(Application& app) // VFALCO This might be better as Blob&& void TransactionStateSF::gotNode (bool fromFilter, - SHAMapNodeID const& id, SHAMapHash const& nodeHash, - Blob& nodeData, + Blob&& nodeData, SHAMapTreeNode::TNType type) const { // VFALCO SHAMapSync filters should be passed the SHAMap, the @@ -50,8 +49,7 @@ void TransactionStateSF::gotNode (bool fromFilter, std::move (nodeData), nodeHash.as_uint256()); } -bool TransactionStateSF::haveNode (SHAMapNodeID const& id, - SHAMapHash const& nodeHash, +bool TransactionStateSF::haveNode (SHAMapHash const& nodeHash, Blob& nodeData) const { return app_.getLedgerMaster ().getFetchPack (nodeHash.as_uint256(), nodeData); diff --git a/src/ripple/app/ledger/TransactionStateSF.h b/src/ripple/app/ledger/TransactionStateSF.h index 1c68a69b65..9cbe19ffa0 100644 --- a/src/ripple/app/ledger/TransactionStateSF.h +++ b/src/ripple/app/ledger/TransactionStateSF.h @@ -40,13 +40,11 @@ public: // Note that the nodeData is overwritten by this call void gotNode (bool fromFilter, - SHAMapNodeID const& id, SHAMapHash const& nodeHash, - Blob& nodeData, + Blob&& nodeData, SHAMapTreeNode::TNType) const override; - bool haveNode (SHAMapNodeID const& id, - SHAMapHash const& nodeHash, + bool haveNode (SHAMapHash const& nodeHash, Blob& nodeData) const override; }; diff --git a/src/ripple/shamap/SHAMap.h b/src/ripple/shamap/SHAMap.h index 0bbc9d1d2c..e4a0fccf2b 100644 --- a/src/ripple/shamap/SHAMap.h +++ b/src/ripple/shamap/SHAMap.h @@ -229,12 +229,11 @@ private: std::shared_ptr fetchNodeFromDB (SHAMapHash const& hash) const; std::shared_ptr fetchNodeNT (SHAMapHash const& hash) const; std::shared_ptr fetchNodeNT ( - SHAMapNodeID const& id, SHAMapHash const& hash, SHAMapSyncFilter *filter) const; std::shared_ptr fetchNode (SHAMapHash const& hash) const; std::shared_ptr checkFilter(SHAMapHash const& hash, - SHAMapNodeID const& id, SHAMapSyncFilter* filter) const; + SHAMapSyncFilter* filter) const; /** Update hashes up to the root */ void dirtyUp (SharedPtrNodeStack& stack, @@ -275,7 +274,7 @@ private: // Descend with filter SHAMapAbstractNode* descendAsync (SHAMapInnerNode* parent, int branch, - SHAMapNodeID const& childID, SHAMapSyncFilter* filter, bool& pending) const; + SHAMapSyncFilter* filter, bool& pending) const; std::pair descend (SHAMapInnerNode* parent, SHAMapNodeID const& parentID, diff --git a/src/ripple/shamap/SHAMapSyncFilter.h b/src/ripple/shamap/SHAMapSyncFilter.h index cc6404f7a3..64e51c07f7 100644 --- a/src/ripple/shamap/SHAMapSyncFilter.h +++ b/src/ripple/shamap/SHAMapSyncFilter.h @@ -36,13 +36,11 @@ public: // Note that the nodeData is overwritten by this call virtual void gotNode (bool fromFilter, - SHAMapNodeID const& id, SHAMapHash const& nodeHash, - Blob& nodeData, + Blob&& nodeData, SHAMapTreeNode::TNType type) const = 0; - virtual bool haveNode (SHAMapNodeID const& id, - SHAMapHash const& nodeHash, + virtual bool haveNode (SHAMapHash const& nodeHash, Blob& nodeData) const = 0; }; diff --git a/src/ripple/shamap/impl/SHAMap.cpp b/src/ripple/shamap/impl/SHAMap.cpp index 27b07a6716..72905efa3a 100644 --- a/src/ripple/shamap/impl/SHAMap.cpp +++ b/src/ripple/shamap/impl/SHAMap.cpp @@ -180,18 +180,19 @@ SHAMap::fetchNodeFromDB (SHAMapHash const& hash) const // See if a sync filter has a node std::shared_ptr -SHAMap::checkFilter(SHAMapHash const& hash, SHAMapNodeID const& id, +SHAMap::checkFilter(SHAMapHash const& hash, SHAMapSyncFilter* filter) const { std::shared_ptr node; Blob nodeData; - if (filter->haveNode (id, hash, nodeData)) + if (filter->haveNode (hash, nodeData)) { node = SHAMapAbstractNode::make( nodeData, 0, snfPREFIX, hash, true, f_.journal ()); if (node) { - filter->gotNode (true, id, hash, nodeData, node->getType ()); + filter->gotNode (true, hash, + std::move(nodeData), node->getType ()); if (backed_) canonicalize (hash, node); } @@ -202,7 +203,6 @@ SHAMap::checkFilter(SHAMapHash const& hash, SHAMapNodeID const& id, // Get a node without throwing // Used on maps where missing nodes are expected std::shared_ptr SHAMap::fetchNodeNT( - SHAMapNodeID const& id, SHAMapHash const& hash, SHAMapSyncFilter* filter) const { @@ -221,7 +221,7 @@ std::shared_ptr SHAMap::fetchNodeNT( } if (filter) - node = checkFilter (hash, id, filter); + node = checkFilter (hash, filter); return node; } @@ -322,7 +322,7 @@ SHAMap::descend (SHAMapInnerNode * parent, SHAMapNodeID const& parentID, if (!child) { - std::shared_ptr childNode = fetchNodeNT (childID, childHash, filter); + std::shared_ptr childNode = fetchNodeNT (childHash, filter); if (childNode) { @@ -336,7 +336,7 @@ SHAMap::descend (SHAMapInnerNode * parent, SHAMapNodeID const& parentID, SHAMapAbstractNode* SHAMap::descendAsync (SHAMapInnerNode* parent, int branch, - SHAMapNodeID const& childID, SHAMapSyncFilter * filter, bool & pending) const + SHAMapSyncFilter * filter, bool & pending) const { pending = false; @@ -350,7 +350,7 @@ SHAMap::descendAsync (SHAMapInnerNode* parent, int branch, if (!ptr) { if (filter) - ptr = checkFilter (hash, childID, filter); + ptr = checkFilter (hash, filter); if (!ptr && backed_) { @@ -835,7 +835,7 @@ bool SHAMap::fetchRoot (SHAMapHash const& hash, SHAMapSyncFilter* filter) } } - auto newRoot = fetchNodeNT (SHAMapNodeID(), hash, filter); + auto newRoot = fetchNodeNT (hash, filter); if (newRoot) { diff --git a/src/ripple/shamap/impl/SHAMapSync.cpp b/src/ripple/shamap/impl/SHAMapSync.cpp index 3c43b33c67..11e1fc9123 100644 --- a/src/ripple/shamap/impl/SHAMapSync.cpp +++ b/src/ripple/shamap/impl/SHAMapSync.cpp @@ -187,7 +187,7 @@ SHAMap::getMissingNodes(std::size_t max, SHAMapSyncFilter* filter) { SHAMapNodeID childID = nodeID.getChildNodeID (branch); bool pending = false; - auto d = descendAsync (node, branch, childID, filter, pending); + auto d = descendAsync (node, branch, filter, pending); if (!d) { @@ -268,7 +268,7 @@ SHAMap::getMissingNodes(std::size_t max, SHAMapSyncFilter* filter) auto const& nodeID = std::get<2>(node); auto const& nodeHash = parent->getChildHash (branch); - auto nodePtr = fetchNodeNT(nodeID, nodeHash, filter); + auto nodePtr = fetchNodeNT(nodeHash, filter); if (nodePtr) { ++hits; @@ -446,8 +446,8 @@ SHAMapAddNode SHAMap::addRootNode (SHAMapHash const& hash, Blob const& rootNode, { Serializer s; root_->addRaw (s, snfPREFIX); - filter->gotNode (false, SHAMapNodeID{}, root_->getNodeHash (), - s.modData (), root_->getType ()); + filter->gotNode (false, root_->getNodeHash (), + std::move(s.modData ()), root_->getType ()); } return SHAMapAddNode::useful (); @@ -528,8 +528,8 @@ SHAMap::addKnownNode (const SHAMapNodeID& node, Blob const& rawNode, { Serializer s; newNode->addRaw (s, snfPREFIX); - filter->gotNode (false, node, childHash, - s.modData (), newNode->getType ()); + filter->gotNode (false, childHash, + std::move(s.modData ()), newNode->getType ()); } return SHAMapAddNode::useful (); diff --git a/src/ripple/shamap/tests/FetchPack.test.cpp b/src/ripple/shamap/tests/FetchPack.test.cpp index d74e467a84..093257f603 100644 --- a/src/ripple/shamap/tests/FetchPack.test.cpp +++ b/src/ripple/shamap/tests/FetchPack.test.cpp @@ -61,13 +61,13 @@ public: } void gotNode (bool fromFilter, - SHAMapNodeID const& id, SHAMapHash const& nodeHash, - Blob& nodeData, SHAMapTreeNode::TNType type) const override + SHAMapHash const& nodeHash, + Blob&& nodeData, SHAMapTreeNode::TNType type) const override { } - bool haveNode (SHAMapNodeID const& id, - SHAMapHash const& nodeHash, Blob& nodeData) const override + bool haveNode (SHAMapHash const& nodeHash, + Blob& nodeData) const override { Map::iterator it = mMap.find (nodeHash); if (it == mMap.end ())