From 3712f0f2cbdf9c96a8bfb473fb8507e9bd9004ce Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Tue, 8 Jan 2013 15:33:13 -0800 Subject: [PATCH] Remove a lot of unneeded hashing. --- src/cpp/ripple/SHAMap.cpp | 3 ++- src/cpp/ripple/SHAMap.h | 3 ++- src/cpp/ripple/SHAMapNodes.cpp | 13 +++++++++++-- src/cpp/ripple/SHAMapSync.cpp | 20 ++++++-------------- 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/cpp/ripple/SHAMap.cpp b/src/cpp/ripple/SHAMap.cpp index d1b6f4b18..bd9158e52 100644 --- a/src/cpp/ripple/SHAMap.cpp +++ b/src/cpp/ripple/SHAMap.cpp @@ -714,7 +714,8 @@ SHAMapTreeNode::pointer SHAMap::fetchNodeExternal(const SHAMapNode& id, const ui try { - SHAMapTreeNode::pointer ret = boost::make_shared(id, obj->getData(), mSeq - 1, snfPREFIX); + SHAMapTreeNode::pointer ret = + boost::make_shared(id, obj->getData(), mSeq - 1, snfPREFIX, hash); if (id != *ret) { cLog(lsFATAL) << "id:" << id << ", got:" << *ret; diff --git a/src/cpp/ripple/SHAMap.h b/src/cpp/ripple/SHAMap.h index 2c1a444af..e641ed3a2 100644 --- a/src/cpp/ripple/SHAMap.h +++ b/src/cpp/ripple/SHAMap.h @@ -176,7 +176,8 @@ public: SHAMapTreeNode(const SHAMapNode& nodeID, SHAMapItem::ref item, TNType type, uint32 seq); // raw node functions - SHAMapTreeNode(const SHAMapNode& id, const std::vector& data, uint32 seq, SHANodeFormat format); + SHAMapTreeNode(const SHAMapNode& id, const std::vector& data, uint32 seq, + SHANodeFormat format, const uint256& hash); void addRaw(Serializer &, SHANodeFormat format); virtual bool isPopulated() const { return true; } diff --git a/src/cpp/ripple/SHAMapNodes.cpp b/src/cpp/ripple/SHAMapNodes.cpp index 5d6877805..724f70942 100644 --- a/src/cpp/ripple/SHAMapNodes.cpp +++ b/src/cpp/ripple/SHAMapNodes.cpp @@ -197,7 +197,7 @@ SHAMapTreeNode::SHAMapTreeNode(const SHAMapNode& node, SHAMapItem::ref item, TNT } SHAMapTreeNode::SHAMapTreeNode(const SHAMapNode& id, const std::vector& rawNode, uint32 seq, - SHANodeFormat format) : SHAMapNode(id), mSeq(seq), mType(tnERROR), mFullBelow(false) + SHANodeFormat format, const uint256& hash) : SHAMapNode(id), mSeq(seq), mType(tnERROR), mFullBelow(false) { if (format == snfWIRE) { @@ -326,7 +326,16 @@ SHAMapTreeNode::SHAMapTreeNode(const SHAMapNode& id, const std::vector& nodeIDs, std::vector nodeData; if (filter->haveNode(childID, childHash, nodeData)) { - d = boost::make_shared(childID, nodeData, mSeq, snfPREFIX); - if (childHash != d->getNodeHash()) - { - cLog(lsERROR) << "Wrong hash from cached object"; - d.reset(); - } - else - { - cLog(lsTRACE) << "Got sync node from cache: " << *d; - mTNByID[*d] = d; - } + d = boost::make_shared(childID, nodeData, mSeq, snfPREFIX, childHash); + cLog(lsTRACE) << "Got sync node from cache: " << *d; + mTNByID[*d] = d; } } } @@ -200,7 +192,7 @@ SMAddNode SHAMap::addRootNode(const std::vector& rootNode, SHANod return SMAddNode::okay(); } - SHAMapTreeNode::pointer node = boost::make_shared(SHAMapNode(), rootNode, 0, format); + SHAMapTreeNode::pointer node = boost::make_shared(SHAMapNode(), rootNode, 0, format, uint256()); if (!node) return SMAddNode::invalid(); @@ -240,7 +232,7 @@ SMAddNode SHAMap::addRootNode(const uint256& hash, const std::vector(SHAMapNode(), rootNode, 0, format); + SHAMapTreeNode::pointer node = boost::make_shared(SHAMapNode(), rootNode, 0, format, uint256()); if (!node || node->getNodeHash() != hash) return SMAddNode::invalid(); @@ -318,7 +310,7 @@ SMAddNode SHAMap::addKnownNode(const SHAMapNode& node, const std::vector(node, rawNode, mSeq, snfWIRE); + SHAMapTreeNode::pointer newNode = boost::make_shared(node, rawNode, mSeq, snfWIRE, uint256()); if (hash != newNode->getNodeHash()) // these aren't the droids we're looking for return SMAddNode::invalid();