mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-21 19:45:53 +00:00
deploy: b014b79d88
This commit is contained in:
@@ -1599,73 +1599,73 @@ $(function() {
|
||||
<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span> }</div>
|
||||
<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>  </div>
|
||||
<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> <a class="code" href="namespaceripple.html#adfb760bc3e4ccb79d5d4f6ecff2f1817">TER</a></div>
|
||||
<div class="line"><a name="l01531"></a><span class="lineno"><a class="line" href="namespaceripple.html#a1853d68963f99c793be414cf0d1bc8d5"> 1531</a></span> <a class="code" href="namespaceripple.html#a1853d68963f99c793be414cf0d1bc8d5">cleanupOnAccountDelete</a>(</div>
|
||||
<div class="line"><a name="l01531"></a><span class="lineno"><a class="line" href="namespaceripple.html#ac63838a9be23c18086f1f05c78867399"> 1531</a></span> <a class="code" href="namespaceripple.html#ac63838a9be23c18086f1f05c78867399">cleanupOnAccountDelete</a>(</div>
|
||||
<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>  <a class="code" href="classripple_1_1ApplyView.html">ApplyView</a>& view,</div>
|
||||
<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>  <a class="code" href="structripple_1_1Keylet.html">Keylet</a> <span class="keyword">const</span>& ownerDirKeylet,</div>
|
||||
<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a><<a class="code" href="namespaceripple.html#adfb760bc3e4ccb79d5d4f6ecff2f1817">TER</a>(<a class="code" href="namespaceripple.html#ac151bf19e1f4daae2b04c65c65117139">LedgerEntryType</a>, <a class="code" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SLE></a>&)></div>
|
||||
<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>  deleter,</div>
|
||||
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>  <a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> j,</div>
|
||||
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<uint16_t></a> maxNodesToDelete)</div>
|
||||
<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span> {</div>
|
||||
<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>  <span class="comment">// Delete all the entries in the account directory.</span></div>
|
||||
<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SLE></a> sleDirNode{};</div>
|
||||
<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uDirEntry{0};</div>
|
||||
<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>  <a class="code" href="classripple_1_1base__uint.html">uint256</a> dirEntry{beast::zero};</div>
|
||||
<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> deleted = 0;</div>
|
||||
<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>  </div>
|
||||
<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  <span class="keywordflow">if</span> (view.<a class="code" href="classripple_1_1ReadView.html#ac1d377c35a8332d069b09be8f4008dec">exists</a>(ownerDirKeylet) &&</div>
|
||||
<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>  <a class="code" href="namespaceripple.html#a34251c908a52d50d055160c19d6e6e56">dirFirst</a>(view, ownerDirKeylet.<a class="code" href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">key</a>, sleDirNode, uDirEntry, dirEntry))</div>
|
||||
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>  {</div>
|
||||
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>  <span class="keywordflow">do</span></div>
|
||||
<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>  {</div>
|
||||
<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>  <span class="keywordflow">if</span> (maxNodesToDelete && ++deleted > *maxNodesToDelete)</div>
|
||||
<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca576f5411ab4458ec9842480e7ebe7072">tecINCOMPLETE</a>;</div>
|
||||
<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>  </div>
|
||||
<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>  <span class="comment">// Choose the right way to delete each directory node.</span></div>
|
||||
<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  <span class="keyword">auto</span> sleItem = view.<a class="code" href="classripple_1_1ApplyView.html#aad9fb1233dec10dcc10c2e3b1da6a723">peek</a>(<a class="code" href="namespaceripple_1_1keylet.html#a1fc176ed1b328b0ef5392b5b5468e269">keylet::child</a>(dirEntry));</div>
|
||||
<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>  <span class="keywordflow">if</span> (!sleItem)</div>
|
||||
<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>  {</div>
|
||||
<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>  <span class="comment">// Directory node has an invalid index. Bail out.</span></div>
|
||||
<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>  JLOG(j.<a class="code" href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">fatal</a>())</div>
|
||||
<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>  << <span class="stringliteral">"DeleteAccount: Directory node in ledger "</span> << view.<a class="code" href="classripple_1_1ReadView.html#ac284afc905c482953c35c61b459fd85b">seq</a>()</div>
|
||||
<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>  << <span class="stringliteral">" has index to object that is missing: "</span></div>
|
||||
<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>  << <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(dirEntry);</div>
|
||||
<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ab5c44faf987ebd7709fa11a2c8502b5f">tefBAD_LEDGER</a>;</div>
|
||||
<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>  }</div>
|
||||
<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  </div>
|
||||
<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>  <a class="code" href="namespaceripple.html#ac151bf19e1f4daae2b04c65c65117139">LedgerEntryType</a> <span class="keyword">const</span> nodeType{safe_cast<LedgerEntryType>(</div>
|
||||
<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>  sleItem->getFieldU16(<a class="code" href="namespaceripple.html#a95e082491139cffc65c01b6fcaa3edfe">sfLedgerEntryType</a>))};</div>
|
||||
<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>  </div>
|
||||
<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>  <span class="comment">// Deleter handles the details of specific account-owned object</span></div>
|
||||
<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>  <span class="comment">// deletion</span></div>
|
||||
<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>  <span class="keywordflow">if</span> (<span class="keyword">auto</span> <span class="keyword">const</span> ter = deleter(nodeType, dirEntry, sleItem);</div>
|
||||
<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>  ter != <a class="code" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
|
||||
<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>  <span class="keywordflow">return</span> ter;</div>
|
||||
<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  </div>
|
||||
<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>  <span class="comment">// dirFirst() and dirNext() are like iterators with exposed</span></div>
|
||||
<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>  <span class="comment">// internal state. We'll take advantage of that exposed state</span></div>
|
||||
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>  <span class="comment">// to solve a common C++ problem: iterator invalidation while</span></div>
|
||||
<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  <span class="comment">// deleting elements from a container.</span></div>
|
||||
<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>  <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>  <span class="comment">// We have just deleted one directory entry, which means our</span></div>
|
||||
<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>  <span class="comment">// "iterator state" is invalid.</span></div>
|
||||
<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>  <span class="comment">// 1. During the process of getting an entry from the</span></div>
|
||||
<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>  <span class="comment">// directory uDirEntry was incremented from 0 to 1.</span></div>
|
||||
<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>  <span class="comment">// 2. We then deleted the entry at index 0, which means the</span></div>
|
||||
<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  <span class="comment">// entry that was at 1 has now moved to 0.</span></div>
|
||||
<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>  <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  <span class="comment">// 3. So we verify that uDirEntry is indeed 1. Then we jam it</span></div>
|
||||
<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>  <span class="comment">// back to zero to "un-invalidate" the iterator.</span></div>
|
||||
<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  assert(uDirEntry == 1);</div>
|
||||
<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  <span class="keywordflow">if</span> (uDirEntry != 1)</div>
|
||||
<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  {</div>
|
||||
<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  JLOG(j.<a class="code" href="classbeast_1_1Journal.html#a49b0713e65bb8e2c51b76fbf16252afe">error</a>())</div>
|
||||
<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  << <span class="stringliteral">"DeleteAccount iterator re-validation failed."</span>;</div>
|
||||
<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ab5c44faf987ebd7709fa11a2c8502b5f">tefBAD_LEDGER</a>;</div>
|
||||
<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>  }</div>
|
||||
<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>  uDirEntry = 0;</div>
|
||||
<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">EntryDeleter</a> <span class="keyword">const</span>& deleter,</div>
|
||||
<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>  <a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> j,</div>
|
||||
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<uint16_t></a> maxNodesToDelete)</div>
|
||||
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span> {</div>
|
||||
<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>  <span class="comment">// Delete all the entries in the account directory.</span></div>
|
||||
<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SLE></a> sleDirNode{};</div>
|
||||
<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uDirEntry{0};</div>
|
||||
<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>  <a class="code" href="classripple_1_1base__uint.html">uint256</a> dirEntry{beast::zero};</div>
|
||||
<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> deleted = 0;</div>
|
||||
<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>  </div>
|
||||
<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>  <span class="keywordflow">if</span> (view.<a class="code" href="classripple_1_1ReadView.html#ac1d377c35a8332d069b09be8f4008dec">exists</a>(ownerDirKeylet) &&</div>
|
||||
<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  <a class="code" href="namespaceripple.html#a34251c908a52d50d055160c19d6e6e56">dirFirst</a>(view, ownerDirKeylet.<a class="code" href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">key</a>, sleDirNode, uDirEntry, dirEntry))</div>
|
||||
<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>  {</div>
|
||||
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>  <span class="keywordflow">do</span></div>
|
||||
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>  {</div>
|
||||
<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>  <span class="keywordflow">if</span> (maxNodesToDelete && ++deleted > *maxNodesToDelete)</div>
|
||||
<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca576f5411ab4458ec9842480e7ebe7072">tecINCOMPLETE</a>;</div>
|
||||
<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>  </div>
|
||||
<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>  <span class="comment">// Choose the right way to delete each directory node.</span></div>
|
||||
<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>  <span class="keyword">auto</span> sleItem = view.<a class="code" href="classripple_1_1ApplyView.html#aad9fb1233dec10dcc10c2e3b1da6a723">peek</a>(<a class="code" href="namespaceripple_1_1keylet.html#a1fc176ed1b328b0ef5392b5b5468e269">keylet::child</a>(dirEntry));</div>
|
||||
<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  <span class="keywordflow">if</span> (!sleItem)</div>
|
||||
<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>  {</div>
|
||||
<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>  <span class="comment">// Directory node has an invalid index. Bail out.</span></div>
|
||||
<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>  JLOG(j.<a class="code" href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">fatal</a>())</div>
|
||||
<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>  << <span class="stringliteral">"DeleteAccount: Directory node in ledger "</span> << view.<a class="code" href="classripple_1_1ReadView.html#ac284afc905c482953c35c61b459fd85b">seq</a>()</div>
|
||||
<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>  << <span class="stringliteral">" has index to object that is missing: "</span></div>
|
||||
<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>  << <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(dirEntry);</div>
|
||||
<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ab5c44faf987ebd7709fa11a2c8502b5f">tefBAD_LEDGER</a>;</div>
|
||||
<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>  }</div>
|
||||
<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>  </div>
|
||||
<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  <a class="code" href="namespaceripple.html#ac151bf19e1f4daae2b04c65c65117139">LedgerEntryType</a> <span class="keyword">const</span> nodeType{safe_cast<LedgerEntryType>(</div>
|
||||
<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>  sleItem->getFieldU16(<a class="code" href="namespaceripple.html#a95e082491139cffc65c01b6fcaa3edfe">sfLedgerEntryType</a>))};</div>
|
||||
<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>  </div>
|
||||
<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>  <span class="comment">// Deleter handles the details of specific account-owned object</span></div>
|
||||
<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>  <span class="comment">// deletion</span></div>
|
||||
<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>  <span class="keyword">auto</span> <span class="keyword">const</span> [ter, skipEntry] = deleter(nodeType, dirEntry, sleItem);</div>
|
||||
<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>  <span class="keywordflow">if</span> (ter != <a class="code" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
|
||||
<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>  <span class="keywordflow">return</span> ter;</div>
|
||||
<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>  </div>
|
||||
<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  <span class="comment">// dirFirst() and dirNext() are like iterators with exposed</span></div>
|
||||
<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>  <span class="comment">// internal state. We'll take advantage of that exposed state</span></div>
|
||||
<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>  <span class="comment">// to solve a common C++ problem: iterator invalidation while</span></div>
|
||||
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>  <span class="comment">// deleting elements from a container.</span></div>
|
||||
<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>  <span class="comment">// We have just deleted one directory entry, which means our</span></div>
|
||||
<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>  <span class="comment">// "iterator state" is invalid.</span></div>
|
||||
<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>  <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  <span class="comment">// 1. During the process of getting an entry from the</span></div>
|
||||
<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>  <span class="comment">// directory uDirEntry was incremented from 'it' to 'it'+1.</span></div>
|
||||
<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>  <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  <span class="comment">// 2. We then deleted the entry at index 'it', which means the</span></div>
|
||||
<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>  <span class="comment">// entry that was at 'it'+1 has now moved to 'it'.</span></div>
|
||||
<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>  <span class="comment">// 3. So we verify that uDirEntry is indeed 'it'+1. Then we jam it</span></div>
|
||||
<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  <span class="comment">// back to 'it' to "un-invalidate" the iterator.</span></div>
|
||||
<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>  assert(uDirEntry >= 1);</div>
|
||||
<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  <span class="keywordflow">if</span> (uDirEntry == 0)</div>
|
||||
<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  {</div>
|
||||
<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  JLOG(j.<a class="code" href="classbeast_1_1Journal.html#a49b0713e65bb8e2c51b76fbf16252afe">error</a>())</div>
|
||||
<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  << <span class="stringliteral">"DeleteAccount iterator re-validation failed."</span>;</div>
|
||||
<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ab5c44faf987ebd7709fa11a2c8502b5f">tefBAD_LEDGER</a>;</div>
|
||||
<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>  }</div>
|
||||
<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>  <span class="keywordflow">if</span> (skipEntry == <a class="code" href="namespaceripple.html#a5c353aea81a72e698c287a3e5289619aabafd7322c6e97d25b6299b5d6fe8920b">SkipEntry::No</a>)</div>
|
||||
<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>  uDirEntry--;</div>
|
||||
<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>  </div>
|
||||
<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>  } <span class="keywordflow">while</span> (</div>
|
||||
<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>  <a class="code" href="namespaceripple.html#a3a022ec9e19a1b18a0ac3bdf7328a877">dirNext</a>(view, ownerDirKeylet.<a class="code" href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">key</a>, sleDirNode, uDirEntry, dirEntry));</div>
|
||||
@@ -1749,7 +1749,7 @@ $(function() {
|
||||
<div class="ttc" id="aclassripple_1_1Rules_html_a1a8388a2b9588aa9446ece92a88e0dd2"><div class="ttname"><a href="classripple_1_1Rules.html#a1a8388a2b9588aa9446ece92a88e0dd2">ripple::Rules::enabled</a></div><div class="ttdeci">bool enabled(uint256 const &feature) const</div><div class="ttdoc">Returns true if a feature is enabled.</div><div class="ttdef"><b>Definition:</b> <a href="Rules_8cpp_source.html#l00094">Rules.cpp:94</a></div></div>
|
||||
<div class="ttc" id="ashared_ptr_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a></div><div class="ttdoc">STL class.</div></div>
|
||||
<div class="ttc" id="anamespaceripple_1_1keylet_html_a5660f18c64be5f8270fe66fcc25d0de8"><div class="ttname"><a href="namespaceripple_1_1keylet.html#a5660f18c64be5f8270fe66fcc25d0de8">ripple::keylet::amendments</a></div><div class="ttdeci">Keylet const & amendments() noexcept</div><div class="ttdoc">The index of the amendment table.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00164">Indexes.cpp:164</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a17a9a9b903b66e49f5413d82ce79f085a852cabbbe21a9b4d63aff777eceab2fd"><div class="ttname"><a href="namespaceripple.html#a17a9a9b903b66e49f5413d82ce79f085a852cabbbe21a9b4d63aff777eceab2fd">ripple::fhZERO_IF_FROZEN</a></div><div class="ttdeci">@ fhZERO_IF_FROZEN</div><div class="ttdef"><b>Definition:</b> <a href="View_8h_source.html#l00078">View.h:78</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a17a9a9b903b66e49f5413d82ce79f085a852cabbbe21a9b4d63aff777eceab2fd"><div class="ttname"><a href="namespaceripple.html#a17a9a9b903b66e49f5413d82ce79f085a852cabbbe21a9b4d63aff777eceab2fd">ripple::fhZERO_IF_FROZEN</a></div><div class="ttdeci">@ fhZERO_IF_FROZEN</div><div class="ttdef"><b>Definition:</b> <a href="View_8h_source.html#l00079">View.h:79</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ac1d430838f9c822e6c0722f54807ebef"><div class="ttname"><a href="namespaceripple.html#ac1d430838f9c822e6c0722f54807ebef">ripple::forEachItemAfter</a></div><div class="ttdeci">bool forEachItemAfter(ReadView const &view, Keylet const &root, uint256 const &after, std::uint64_t const hint, unsigned int limit, std::function< bool(std::shared_ptr< SLE const > const &)> const &f)</div><div class="ttdoc">Iterate all items after an item in the given directory.</div><div class="ttdef"><b>Definition:</b> <a href="View_8cpp_source.html#l00411">View.cpp:411</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a7038e25fafd9239c031a42b0f285ddf4"><div class="ttname"><a href="namespaceripple.html#a7038e25fafd9239c031a42b0f285ddf4">ripple::sfOwnerNode</a></div><div class="ttdeci">const SF_UINT64 sfOwnerNode</div></div>
|
||||
<div class="ttc" id="astructripple_1_1Rate_html"><div class="ttname"><a href="structripple_1_1Rate.html">ripple::Rate</a></div><div class="ttdoc">Represents a transfer rate.</div><div class="ttdef"><b>Definition:</b> <a href="Rate_8h_source.html#l00037">Rate.h:37</a></div></div>
|
||||
@@ -1787,7 +1787,7 @@ $(function() {
|
||||
<div class="ttc" id="afunction_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STAmount_html_a532cc28fd8b3d99c5de749e7e78fd08d"><div class="ttname"><a href="classripple_1_1STAmount.html#a532cc28fd8b3d99c5de749e7e78fd08d">ripple::STAmount::setIssuer</a></div><div class="ttdeci">void setIssuer(AccountID const &uIssuer)</div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00433">STAmount.h:433</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1ReadView_html_a1427aa6cbbda99c50b9ca0ebf6e0d0b3"><div class="ttname"><a href="classripple_1_1ReadView.html#a1427aa6cbbda99c50b9ca0ebf6e0d0b3">ripple::ReadView::parentCloseTime</a></div><div class="ttdeci">NetClock::time_point parentCloseTime() const</div><div class="ttdoc">Returns the close time of the previous ledger.</div><div class="ttdef"><b>Definition:</b> <a href="ReadView_8h_source.html#l00115">ReadView.h:115</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a17a9a9b903b66e49f5413d82ce79f085"><div class="ttname"><a href="namespaceripple.html#a17a9a9b903b66e49f5413d82ce79f085">ripple::FreezeHandling</a></div><div class="ttdeci">FreezeHandling</div><div class="ttdoc">Controls the treatment of frozen account balances.</div><div class="ttdef"><b>Definition:</b> <a href="View_8h_source.html#l00078">View.h:78</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a17a9a9b903b66e49f5413d82ce79f085"><div class="ttname"><a href="namespaceripple.html#a17a9a9b903b66e49f5413d82ce79f085">ripple::FreezeHandling</a></div><div class="ttdeci">FreezeHandling</div><div class="ttdoc">Controls the treatment of frozen account balances.</div><div class="ttdef"><b>Definition:</b> <a href="View_8h_source.html#l00079">View.h:79</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38ca576f5411ab4458ec9842480e7ebe7072"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca576f5411ab4458ec9842480e7ebe7072">ripple::tecINCOMPLETE</a></div><div class="ttdeci">@ tecINCOMPLETE</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00305">TER.h:305</a></div></div>
|
||||
<div class="ttc" id="aclassbeast_1_1Journal_html_a930d70ff72f71414fcd5b560610cefb6"><div class="ttname"><a href="classbeast_1_1Journal.html#a930d70ff72f71414fcd5b560610cefb6">beast::Journal::getNullSink</a></div><div class="ttdeci">static Sink & getNullSink()</div><div class="ttdoc">Returns a Sink which does nothing.</div><div class="ttdef"><b>Definition:</b> <a href="beast__Journal_8cpp_source.html#l00072">beast_Journal.cpp:72</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a8ca9b43bfc508a3fdbc296fb926320ce"><div class="ttname"><a href="namespaceripple.html#a8ca9b43bfc508a3fdbc296fb926320ce">ripple::parityRate</a></div><div class="ttdeci">const Rate parityRate(QUALITY_ONE)</div><div class="ttdoc">A transfer rate signifying a 1:1 exchange.</div><div class="ttdef"><b>Definition:</b> <a href="Rate_8h_source.html#l00101">Rate.h:101</a></div></div>
|
||||
@@ -1814,7 +1814,7 @@ $(function() {
|
||||
<div class="ttc" id="anamespaceripple_html_a7e31af9d90dac8c9e4272bf597d83fb4"><div class="ttname"><a href="namespaceripple.html#a7e31af9d90dac8c9e4272bf597d83fb4">ripple::adjustOwnerCount</a></div><div class="ttdeci">void adjustOwnerCount(ApplyView &view, std::shared_ptr< SLE > const &sle, std::int32_t amount, beast::Journal j)</div><div class="ttdoc">Adjust the owner count up or down.</div><div class="ttdef"><b>Definition:</b> <a href="View_8cpp_source.html#l00730">View.cpp:730</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a260d2970ac1119109937ed1c5d4ca962a453d7db3d36a5516e925c466d1dc0ac1"><div class="ttname"><a href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a453d7db3d36a5516e925c466d1dc0ac1">ripple::telFAILED_PROCESSING</a></div><div class="ttdeci">@ telFAILED_PROCESSING</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00055">TER.h:55</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a4a9c7b33fef9015d6406302ef80b63c5a3de81b62b486203f6b8e4f2cd0832ae1"><div class="ttname"><a href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a3de81b62b486203f6b8e4f2cd0832ae1">ripple::lsfDefaultRipple</a></div><div class="ttdeci">@ lsfDefaultRipple</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00238">LedgerFormats.h:238</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a9722ac6213471ba4b92259afc6edc2b1"><div class="ttname"><a href="namespaceripple.html#a9722ac6213471ba4b92259afc6edc2b1">ripple::majorityAmendments_t</a></div><div class="ttdeci">std::map< uint256, NetClock::time_point > majorityAmendments_t</div><div class="ttdef"><b>Definition:</b> <a href="View_8h_source.html#l00222">View.h:222</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a9722ac6213471ba4b92259afc6edc2b1"><div class="ttname"><a href="namespaceripple.html#a9722ac6213471ba4b92259afc6edc2b1">ripple::majorityAmendments_t</a></div><div class="ttdeci">std::map< uint256, NetClock::time_point > majorityAmendments_t</div><div class="ttdef"><b>Definition:</b> <a href="View_8h_source.html#l00223">View.h:223</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_1_1keylet_html_a50c370db96b4fdcdd202d9c2c38afce9"><div class="ttname"><a href="namespaceripple_1_1keylet.html#a50c370db96b4fdcdd202d9c2c38afce9">ripple::keylet::account</a></div><div class="ttdeci">Keylet account(AccountID const &id) noexcept</div><div class="ttdoc">AccountID root.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00134">Indexes.cpp:134</a></div></div>
|
||||
<div class="ttc" id="aenable_if_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/enable_if.html">std::enable_if_t</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html_a7eedf70fc6afba6c2b8c6b2ba27ba23e"><div class="ttname"><a href="classripple_1_1STObject.html#a7eedf70fc6afba6c2b8c6b2ba27ba23e">ripple::STObject::setFieldAmount</a></div><div class="ttdeci">void setFieldAmount(SField const &field, STAmount const &)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00707">STObject.cpp:707</a></div></div>
|
||||
@@ -1850,6 +1850,7 @@ $(function() {
|
||||
<div class="ttc" id="anamespaceripple_html_af487c2d8c871030560b07f7b7c118fd1"><div class="ttname"><a href="namespaceripple.html#af487c2d8c871030560b07f7b7c118fd1">ripple::sfAMMID</a></div><div class="ttdeci">const SF_UINT256 sfAMMID</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STLedgerEntry_html_a3c289baf99474db3d44d381e43358723"><div class="ttname"><a href="classripple_1_1STLedgerEntry.html#a3c289baf99474db3d44d381e43358723">ripple::STLedgerEntry::getType</a></div><div class="ttdeci">LedgerEntryType getType() const</div><div class="ttdef"><b>Definition:</b> <a href="STLedgerEntry_8h_source.html#l00119">STLedgerEntry.h:119</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1ReadView_html_a3351e0244f921234d5ba005a07ddf539"><div class="ttname"><a href="classripple_1_1ReadView.html#a3351e0244f921234d5ba005a07ddf539">ripple::ReadView::read</a></div><div class="ttdeci">virtual std::shared_ptr< SLE const > read(Keylet const &k) const =0</div><div class="ttdoc">Return the state item associated with a key.</div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ac63838a9be23c18086f1f05c78867399"><div class="ttname"><a href="namespaceripple.html#ac63838a9be23c18086f1f05c78867399">ripple::cleanupOnAccountDelete</a></div><div class="ttdeci">TER cleanupOnAccountDelete(ApplyView &view, Keylet const &ownerDirKeylet, EntryDeleter const &deleter, beast::Journal j, std::optional< uint16_t > maxNodesToDelete)</div><div class="ttdef"><b>Definition:</b> <a href="View_8cpp_source.html#l01531">View.cpp:1531</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ae93a0ce909950194e6f9aaed7579ea74"><div class="ttname"><a href="namespaceripple.html#ae93a0ce909950194e6f9aaed7579ea74">ripple::areCompatible</a></div><div class="ttdeci">bool areCompatible(ReadView const &validLedger, ReadView const &testLedger, beast::Journal::Stream &s, const char *reason)</div><div class="ttdoc">Return false if the test ledger is provably incompatible with the valid ledger, that is,...</div><div class="ttdef"><b>Definition:</b> <a href="View_8cpp_source.html#l00499">View.cpp:499</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a15bb971c7e554fc3df218aba54c33fcc"><div class="ttname"><a href="namespaceripple.html#a15bb971c7e554fc3df218aba54c33fcc">ripple::accountFunds</a></div><div class="ttdeci">STAmount accountFunds(ReadView const &view, AccountID const &id, STAmount const &saDefault, FreezeHandling freezeHandling, beast::Journal j)</div><div class="ttdef"><b>Definition:</b> <a href="View_8cpp_source.html#l00282">View.cpp:282</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a5ee3f52d4feaf2ad6775033fbae860da"><div class="ttname"><a href="namespaceripple.html#a5ee3f52d4feaf2ad6775033fbae860da">ripple::transferXRP</a></div><div class="ttdeci">TER transferXRP(ApplyView &view, AccountID const &from, AccountID const &to, STAmount const &amount, beast::Journal j)</div><div class="ttdef"><b>Definition:</b> <a href="View_8cpp_source.html#l01469">View.cpp:1469</a></div></div>
|
||||
@@ -1870,7 +1871,6 @@ $(function() {
|
||||
<div class="ttc" id="anamespaceripple_html_a95e082491139cffc65c01b6fcaa3edfe"><div class="ttname"><a href="namespaceripple.html#a95e082491139cffc65c01b6fcaa3edfe">ripple::sfLedgerEntryType</a></div><div class="ttdeci">const SF_UINT16 sfLedgerEntryType</div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ac151bf19e1f4daae2b04c65c65117139"><div class="ttname"><a href="namespaceripple.html#ac151bf19e1f4daae2b04c65c65117139">ripple::LedgerEntryType</a></div><div class="ttdeci">LedgerEntryType</div><div class="ttdoc">Identifiers for on-ledger objects.</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00053">LedgerFormats.h:53</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38cac480d742e7760c48047bb3ccc50a40ef"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38cac480d742e7760c48047bb3ccc50a40ef">ripple::tecNO_LINE</a></div><div class="ttdeci">@ tecNO_LINE</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00271">TER.h:271</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a1853d68963f99c793be414cf0d1bc8d5"><div class="ttname"><a href="namespaceripple.html#a1853d68963f99c793be414cf0d1bc8d5">ripple::cleanupOnAccountDelete</a></div><div class="ttdeci">TER cleanupOnAccountDelete(ApplyView &view, Keylet const &ownerDirKeylet, std::function< TER(LedgerEntryType, uint256 const &, std::shared_ptr< SLE > &)> deleter, beast::Journal j, std::optional< uint16_t > maxNodesToDelete)</div><div class="ttdef"><b>Definition:</b> <a href="View_8cpp_source.html#l01531">View.cpp:1531</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1Fees_html_acb07843d0d0e3ccacd7cf51d5296fe40"><div class="ttname"><a href="structripple_1_1Fees.html#acb07843d0d0e3ccacd7cf51d5296fe40">ripple::Fees::accountReserve</a></div><div class="ttdeci">XRPAmount accountReserve(std::size_t ownerCount) const</div><div class="ttdoc">Returns the account reserve given the owner count, in drops.</div><div class="ttdef"><b>Definition:</b> <a href="protocol_2Fees_8h_source.html#l00049">protocol/Fees.h:49</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1ReadView_html_ac284afc905c482953c35c61b459fd85b"><div class="ttname"><a href="classripple_1_1ReadView.html#ac284afc905c482953c35c61b459fd85b">ripple::ReadView::seq</a></div><div class="ttdeci">LedgerIndex seq() const</div><div class="ttdoc">Returns the sequence number of the base ledger.</div><div class="ttdef"><b>Definition:</b> <a href="ReadView_8h_source.html#l00122">ReadView.h:122</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1base__uint_html_a1f9135f2eef3ec702d5f17e679733e8e"><div class="ttname"><a href="classripple_1_1base__uint.html#a1f9135f2eef3ec702d5f17e679733e8e">ripple::base_uint::zero</a></div><div class="ttdeci">void zero()</div><div class="ttdef"><b>Definition:</b> <a href="base__uint_8h_source.html#l00542">base_uint.h:542</a></div></div>
|
||||
@@ -1880,6 +1880,7 @@ $(function() {
|
||||
<div class="ttc" id="anamespaceripple_html_adebe4d783be9c979e67fdbb2bc27162fac110e4ea19a46f9ce263c5d746b34178"><div class="ttname"><a href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac110e4ea19a46f9ce263c5d746b34178">ripple::terNO_AMM</a></div><div class="ttdeci">@ terNO_AMM</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00210">TER.h:210</a></div></div>
|
||||
<div class="ttc" id="acassert_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/cassert.html">cassert</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1ReadView_html_a6989ce9f6240d5c600d3a4f526f89d29"><div class="ttname"><a href="classripple_1_1ReadView.html#a6989ce9f6240d5c600d3a4f526f89d29">ripple::ReadView::ownerCountHook</a></div><div class="ttdeci">virtual std::uint32_t ownerCountHook(AccountID const &account, std::uint32_t count) const</div><div class="ttdef"><b>Definition:</b> <a href="ReadView_8h_source.html#l00196">ReadView.h:196</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a5c353aea81a72e698c287a3e5289619aabafd7322c6e97d25b6299b5d6fe8920b"><div class="ttname"><a href="namespaceripple.html#a5c353aea81a72e698c287a3e5289619aabafd7322c6e97d25b6299b5d6fe8920b">ripple::SkipEntry::No</a></div><div class="ttdeci">@ No</div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ab8a9c54401e8209fca7396c6b9c610f4"><div class="ttname"><a href="namespaceripple.html#ab8a9c54401e8209fca7396c6b9c610f4">ripple::sfBalance</a></div><div class="ttdeci">const SF_AMOUNT sfBalance</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STVector256_html"><div class="ttname"><a href="classripple_1_1STVector256.html">ripple::STVector256</a></div><div class="ttdef"><b>Definition:</b> <a href="STVector256_8h_source.html#l00029">STVector256.h:29</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_1_1detail_html_a1e1dc66b9b23e22fac4c3a2591358f7e"><div class="ttname"><a href="namespaceripple_1_1detail.html#a1e1dc66b9b23e22fac4c3a2591358f7e">ripple::detail::internalDirFirst</a></div><div class="ttdeci">bool internalDirFirst(V &view, uint256 const &root, std::shared_ptr< N > &page, unsigned int &index, uint256 &entry)</div><div class="ttdef"><b>Definition:</b> <a href="View_8cpp_source.html#l00089">View.cpp:89</a></div></div>
|
||||
|
||||
Reference in New Issue
Block a user