mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Avoid passing SHAMapNodeID's to sync filters
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -229,12 +229,11 @@ private:
|
||||
std::shared_ptr<SHAMapAbstractNode> fetchNodeFromDB (SHAMapHash const& hash) const;
|
||||
std::shared_ptr<SHAMapAbstractNode> fetchNodeNT (SHAMapHash const& hash) const;
|
||||
std::shared_ptr<SHAMapAbstractNode> fetchNodeNT (
|
||||
SHAMapNodeID const& id,
|
||||
SHAMapHash const& hash,
|
||||
SHAMapSyncFilter *filter) const;
|
||||
std::shared_ptr<SHAMapAbstractNode> fetchNode (SHAMapHash const& hash) const;
|
||||
std::shared_ptr<SHAMapAbstractNode> 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 <SHAMapAbstractNode*, SHAMapNodeID>
|
||||
descend (SHAMapInnerNode* parent, SHAMapNodeID const& parentID,
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -180,18 +180,19 @@ SHAMap::fetchNodeFromDB (SHAMapHash const& hash) const
|
||||
|
||||
// See if a sync filter has a node
|
||||
std::shared_ptr<SHAMapAbstractNode>
|
||||
SHAMap::checkFilter(SHAMapHash const& hash, SHAMapNodeID const& id,
|
||||
SHAMap::checkFilter(SHAMapHash const& hash,
|
||||
SHAMapSyncFilter* filter) const
|
||||
{
|
||||
std::shared_ptr<SHAMapAbstractNode> 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<SHAMapAbstractNode> SHAMap::fetchNodeNT(
|
||||
SHAMapNodeID const& id,
|
||||
SHAMapHash const& hash,
|
||||
SHAMapSyncFilter* filter) const
|
||||
{
|
||||
@@ -221,7 +221,7 @@ std::shared_ptr<SHAMapAbstractNode> 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<SHAMapAbstractNode> childNode = fetchNodeNT (childID, childHash, filter);
|
||||
std::shared_ptr<SHAMapAbstractNode> 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)
|
||||
{
|
||||
|
||||
@@ -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 ();
|
||||
|
||||
@@ -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 ())
|
||||
|
||||
Reference in New Issue
Block a user