Avoid passing SHAMapNodeID's to sync filters

This commit is contained in:
JoelKatz
2016-02-29 10:58:26 -08:00
committed by Nik Bougalis
parent a025d365b8
commit 70d5c4eca7
11 changed files with 36 additions and 49 deletions

View File

@@ -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);

View File

@@ -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;
};

View File

@@ -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;

View File

@@ -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:

View File

@@ -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);

View File

@@ -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;
};

View File

@@ -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,

View File

@@ -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;
};

View File

@@ -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)
{

View File

@@ -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 ();

View File

@@ -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 ())