diff --git a/DatabaseShard__test_8cpp_source.html b/DatabaseShard__test_8cpp_source.html
index e3ea3b4b1c..b9b089cd2f 100644
--- a/DatabaseShard__test_8cpp_source.html
+++ b/DatabaseShard__test_8cpp_source.html
@@ -1978,7 +1978,7 @@ $(function() {
-SHAMapHash getHash() const
+SHAMapHash getHash() const
diff --git a/Database_8cpp_source.html b/Database_8cpp_source.html
index 0854e0815d..4e49b24363 100644
--- a/Database_8cpp_source.html
+++ b/Database_8cpp_source.html
@@ -489,7 +489,7 @@ $(function() {
-SHAMapHash getHash() const
+SHAMapHash getHash() const
Family const & family() const
diff --git a/FetchPack__test_8cpp_source.html b/FetchPack__test_8cpp_source.html
index e229e98549..9d5ea5a90c 100644
--- a/FetchPack__test_8cpp_source.html
+++ b/FetchPack__test_8cpp_source.html
@@ -251,7 +251,7 @@ $(function() {
void operator()(std::uint32_t refNum) const
-bool addItem(SHAMapNodeType type, SHAMapItem &&i)
+bool addItem(SHAMapNodeType type, SHAMapItem &&i)
void gotNode(bool fromFilter, SHAMapHash const &nodeHash, std::uint32_t ledgerSeq, Blob &&nodeData, SHAMapNodeType type) const override
diff --git a/InboundLedger_8cpp_source.html b/InboundLedger_8cpp_source.html
index 2918858f60..4b7dd8b519 100644
--- a/InboundLedger_8cpp_source.html
+++ b/InboundLedger_8cpp_source.html
@@ -1463,7 +1463,7 @@ $(function() {
-SHAMapHash getHash() const
+SHAMapHash getHash() const
Stream trace() const
Severity stream access functions.
diff --git a/LedgerReplayMsgHandler_8cpp_source.html b/LedgerReplayMsgHandler_8cpp_source.html
index 6f833b16fc..9b39ba4b12 100644
--- a/LedgerReplayMsgHandler_8cpp_source.html
+++ b/LedgerReplayMsgHandler_8cpp_source.html
@@ -368,7 +368,7 @@ $(function() {
std::enable_if_t< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &a)
-SHAMapHash getHash() const
+SHAMapHash getHash() const
@ txNode
transaction plus metadata
diff --git a/SHAMapDelta_8cpp_source.html b/SHAMapDelta_8cpp_source.html
index 1a32d4fabe..0db27cc0dc 100644
--- a/SHAMapDelta_8cpp_source.html
+++ b/SHAMapDelta_8cpp_source.html
@@ -464,7 +464,7 @@ $(function() {
-SHAMapHash getHash() const
+SHAMapHash getHash() const
diff --git a/SHAMapInnerNode_8cpp_source.html b/SHAMapInnerNode_8cpp_source.html
index 3ee96e9ad4..3dba2f9492 100644
--- a/SHAMapInnerNode_8cpp_source.html
+++ b/SHAMapInnerNode_8cpp_source.html
@@ -355,7 +355,7 @@ $(function() {
-
+
@@ -381,7 +381,7 @@ $(function() {
312 hashes[childIndex].zero();
- 313 children[childIndex] = child;
+ 313 children[childIndex] = std::move(child);
@@ -514,7 +514,6 @@ $(function() {
std::uint32_t cowid() const
Returns the SHAMap that owns this node.
void serializeWithPrefix(Serializer &) const override
Serialize the node in a format appropriate for hashing.
-void setChild(int m, std::shared_ptr< SHAMapTreeNode > const &child)
std::shared_ptr< SHAMapTreeNode > clone(std::uint32_t cowid) const override
Make a copy of this node, setting the owner.
std::optional< int > getChildIndex(std::uint16_t isBranch, int i) const
Get the child's index inside the hashes or children array (which may or may not be sparse).
@@ -551,6 +550,7 @@ $(function() {
@ innerNode
inner node in V1 tree
SHAMapHash const & getChildHash(int m) const
static constexpr std::size_t bytes
+void setChild(int m, std::shared_ptr< SHAMapTreeNode > child)
Classes to handle arrays of spinlocks packed into a single atomic integer:
void resizeChildArrays(std::uint8_t toAllocate)
Convert arrays stored in hashesAndChildren_ so they can store the requested number of children.
diff --git a/SHAMapInnerNode_8h_source.html b/SHAMapInnerNode_8h_source.html
index 67e9355ab7..24c5b11f13 100644
--- a/SHAMapInnerNode_8h_source.html
+++ b/SHAMapInnerNode_8h_source.html
@@ -181,7 +181,7 @@ $(function() {
-
+
@@ -252,7 +252,6 @@ $(function() {
void serializeWithPrefix(Serializer &) const override
Serialize the node in a format appropriate for hashing.
bool isInner() const override
Determines if this is an inner node.
-void setChild(int m, std::shared_ptr< SHAMapTreeNode > const &child)
Tracks the number of instances of an object.
std::shared_ptr< SHAMapTreeNode > clone(std::uint32_t cowid) const override
Make a copy of this node, setting the owner.
@@ -276,6 +275,7 @@ $(function() {
std::string getString(SHAMapNodeID const &) const override
SHAMapInnerNode & operator=(SHAMapInnerNode const &)=delete
SHAMapHash const & getChildHash(int m) const
+void setChild(int m, std::shared_ptr< SHAMapTreeNode > child)
void resizeChildArrays(std::uint8_t toAllocate)
Convert arrays stored in hashesAndChildren_ so they can store the requested number of children.
bool isFullBelow(std::uint32_t generation) const
diff --git a/SHAMapSync__test_8cpp_source.html b/SHAMapSync__test_8cpp_source.html
index 8ca9570ff7..90bfc21d44 100644
--- a/SHAMapSync__test_8cpp_source.html
+++ b/SHAMapSync__test_8cpp_source.html
@@ -264,15 +264,15 @@ $(function() {
-
+
std::enable_if_t< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &a)
-SHAMapHash getHash() const
+SHAMapHash getHash() const
bool deepCompare(SHAMap &other) const
-bool addItem(SHAMapNodeType type, SHAMapItem &&i)
+bool addItem(SHAMapNodeType type, SHAMapItem &&i)
diff --git a/SHAMap_8cpp_source.html b/SHAMap_8cpp_source.html
index 37040eb0cc..643044ef87 100644
--- a/SHAMap_8cpp_source.html
+++ b/SHAMap_8cpp_source.html
@@ -189,7 +189,7 @@ $(function() {
- 121 node->setChild(branch, child);
+ 121 node->setChild(branch, std::move(child));
123 child = std::move(node);
@@ -789,7 +789,7 @@ $(function() {
-
+ 721 node->setChild(
selectBranch(nodeID,
id), std::move(prevNode));
@@ -866,406 +866,404 @@ $(function() {
795 auto inner = std::static_pointer_cast<SHAMapInnerNode>(node);
797 assert(inner->isEmptyBranch(branch));
-
- 799 inner->setChild(branch, newNode);
-
-
-
-
-
- 805 auto leaf = std::static_pointer_cast<SHAMapLeafNode>(node);
-
- 807 assert(otherItem && (tag != otherItem->key()));
-
- 809 node = std::make_shared<SHAMapInnerNode>(node->cowid());
-
-
-
-
-
-
- 816 stack.
push({node, nodeID});
-
-
-
- 820 nodeID = nodeID.getChildNodeID(b1);
- 821 node = std::make_shared<SHAMapInnerNode>(
cowid_);
-
-
-
- 825 assert(node->isInner());
-
-
-
-
-
-
-
-
-
-
-
-
-
- 839 return addGiveItem(type, std::make_shared<SHAMapItem const>(std::move(i)));
-
-
-
-
-
- 845 auto hash =
root_->getHash();
-
-
-
- 849 hash =
root_->getHash();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 868 Throw<SHAMapMissingNode>(
type_, tag);
-
- 870 auto node = std::dynamic_pointer_cast<SHAMapLeafNode>(stack.
top().
first);
-
-
-
- 874 if (!node || (node->peekItem()->key() != tag))
-
-
-
-
-
- 880 if (node->getType() != type)
-
- 882 JLOG(
journal_.
fatal()) <<
"SHAMap::setItem: cross-type change!";
-
-
-
-
-
- 888 if (node->setItem(std::move(item)))
-
-
-
-
-
-
-
-
- 897 if (hash ==
root_->getHash())
-
-
-
-
-
-
- 904 stream <<
"Fetch root TXN node " << hash;
-
-
-
- 908 stream <<
"Fetch root STATE node " << hash;
-
-
-
- 912 stream <<
"Fetch root SHAMap node " << hash;
-
-
-
-
-
-
-
-
- 921 assert(
root_->getHash() == hash);
-
-
-
-
-
-
-
-
-
- 943 assert(node->cowid() == 0);
-
-
-
-
-
- 949 node->serializeWithPrefix(s);
-
-
-
-
-
-
-
-
- 958 template <
class Node>
-
-
-
-
-
- 964 assert(node->cowid() != 0);
-
- 966 if (node->cowid() !=
cowid_)
-
-
-
- 970 node = std::static_pointer_cast<Node>(node->clone(
cowid_));
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1002 root_->updateHash();
-
-
-
-
-
-
-
-
- 1011 auto node = std::static_pointer_cast<SHAMapInnerNode>(
root_);
-
- 1013 if (node->isEmpty())
-
- 1015 root_ = std::make_shared<SHAMapInnerNode>(0);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1033 if (node->isEmptyBranch(pos))
-
-
-
-
-
-
-
-
- 1042 auto child = node->getChild(pos++);
-
- 1044 if (child && (child->cowid() != 0))
-
-
-
-
-
- 1050 if (child->isInner())
-
-
-
- 1054 stack.
emplace(std::move(node), branch);
-
-
-
- 1058 node = std::static_pointer_cast<SHAMapInnerNode>(
-
-
-
-
-
-
-
-
- 1067 assert(node->cowid() ==
cowid_);
- 1068 child->updateHash();
-
-
-
-
-
- 1074 node->shareChild(branch, child);
-
-
-
-
-
-
- 1081 node->updateHashDeep();
-
-
-
-
-
- 1087 node = std::static_pointer_cast<SHAMapInnerNode>(
-
-
-
-
-
-
-
- 1095 auto parent = std::move(stack.
top().first);
- 1096 pos = stack.
top().second;
-
-
-
- 1100 assert(parent->cowid() ==
cowid_);
- 1101 parent->shareChild(pos, node);
-
-
- 1104 node = std::move(parent);
-
-
-
-
- 1109 root_ = std::move(node);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1125 auto [node, nodeID] = stack.
top();
-
-
-
-
-
-
-
-
- 1134 if (node->isInner())
-
-
-
-
- 1139 if (!inner->isEmptyBranch(i))
-
- 1141 auto child = inner->getChildPointer(i);
-
-
- 1144 assert(child->getHash() == inner->getChildHash(i));
- 1145 stack.
push({child, nodeID.getChildNodeID(i)});
-
-
-
-
-
-
- 1152 }
while (!stack.
empty());
-
- 1154 JLOG(
journal_.
info()) << leafCount <<
" resident leaves";
-
-
-
-
-
-
- 1161 assert(!ret || !ret->cowid());
-
-
-
-
-
-
-
-
-
- 1171 assert(node->cowid() == 0);
- 1172 assert(node->getHash() == hash);
-
-
- 1175 ->canonicalize_replace_client(hash.
as_uint256(), node);
-
-
-
-
-
-
- 1182 auto node =
root_.get();
- 1183 assert(node !=
nullptr);
- 1184 assert(!node->isLeaf());
-
-
-
-
- 1189 node->invariants(
true);
-
-
-
+
+
+
+
+
+
+ 804 auto leaf = std::static_pointer_cast<SHAMapLeafNode>(node);
+
+ 806 assert(otherItem && (tag != otherItem->key()));
+
+ 808 node = std::make_shared<SHAMapInnerNode>(node->cowid());
+
+
+
+
+
+
+ 815 stack.
push({node, nodeID});
+
+
+
+ 819 nodeID = nodeID.getChildNodeID(b1);
+ 820 node = std::make_shared<SHAMapInnerNode>(
cowid_);
+
+
+
+ 824 assert(node->isInner());
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 838 return addGiveItem(type, std::make_shared<SHAMapItem const>(std::move(i)));
+
+
+
+
+
+ 844 auto hash =
root_->getHash();
+
+
+
+ 848 hash =
root_->getHash();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 867 Throw<SHAMapMissingNode>(
type_, tag);
+
+ 869 auto node = std::dynamic_pointer_cast<SHAMapLeafNode>(stack.
top().
first);
+
+
+
+ 873 if (!node || (node->peekItem()->key() != tag))
+
+
+
+
+
+ 879 if (node->getType() != type)
+
+ 881 JLOG(
journal_.
fatal()) <<
"SHAMap::setItem: cross-type change!";
+
+
+
+
+
+ 887 if (node->setItem(std::move(item)))
+
+
+
+
+
+
+
+
+ 896 if (hash ==
root_->getHash())
+
+
+
+
+
+
+ 903 stream <<
"Fetch root TXN node " << hash;
+
+
+
+ 907 stream <<
"Fetch root STATE node " << hash;
+
+
+
+ 911 stream <<
"Fetch root SHAMap node " << hash;
+
+
+
+
+
+
+
+
+ 920 assert(
root_->getHash() == hash);
+
+
+
+
+
+
+
+
+
+ 942 assert(node->cowid() == 0);
+
+
+
+
+
+ 948 node->serializeWithPrefix(s);
+
+
+
+
+
+
+
+
+ 957 template <
class Node>
+
+
+
+
+
+ 963 assert(node->cowid() != 0);
+
+ 965 if (node->cowid() !=
cowid_)
+
+
+
+ 969 node = std::static_pointer_cast<Node>(node->clone(
cowid_));
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1001 root_->updateHash();
+
+
+
+
+
+
+
+
+ 1010 auto node = std::static_pointer_cast<SHAMapInnerNode>(
root_);
+
+ 1012 if (node->isEmpty())
+
+ 1014 root_ = std::make_shared<SHAMapInnerNode>(0);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1032 if (node->isEmptyBranch(pos))
+
+
+
+
+
+
+
+
+ 1041 auto child = node->getChild(pos++);
+
+ 1043 if (child && (child->cowid() != 0))
+
+
+
+
+
+ 1049 if (child->isInner())
+
+
+
+ 1053 stack.
emplace(std::move(node), branch);
+
+
+
+ 1057 node = std::static_pointer_cast<SHAMapInnerNode>(
+
+
+
+
+
+
+
+
+ 1066 assert(node->cowid() ==
cowid_);
+ 1067 child->updateHash();
+
+
+
+
+
+ 1073 node->shareChild(branch, child);
+
+
+
+
+
+
+ 1080 node->updateHashDeep();
+
+
+
+
+
+ 1086 node = std::static_pointer_cast<SHAMapInnerNode>(
+
+
+
+
+
+
+
+ 1094 auto parent = std::move(stack.
top().first);
+ 1095 pos = stack.
top().second;
+
+
+
+ 1099 assert(parent->cowid() ==
cowid_);
+ 1100 parent->shareChild(pos, node);
+
+
+ 1103 node = std::move(parent);
+
+
+
+
+ 1108 root_ = std::move(node);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1124 auto [node, nodeID] = stack.
top();
+
+
+
+
+
+
+
+
+ 1133 if (node->isInner())
+
+
+
+
+ 1138 if (!inner->isEmptyBranch(i))
+
+ 1140 auto child = inner->getChildPointer(i);
+
+
+ 1143 assert(child->getHash() == inner->getChildHash(i));
+ 1144 stack.
push({child, nodeID.getChildNodeID(i)});
+
+
+
+
+
+
+ 1151 }
while (!stack.
empty());
+
+ 1153 JLOG(
journal_.
info()) << leafCount <<
" resident leaves";
+
+
+
+
+
+
+ 1160 assert(!ret || !ret->cowid());
+
+
+
+
+
+
+
+
+
+ 1170 assert(node->cowid() == 0);
+ 1171 assert(node->getHash() == hash);
+
+
+ 1174 ->canonicalize_replace_client(hash.
as_uint256(), node);
+
+
+
+
+
+
+ 1181 auto node =
root_.get();
+ 1182 assert(node !=
nullptr);
+ 1183 assert(!node->isLeaf());
+
+
+
+
+ 1188 node->invariants(
true);
+
+
+
bool isInner() const override
Determines if this is an inner node.
-
+
virtual std::shared_ptr< TreeNodeCache > getTreeNodeCache(std::uint32_t ledgerSeq)=0
Return a pointer to the Family Tree Node Cache.
static constexpr unsigned int branchFactor
Number of children each non-leaf node has (the 'radix tree' part of the map)
std::shared_ptr< SHAMapTreeNode > descendNoStore(std::shared_ptr< SHAMapInnerNode > const &, int branch) const
@ pending
List will be valid in the future.
-void setChild(int m, std::shared_ptr< SHAMapTreeNode > const &child)
std::enable_if_t< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &a)
SHAMapNodeID getChildNodeID(unsigned int m) const
SHAMap(SHAMap const &)=delete
SHAMapLeafNode const * peekNextItem(uint256 const &id, SharedPtrNodeStack &stack) const
virtual std::optional< Blob > getNode(SHAMapHash const &nodeHash) const =0
-SHAMapHash getHash() const
+SHAMapHash getHash() const
@@ -1274,13 +1272,13 @@ $(function() {
unsigned int selectBranch(SHAMapNodeID const &id, uint256 const &hash)
Returns the branch that would contain the given hash.
std::shared_ptr< SHAMapTreeNode > fetchNodeFromDB(SHAMapHash const &hash) const
-bool addItem(SHAMapNodeType type, SHAMapItem &&i)
+bool addItem(SHAMapNodeType type, SHAMapItem &&i)
std::shared_ptr< SHAMapTreeNode > canonicalizeChild(int branch, std::shared_ptr< SHAMapTreeNode > node)
-int walkSubTree(bool doWrite, NodeObjectType t)
-void dump(bool withHashes=false) const
+int walkSubTree(bool doWrite, NodeObjectType t)
+void dump(bool withHashes=false) const
NodeObjectType
The types of node objects.
std::shared_ptr< SHAMapItem const > const & onlyBelow(SHAMapTreeNode *) const
If there is only one leaf below this node, get its contents.
@@ -1301,7 +1299,7 @@ $(function() {
std::shared_ptr< SHAMap > snapShot(bool isMutable) const
Dir::const_iterator const_iterator
-std::shared_ptr< SHAMapTreeNode > cacheLookup(SHAMapHash const &hash) const
+std::shared_ptr< SHAMapTreeNode > cacheLookup(SHAMapHash const &hash) const
virtual void missingNode(std::uint32_t refNum)=0
virtual NodeStore::Database & db()=0
@@ -1316,6 +1314,7 @@ $(function() {
bool hasItem(uint256 const &id) const
Does the tree have an item with the given ID?
SHAMapHash const & getChildHash(int m) const
+void setChild(int m, std::shared_ptr< SHAMapTreeNode > child)
SHAMapLeafNode const * peekFirstItem(SharedPtrNodeStack &stack) const
@@ -1333,10 +1332,10 @@ $(function() {
virtual bool isLeaf() const =0
Determines if this is a leaf node.
-void canonicalize(SHAMapHash const &hash, std::shared_ptr< SHAMapTreeNode > &) const
+void canonicalize(SHAMapHash const &hash, std::shared_ptr< SHAMapTreeNode > &) const
-bool fetchRoot(SHAMapHash const &hash, SHAMapSyncFilter *filter)
+bool fetchRoot(SHAMapHash const &hash, SHAMapSyncFilter *filter)
SHAMapHash const & getHash() const
Return the hash of this node.
static std::shared_ptr< SHAMapTreeNode > makeFromPrefix(Slice rawNode, SHAMapHash const &hash)
@@ -1347,24 +1346,24 @@ $(function() {
std::shared_ptr< SHAMapTreeNode > checkFilter(SHAMapHash const &hash, SHAMapSyncFilter *filter) const
void dirtyUp(SharedPtrNodeStack &stack, uint256 const &target, std::shared_ptr< SHAMapTreeNode > terminal)
Update hashes up to the root.
SHAMapLeafNode * findKey(uint256 const &id) const
Return nullptr if key not found.
-bool updateGiveItem(SHAMapNodeType type, std::shared_ptr< SHAMapItem const >)
+bool updateGiveItem(SHAMapNodeType type, std::shared_ptr< SHAMapItem const >)
std::shared_ptr< SHAMapLeafNode > makeTypedLeaf(SHAMapNodeType type, std::shared_ptr< SHAMapItem const > item, std::uint32_t owner)
const_iterator end() const
SHAMapLeafNode * walkTowardsKey(uint256 const &id, SharedPtrNodeStack *stack=nullptr) const
Walk towards the specified id, returning the node.
void LogicError(std::string const &how) noexcept
Called when faulty logic causes a broken invariant.
bool addGiveItem(SHAMapNodeType type, std::shared_ptr< SHAMapItem const > item)
-int unshare()
Convert any modified nodes to shared.
+int unshare()
Convert any modified nodes to shared.
SHAMapTreeNode * descendAsync(SHAMapInnerNode *parent, int branch, SHAMapSyncFilter *filter, bool &pending, descendCallback &&) const
-std::shared_ptr< SHAMapTreeNode > writeNode(NodeObjectType t, std::shared_ptr< SHAMapTreeNode > node) const
write and canonicalize modified node
+std::shared_ptr< SHAMapTreeNode > writeNode(NodeObjectType t, std::shared_ptr< SHAMapTreeNode > node) const
write and canonicalize modified node
static constexpr unsigned int leafDepth
The depth of the hash map: data is only present in the leaves.
@ Immutable
The map is set in stone and cannot be changed.
-std::shared_ptr< Node > preFlushNode(std::shared_ptr< Node > node) const
prepare a node to be modified before flushing
+std::shared_ptr< Node > preFlushNode(std::shared_ptr< Node > node) const
prepare a node to be modified before flushing
std::shared_ptr< NodeObject > fetchNodeObject(uint256 const &hash, std::uint32_t ledgerSeq=0, FetchType fetchType=FetchType::synchronous, bool duplicate=false)
Fetch a node object.
-int flushDirty(NodeObjectType t)
Flush modified nodes to the nodestore and convert them to shared.
+int flushDirty(NodeObjectType t)
Flush modified nodes to the nodestore and convert them to shared.
virtual beast::Journal const & journal()=0
const_iterator lower_bound(uint256 const &id) const
Find the object with the greatest object id smaller than the input id.
std::shared_ptr< SHAMapItem const > const & peekItem() const
diff --git a/SHAMap_8h_source.html b/SHAMap_8h_source.html
index bbac0ef3f1..fd074114a0 100644
--- a/SHAMap_8h_source.html
+++ b/SHAMap_8h_source.html
@@ -711,7 +711,7 @@ $(function() {
-
+
static constexpr unsigned int branchFactor
Number of children each non-leaf node has (the 'radix tree' part of the map)
@@ -721,7 +721,7 @@ $(function() {
SHAMapLeafNode const * peekNextItem(uint256 const &id, SharedPtrNodeStack &stack) const
-SHAMapHash getHash() const
+SHAMapHash getHash() const
bool deepCompare(SHAMap &other) const
@@ -730,12 +730,12 @@ $(function() {
Family const & family() const
std::shared_ptr< SHAMapTreeNode > fetchNodeFromDB(SHAMapHash const &hash) const
-bool addItem(SHAMapNodeType type, SHAMapItem &&i)
+bool addItem(SHAMapNodeType type, SHAMapItem &&i)
An immutable linear range of bytes.
MissingNodes(int max, SHAMapSyncFilter *filter, int maxDefer, std::uint32_t generation)
-int walkSubTree(bool doWrite, NodeObjectType t)
-void dump(bool withHashes=false) const
+int walkSubTree(bool doWrite, NodeObjectType t)
+void dump(bool withHashes=false) const
SharedPtrNodeStack stack_
NodeObjectType
The types of node objects.
@@ -765,7 +765,7 @@ $(function() {
value_type const * pointer
void gmn_ProcessNodes(MissingNodes &, MissingNodes::StackEntry &node)
Dir::const_iterator const_iterator
-std::shared_ptr< SHAMapTreeNode > cacheLookup(SHAMapHash const &hash) const
+std::shared_ptr< SHAMapTreeNode > cacheLookup(SHAMapHash const &hash) const
pointer operator->() const
@@ -799,7 +799,7 @@ $(function() {
SHAMapTreeNode * descendThrow(SHAMapInnerNode *, int branch) const
-void canonicalize(SHAMapHash const &hash, std::shared_ptr< SHAMapTreeNode > &) const
+void canonicalize(SHAMapHash const &hash, std::shared_ptr< SHAMapTreeNode > &) const
std::set< SHAMapHash > missingHashes_
A generic endpoint for log messages.
@@ -809,7 +809,7 @@ $(function() {
void setLedgerSeq(std::uint32_t lseq)
std::vector< std::pair< SHAMapNodeID, uint256 > > getMissingNodes(int maxNodes, SHAMapSyncFilter *filter)
Check for nodes in the SHAMap not available.
-bool fetchRoot(SHAMapHash const &hash, SHAMapSyncFilter *filter)
+bool fetchRoot(SHAMapHash const &hash, SHAMapSyncFilter *filter)
void walkMap(std::vector< SHAMapMissingNode > &missingNodes, int maxMissing) const
const_iterator upper_bound(uint256 const &id) const
Find the first item after the given item.
@@ -824,17 +824,17 @@ $(function() {
std::condition_variable deferCondVar_
SHAMapLeafNode * findKey(uint256 const &id) const
Return nullptr if key not found.
-bool updateGiveItem(SHAMapNodeType type, std::shared_ptr< SHAMapItem const >)
+bool updateGiveItem(SHAMapNodeType type, std::shared_ptr< SHAMapItem const >)
const_iterator end() const
SHAMapLeafNode * walkTowardsKey(uint256 const &id, SharedPtrNodeStack *stack=nullptr) const
Walk towards the specified id, returning the node.
bool addGiveItem(SHAMapNodeType type, std::shared_ptr< SHAMapItem const > item)
-int unshare()
Convert any modified nodes to shared.
+int unshare()
Convert any modified nodes to shared.
SHAMapTreeNode * descendAsync(SHAMapInnerNode *parent, int branch, SHAMapSyncFilter *filter, bool &pending, descendCallback &&) const
-std::shared_ptr< SHAMapTreeNode > writeNode(NodeObjectType t, std::shared_ptr< SHAMapTreeNode > node) const
write and canonicalize modified node
+std::shared_ptr< SHAMapTreeNode > writeNode(NodeObjectType t, std::shared_ptr< SHAMapTreeNode > node) const
write and canonicalize modified node
static constexpr unsigned int leafDepth
The depth of the hash map: data is only present in the leaves.
std::stack< std::pair< std::shared_ptr< SHAMapTreeNode >, SHAMapNodeID > > SharedPtrNodeStack
@@ -848,9 +848,9 @@ $(function() {
@ Invalid
The map is known to not be valid.
value_type const * pointer
-std::shared_ptr< Node > preFlushNode(std::shared_ptr< Node > node) const
prepare a node to be modified before flushing
+std::shared_ptr< Node > preFlushNode(std::shared_ptr< Node > node) const
prepare a node to be modified before flushing
SHAMapAddNode addKnownNode(SHAMapNodeID const &nodeID, Slice const &rawNode, SHAMapSyncFilter *filter)
-int flushDirty(NodeObjectType t)
Flush modified nodes to the nodestore and convert them to shared.
+int flushDirty(NodeObjectType t)
Flush modified nodes to the nodestore and convert them to shared.
const_iterator lower_bound(uint256 const &id) const
Find the object with the greatest object id smaller than the input id.
std::shared_ptr< Node > unshareNode(std::shared_ptr< Node >, SHAMapNodeID const &nodeID)
Unshare the node, allowing it to be modified.
SHAMapTreeNode * descend(SHAMapInnerNode *, int branch) const
diff --git a/SHAMap__test_8cpp_source.html b/SHAMap__test_8cpp_source.html
index 0a163fd922..01a7301821 100644
--- a/SHAMap__test_8cpp_source.html
+++ b/SHAMap__test_8cpp_source.html
@@ -475,15 +475,15 @@ $(function() {
-
+
-SHAMapHash getHash() const
+SHAMapHash getHash() const
-bool addItem(SHAMapNodeType type, SHAMapItem &&i)
+bool addItem(SHAMapNodeType type, SHAMapItem &&i)
An immutable linear range of bytes.
void run(bool backed, beast::Journal const &journal)
-void dump(bool withHashes=false) const
+void dump(bool withHashes=false) const
diff --git a/classripple_1_1SHAMap.html b/classripple_1_1SHAMap.html
index 5bf61393f4..205f6258fb 100644
--- a/classripple_1_1SHAMap.html
+++ b/classripple_1_1SHAMap.html
@@ -773,7 +773,7 @@ Private Attributes
@@ -845,7 +845,7 @@ Private Attributes
@@ -864,7 +864,7 @@ Private Attributes
@@ -894,7 +894,7 @@ Private Attributes
@@ -1541,7 +1541,7 @@ Private Attributes
Convert any modified nodes to shared.
-Definition at line 976 of file SHAMap.cpp.
+Definition at line 975 of file SHAMap.cpp.
@@ -1563,7 +1563,7 @@ Private Attributes
Flush modified nodes to the nodestore and convert them to shared.
-Definition at line 983 of file SHAMap.cpp.
+Definition at line 982 of file SHAMap.cpp.
@@ -1682,7 +1682,7 @@ Private Attributes
@@ -1701,7 +1701,7 @@ Private Attributes
@@ -1729,7 +1729,7 @@ Private Attributes
@@ -1767,7 +1767,7 @@ Private Attributes
@@ -2118,7 +2118,7 @@ template<class Node >
prepare a node to be modified before flushing
-Definition at line 960 of file SHAMap.cpp.
+Definition at line 959 of file SHAMap.cpp.
@@ -2162,7 +2162,7 @@ template<class Node >
1) An unshared, unshareable node needs to be made shareable so immutable SHAMap's can have references to it. 2) An unshareable node is shared. This happens when you make a mutable snapshot of a mutable SHAMap.
- Note
- The node must have already been unshared by having the caller first call SHAMapTreeNode::unshare().
-Definition at line 941 of file SHAMap.cpp.
+Definition at line 940 of file SHAMap.cpp.
@@ -2866,7 +2866,7 @@ template<class Node >
diff --git a/classripple_1_1SHAMapInnerNode-members.html b/classripple_1_1SHAMapInnerNode-members.html
index f5be2028bb..7acb064780 100644
--- a/classripple_1_1SHAMapInnerNode-members.html
+++ b/classripple_1_1SHAMapInnerNode-members.html
@@ -114,7 +114,7 @@ $(function() {
| resizeChildArrays(std::uint8_t toAllocate) | ripple::SHAMapInnerNode | private |
| serializeForWire(Serializer &) const override | ripple::SHAMapInnerNode | virtual |
| serializeWithPrefix(Serializer &) const override | ripple::SHAMapInnerNode | virtual |
- | setChild(int m, std::shared_ptr< SHAMapTreeNode > const &child) | ripple::SHAMapInnerNode | |
+ | setChild(int m, std::shared_ptr< SHAMapTreeNode > child) | ripple::SHAMapInnerNode | |
| setFullBelowGen(std::uint32_t gen) | ripple::SHAMapInnerNode | |
| SHAMapInnerNode(std::uint32_t cowid, std::uint8_t numAllocatedChildren=2) | ripple::SHAMapInnerNode | explicit |
| SHAMapInnerNode(SHAMapInnerNode const &)=delete | ripple::SHAMapInnerNode | |
diff --git a/classripple_1_1SHAMapInnerNode.html b/classripple_1_1SHAMapInnerNode.html
index 113e0c2d14..44522e03e4 100644
--- a/classripple_1_1SHAMapInnerNode.html
+++ b/classripple_1_1SHAMapInnerNode.html
@@ -138,8 +138,8 @@ Public Member Functions
| |
| SHAMapHash const & | getChildHash (int m) const |
| |
-| void | setChild (int m, std::shared_ptr< SHAMapTreeNode > const &child) |
-| |
+| void | setChild (int m, std::shared_ptr< SHAMapTreeNode > child) |
+| |
| void | shareChild (int m, std::shared_ptr< SHAMapTreeNode > const &child) |
| |
| SHAMapTreeNode * | getChildPointer (int branch) |
@@ -717,8 +717,8 @@ template<class F >
-
-◆ setChild()
+
+◆ setChild()
@@ -732,7 +732,7 @@ template<class F >
|
|
- std::shared_ptr< SHAMapTreeNode > const & |
+ std::shared_ptr< SHAMapTreeNode > |
child |
diff --git a/functions_func_s.html b/functions_func_s.html
index 34fe0630bc..90749191a8 100644
--- a/functions_func_s.html
+++ b/functions_func_s.html
@@ -399,7 +399,7 @@ $(function() {
, ripple::SHAMapStoreImp
setChild()
-: ripple::SHAMapInnerNode
+: ripple::SHAMapInnerNode
setClusterFee()
: ripple::LoadFeeTrack
diff --git a/functions_s.html b/functions_s.html
index 4a0dca6f69..2cbd049a19 100644
--- a/functions_s.html
+++ b/functions_s.html
@@ -688,7 +688,7 @@ $(function() {
, ripple::SHAMapStoreImp
setChild()
-: ripple::SHAMapInnerNode
+: ripple::SHAMapInnerNode
setClusterFee()
: ripple::LoadFeeTrack
diff --git a/search/all_13.js b/search/all_13.js
index 3b59441080..718d66c9fe 100644
--- a/search/all_13.js
+++ b/search/all_13.js
@@ -257,7 +257,7 @@ var searchData=
['setbuildingledger_8598',['setBuildingLedger',['../classripple_1_1LedgerMaster.html#a07b039ad7b58f43b8587e57c49e596f0',1,'ripple::LedgerMaster']]],
['setcachelimiting_8599',['setCacheLimiting',['../classripple_1_1DirectStepI.html#a592ddeaeb2ad7b0d7bbf4b1d31cdbe00',1,'ripple::DirectStepI']]],
['setcandelete_8600',['setCanDelete',['../classripple_1_1SHAMapStore.html#a2b1a46d6f878575eeea6730c8fc367f2',1,'ripple::SHAMapStore::setCanDelete()'],['../classripple_1_1SHAMapStoreImp_1_1SavedStateDB.html#a2daf6933e39fef00c2004ea292a5655c',1,'ripple::SHAMapStoreImp::SavedStateDB::setCanDelete()'],['../classripple_1_1SHAMapStoreImp.html#a3be2b951362ba4c182e2a75dae4805f3',1,'ripple::SHAMapStoreImp::setCanDelete()'],['../namespaceripple.html#aab972dc5eb4ccbbb4a0a0d0b83042723',1,'ripple::setCanDelete()']]],
- ['setchild_8601',['setChild',['../classripple_1_1SHAMapInnerNode.html#a816fb1a18b49832dcffccc073a5dd929',1,'ripple::SHAMapInnerNode']]],
+ ['setchild_8601',['setChild',['../classripple_1_1SHAMapInnerNode.html#a7fb5fc0e5d65ed4c3c77537a8fda8d32',1,'ripple::SHAMapInnerNode']]],
['setclusterfee_8602',['setClusterFee',['../classripple_1_1LoadFeeTrack.html#aed4bb323d4e737576185213517baaeca',1,'ripple::LoadFeeTrack']]],
['setclustertimer_8603',['setClusterTimer',['../classripple_1_1NetworkOPsImp.html#a312a6368f14118216b064f292349db31',1,'ripple::NetworkOPsImp']]],
['setconfig_8604',['setConfig',['../classripple_1_1PeerFinder_1_1ManagerImp.html#abf2ab8c369f806ad780ffc2cb198fdc1',1,'ripple::PeerFinder::ManagerImp::setConfig()'],['../classripple_1_1PeerFinder_1_1Manager.html#a2da6f9a40efac1c2ac0cef79ae3a0e18',1,'ripple::PeerFinder::Manager::setConfig()']]],
diff --git a/search/functions_13.js b/search/functions_13.js
index ca4e91e121..1ab597d86d 100644
--- a/search/functions_13.js
+++ b/search/functions_13.js
@@ -137,7 +137,7 @@ var searchData=
['setbuildingledger_20129',['setBuildingLedger',['../classripple_1_1LedgerMaster.html#a07b039ad7b58f43b8587e57c49e596f0',1,'ripple::LedgerMaster']]],
['setcachelimiting_20130',['setCacheLimiting',['../classripple_1_1DirectStepI.html#a592ddeaeb2ad7b0d7bbf4b1d31cdbe00',1,'ripple::DirectStepI']]],
['setcandelete_20131',['setCanDelete',['../classripple_1_1SHAMapStore.html#a2b1a46d6f878575eeea6730c8fc367f2',1,'ripple::SHAMapStore::setCanDelete()'],['../classripple_1_1SHAMapStoreImp_1_1SavedStateDB.html#a2daf6933e39fef00c2004ea292a5655c',1,'ripple::SHAMapStoreImp::SavedStateDB::setCanDelete()'],['../classripple_1_1SHAMapStoreImp.html#a3be2b951362ba4c182e2a75dae4805f3',1,'ripple::SHAMapStoreImp::setCanDelete()'],['../namespaceripple.html#aab972dc5eb4ccbbb4a0a0d0b83042723',1,'ripple::setCanDelete()']]],
- ['setchild_20132',['setChild',['../classripple_1_1SHAMapInnerNode.html#a816fb1a18b49832dcffccc073a5dd929',1,'ripple::SHAMapInnerNode']]],
+ ['setchild_20132',['setChild',['../classripple_1_1SHAMapInnerNode.html#a7fb5fc0e5d65ed4c3c77537a8fda8d32',1,'ripple::SHAMapInnerNode']]],
['setclusterfee_20133',['setClusterFee',['../classripple_1_1LoadFeeTrack.html#aed4bb323d4e737576185213517baaeca',1,'ripple::LoadFeeTrack']]],
['setclustertimer_20134',['setClusterTimer',['../classripple_1_1NetworkOPsImp.html#a312a6368f14118216b064f292349db31',1,'ripple::NetworkOPsImp']]],
['setconfig_20135',['setConfig',['../classripple_1_1PeerFinder_1_1ManagerImp.html#abf2ab8c369f806ad780ffc2cb198fdc1',1,'ripple::PeerFinder::ManagerImp::setConfig()'],['../classripple_1_1PeerFinder_1_1Manager.html#a2da6f9a40efac1c2ac0cef79ae3a0e18',1,'ripple::PeerFinder::Manager::setConfig()']]],