This commit is contained in:
manojsdoshi
2022-03-11 23:48:43 +00:00
parent 33ee5a435d
commit 5f48f33f84
1856 changed files with 55639 additions and 53603 deletions

View File

@@ -443,7 +443,7 @@ $(function() {
<div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#aef7b9a3e3b4fd553e0a9db4ff1e7a8a7"> 372</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#aef7b9a3e3b4fd553e0a9db4ff1e7a8a7">Ledger::addSLE</a>(<a class="code" href="classripple_1_1STLedgerEntry.html">SLE</a> <span class="keyword">const</span>&amp; sle)</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;{</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> s = sle.<a class="code" href="classripple_1_1STObject.html#a6ae7e459a83bc46c3cfd9025753af1cb">getSerializer</a>();</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="classripple_1_1SHAMapItem.html">SHAMapItem</a> item(sle.<a class="code" href="classripple_1_1STLedgerEntry.html#a6387602187c2ca4e22297d5c908cbad6">key</a>(), s.slice());</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="classripple_1_1SHAMapItem.html">SHAMapItem</a> item(sle.<a class="code" href="classripple_1_1STLedgerEntry.html#adef03efcc12360ee4a7e17bd2434f312">key</a>(), s.slice());</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>-&gt;addItem(<a class="code" href="namespaceripple.html#ae0356b1de00f841c554c830be509dd58ab2364e40a67b08ba6170314afc07d07b">SHAMapNodeType::tnACCOUNT_STATE</a>, std::move(item));</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;}</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; </div>
@@ -809,9 +809,9 @@ $(function() {
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">if</span> (hasToDisable)</div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; {</div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; newNUnl.<a class="code" href="classripple_1_1STArray.html#a12601f465a34c4aba5b9212e747d738d">emplace_back</a>(<a class="code" href="namespaceripple.html#a25781d261e5e805fdf2834ab4af7be30">sfDisabledValidator</a>);</div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; newNUnl.<a class="code" href="classripple_1_1STArray.html#a9a8e8e818ee5ba2536921d3e63cda98e">back</a>().<a class="code" href="classripple_1_1STObject.html#af1235d307d6f464392a583d0dfaa3cc4">setFieldVL</a>(</div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; newNUnl.<a class="code" href="classripple_1_1STArray.html#a75f0aea39c00662bf3a18b263364e422">back</a>().<a class="code" href="classripple_1_1STObject.html#af1235d307d6f464392a583d0dfaa3cc4">setFieldVL</a>(</div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <a class="code" href="namespaceripple.html#a16991de33a4e83d355de9c387c712a4e">sfPublicKey</a>, sle-&gt;getFieldVL(<a class="code" href="namespaceripple.html#adb137283775a3eb39772d1decf5c5894">sfValidatorToDisable</a>));</div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; newNUnl.<a class="code" href="classripple_1_1STArray.html#a9a8e8e818ee5ba2536921d3e63cda98e">back</a>().<a class="code" href="classripple_1_1STObject.html#acd1aac04649d694a3524faf2ddebf843">setFieldU32</a>(<a class="code" href="namespaceripple.html#af96d1bdc5286a37ae6e34b3f05d7a1bd">sfFirstLedgerSequence</a>, <a class="code" href="classripple_1_1ReadView.html#ac284afc905c482953c35c61b459fd85b">seq</a>());</div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; newNUnl.<a class="code" href="classripple_1_1STArray.html#a75f0aea39c00662bf3a18b263364e422">back</a>().<a class="code" href="classripple_1_1STObject.html#acd1aac04649d694a3524faf2ddebf843">setFieldU32</a>(<a class="code" href="namespaceripple.html#af96d1bdc5286a37ae6e34b3f05d7a1bd">sfFirstLedgerSequence</a>, <a class="code" href="classripple_1_1ReadView.html#ac284afc905c482953c35c61b459fd85b">seq</a>());</div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; }</div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; </div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">if</span> (!newNUnl.<a class="code" href="classripple_1_1STArray.html#a158ccc470b30b011cd462eadcf6f249c">empty</a>())</div>
@@ -845,7 +845,7 @@ $(function() {
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">if</span> (parallel)</div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>-&gt;walkMapParallel(missingNodes1, 32);</div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>-&gt;walkMapParallel(missingNodes1, 32);</div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>-&gt;walkMap(missingNodes1, 32);</div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; }</div>
@@ -1049,200 +1049,199 @@ $(function() {
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; </div>
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="comment">// See if we can use the JobQueue.</span></div>
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">if</span> (!isSynchronous &amp;&amp;</div>
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a860be08979e27d8c6f37f722f996ba6c">getJobQueue</a>().<a class="code" href="classripple_1_1JobQueue.html#af5e34187d55aa58e551dc196aaf1ec25">addJob</a>(</div>
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; jobType, jobName, [&amp;app, ledger, <a class="code" href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">isCurrent</a>](<a class="code" href="classripple_1_1Job.html">Job</a>&amp;) {</div>
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; saveValidatedLedger(app, ledger, isCurrent);</div>
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; }))</div>
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; {</div>
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; }</div>
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; </div>
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="comment">// The JobQueue won&#39;t do the Job. Do the save synchronously.</span></div>
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#a4574aa8b71b4bb8afc56cf6daff9ca86">saveValidatedLedger</a>(app, ledger, <a class="code" href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">isCurrent</a>);</div>
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160;}</div>
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; </div>
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00997"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#a0e6f8ad49de88ce1eb3ffa77ca346c21"> 997</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#a0e6f8ad49de88ce1eb3ffa77ca346c21">Ledger::unshare</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>-&gt;unshare();</div>
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>-&gt;unshare();</div>
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;}</div>
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; </div>
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l01004"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#a156082bb161144196934ce455ee404b2"> 1004</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#a156082bb161144196934ce455ee404b2">Ledger::invariants</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>-&gt;invariants();</div>
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>-&gt;invariants();</div>
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;}</div>
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;<span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; </div>
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;<span class="comment"> * Make ledger using info loaded from database.</span></div>
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;<span class="comment"> * @param LedgerInfo: Ledger information.</span></div>
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;<span class="comment"> * @param app: Link to the Application.</span></div>
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;<span class="comment"> * @param acquire: Acquire the ledger if not found locally.</span></div>
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;<span class="comment"> * @return Shared pointer to the ledger.</span></div>
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a></div>
<div class="line"><a name="l01020"></a><span class="lineno"><a class="line" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061"> 1020</a></span>&#160;<a class="code" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061">loadLedgerHelper</a>(<a class="code" href="structripple_1_1LedgerInfo.html">LedgerInfo</a> <span class="keyword">const</span>&amp; info, <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app, <span class="keywordtype">bool</span> acquire)</div>
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;{</div>
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordtype">bool</span> loaded;</div>
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <span class="keyword">auto</span> ledger = std::make_shared&lt;Ledger&gt;(</div>
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; info,</div>
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; loaded,</div>
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <a class="code" href="namespaceripple.html#a63a883cebf81b764433e67d90d4470d9a86a4fa105ff51b8c3be84734797d8144">acquire</a>,</div>
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(),</div>
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a26ccdf06f25ceadec7894dd5f8da7eab">getNodeFamily</a>(),</div>
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;Ledger&quot;</span>));</div>
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; </div>
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <span class="keywordflow">if</span> (!loaded)</div>
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; ledger.reset();</div>
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; </div>
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <span class="keywordflow">return</span> ledger;</div>
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;}</div>
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; </div>
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l01038"></a><span class="lineno"><a class="line" href="namespaceripple.html#a16f9dbea9c8dfaaaca124cf61c6b6e6d"> 1038</a></span>&#160;<a class="code" href="namespaceripple.html#a16f9dbea9c8dfaaaca124cf61c6b6e6d">finishLoadByIndexOrHash</a>(</div>
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a> <span class="keyword">const</span>&amp; ledger,</div>
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <a class="code" href="classripple_1_1Config.html">Config</a> <span class="keyword">const</span>&amp; config,</div>
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> j)</div>
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;{</div>
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordflow">if</span> (!ledger)</div>
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; </div>
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a87ea8cee44207987a9d9ac826aacc831">setImmutable</a>(config);</div>
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; </div>
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; JLOG(j.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) &lt;&lt; <span class="stringliteral">&quot;Loaded ledger: &quot;</span> &lt;&lt; <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#aab2ff724e7c4b0ccdea55d62cdab8bbc">hash</a>);</div>
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; </div>
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a8a75fcab11d8fe2e7bd5cd6643a052e1">setFull</a>();</div>
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;}</div>
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; </div>
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/tuple.html">std::tuple&lt;std::shared_ptr&lt;Ledger&gt;</a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>, <a class="code" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>&gt;</div>
<div class="line"><a name="l01054"></a><span class="lineno"><a class="line" href="namespaceripple.html#a04cf5c0dd5329bc0e0203fb86cf91ed3"> 1054</a></span>&#160;<a class="code" href="namespaceripple.html#a04cf5c0dd5329bc0e0203fb86cf91ed3">getLatestLedger</a>(<a class="code" href="classripple_1_1Application.html">Application</a>&amp; app)</div>
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;{</div>
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="keyword">const</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;LedgerInfo&gt;</a> info =</div>
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; app.<a class="code" href="classripple_1_1Application.html#abd5ac50ab472e7b95341b391cc941e48">getRelationalDBInterface</a>().<a class="code" href="classripple_1_1RelationalDBInterface.html#a1cf137dce25e130bffe96e816ab67408">getNewestLedgerInfo</a>();</div>
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keywordflow">if</span> (!info)</div>
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="keywordflow">return</span> {<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a>(), {}, {}};</div>
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keywordflow">return</span> {<a class="code" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061">loadLedgerHelper</a>(*info, app, <span class="keyword">true</span>), info-&gt;seq, info-&gt;hash};</div>
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;}</div>
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; </div>
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a></div>
<div class="line"><a name="l01064"></a><span class="lineno"><a class="line" href="namespaceripple.html#a22adb38923282bf7dbb38655afdb381d"> 1064</a></span>&#160;<a class="code" href="namespaceripple.html#a22adb38923282bf7dbb38655afdb381d">loadByIndex</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ledgerIndex, <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app, <span class="keywordtype">bool</span> acquire)</div>
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;{</div>
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <span class="keywordflow">if</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;LedgerInfo&gt;</a> info =</div>
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; app.<a class="code" href="classripple_1_1Application.html#abd5ac50ab472e7b95341b391cc941e48">getRelationalDBInterface</a>().<a class="code" href="classripple_1_1RelationalDBInterface.html#a1704b3edfa1eebb97e2772a1362ef781">getLedgerInfoByIndex</a>(ledgerIndex))</div>
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; {</div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a> ledger = <a class="code" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061">loadLedgerHelper</a>(*info, app, <a class="code" href="namespaceripple.html#a63a883cebf81b764433e67d90d4470d9a86a4fa105ff51b8c3be84734797d8144">acquire</a>);</div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <a class="code" href="namespaceripple.html#a16f9dbea9c8dfaaaca124cf61c6b6e6d">finishLoadByIndexOrHash</a>(ledger, app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(), app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;Ledger&quot;</span>));</div>
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="keywordflow">return</span> ledger;</div>
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; }</div>
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="keywordflow">return</span> {};</div>
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;}</div>
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; </div>
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a></div>
<div class="line"><a name="l01077"></a><span class="lineno"><a class="line" href="namespaceripple.html#a729619e7a3a0d92226e7d52347ff2a5e"> 1077</a></span>&#160;<a class="code" href="namespaceripple.html#a729619e7a3a0d92226e7d52347ff2a5e">loadByHash</a>(<a class="code" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; ledgerHash, <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app, <span class="keywordtype">bool</span> acquire)</div>
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;{</div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keywordflow">if</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;LedgerInfo&gt;</a> info =</div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; app.<a class="code" href="classripple_1_1Application.html#abd5ac50ab472e7b95341b391cc941e48">getRelationalDBInterface</a>().<a class="code" href="classripple_1_1RelationalDBInterface.html#aa2591b2d99a0dcce5e980eb99b1de2a7">getLedgerInfoByHash</a>(ledgerHash))</div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; {</div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a> ledger = <a class="code" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061">loadLedgerHelper</a>(*info, app, <a class="code" href="namespaceripple.html#a63a883cebf81b764433e67d90d4470d9a86a4fa105ff51b8c3be84734797d8144">acquire</a>);</div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <a class="code" href="namespaceripple.html#a16f9dbea9c8dfaaaca124cf61c6b6e6d">finishLoadByIndexOrHash</a>(ledger, app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(), app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;Ledger&quot;</span>));</div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; assert(!ledger || ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#aab2ff724e7c4b0ccdea55d62cdab8bbc">hash</a> == ledgerHash);</div>
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keywordflow">return</span> ledger;</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; }</div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">return</span> {};</div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;}</div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; </div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt;</div>
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;std::shared_ptr&lt;STTx const&gt;</a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;STObject const&gt;</a>&gt;&gt;</div>
<div class="line"><a name="l01092"></a><span class="lineno"><a class="line" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5"> 1092</a></span>&#160;<a class="code" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5">flatFetchTransactions</a>(<a class="code" href="classripple_1_1Application.html">Application</a>&amp; app, <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a>&amp; nodestoreHashes)</div>
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;{</div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordflow">if</span> (!app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>().<a class="code" href="classripple_1_1Config.html#a8fdf3fd3b2112759b3a0a7fa4d8afa05">reporting</a>())</div>
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; {</div>
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions: not running in reporting mode&quot;</span>);</div>
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; }</div>
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; </div>
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt;</div>
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;std::shared_ptr&lt;STTx const&gt;</a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;STObject const&gt;</a>&gt;&gt;</div>
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; txns;</div>
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keyword">auto</span> start = <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/system_clock/now.html">std::chrono::system_clock::now</a>();</div>
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keyword">auto</span> nodeDb =</div>
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keyword">dynamic_cast&lt;</span><a class="code" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html">NodeStore::DatabaseNodeImp</a>*<span class="keyword">&gt;</span>(&amp;(app.<a class="code" href="classripple_1_1Application.html#a25c5851322f6cb3762563fd1278c6143">getNodeStore</a>()));</div>
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keywordflow">if</span> (!nodeDb)</div>
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; {</div>
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="stringliteral">&quot;Called flatFetchTransactions but database is not DatabaseNodeImp&quot;</span>);</div>
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; }</div>
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keyword">auto</span> objs = nodeDb-&gt;fetchBatch(nodestoreHashes);</div>
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; </div>
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keyword">auto</span> end = <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/system_clock/now.html">std::chrono::system_clock::now</a>();</div>
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; JLOG(app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;Ledger&quot;</span>).<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>())</div>
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; &lt;&lt; <span class="stringliteral">&quot; Flat fetch time : &quot;</span> &lt;&lt; ((end - start).count() / 1000000000.0)</div>
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; &lt;&lt; <span class="stringliteral">&quot; number of transactions &quot;</span> &lt;&lt; nodestoreHashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; assert(objs.size() == nodestoreHashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>());</div>
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; objs.size(); ++i)</div>
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; {</div>
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <a class="code" href="classripple_1_1base__uint.html">uint256</a>&amp; nodestoreHash = nodestoreHashes[i];</div>
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="keyword">auto</span>&amp; obj = objs[i];</div>
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <span class="keywordflow">if</span> (obj)</div>
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; {</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <span class="keyword">auto</span> node = <a class="code" href="classripple_1_1SHAMapTreeNode.html#a5631e2f77123e3b73229ef4c890ad60f">SHAMapTreeNode::makeFromPrefix</a>(</div>
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <a class="code" href="namespaceripple.html#aabe37451093c21757855542d68fba3ce">makeSlice</a>(obj-&gt;getData()), <a class="code" href="classripple_1_1SHAMapHash.html">SHAMapHash</a>{nodestoreHash});</div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="keywordflow">if</span> (!node)</div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; {</div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions : Error making SHAMap node&quot;</span>);</div>
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; }</div>
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keyword">auto</span> item = (<span class="keyword">static_cast&lt;</span><a class="code" href="classripple_1_1SHAMapLeafNode.html">SHAMapLeafNode</a>*<span class="keyword">&gt;</span>(node.get()))-&gt;peekItem();</div>
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keywordflow">if</span> (!item)</div>
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; {</div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions : Error reading SHAMap node&quot;</span>);</div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; }</div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keyword">auto</span> txnPlusMeta = <a class="code" href="namespaceripple.html#aa1353a397900c2af70f9acba924b33cb">deserializeTxPlusMeta</a>(*item);</div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keywordflow">if</span> (!txnPlusMeta.first || !txnPlusMeta.second)</div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; {</div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions : Error deserializing SHAMap node&quot;</span>);</div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; }</div>
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; txns.push_back(std::move(txnPlusMeta));</div>
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; }</div>
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; {</div>
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions : Containing SHAMap node not found&quot;</span>);</div>
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; }</div>
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; }</div>
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">return</span> txns;</div>
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;}</div>
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt;</div>
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;std::shared_ptr&lt;STTx const&gt;</a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;STObject const&gt;</a>&gt;&gt;</div>
<div class="line"><a name="l01161"></a><span class="lineno"><a class="line" href="namespaceripple.html#a641da3f4ad91dd7082d6a58040932acf"> 1161</a></span>&#160;<a class="code" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5">flatFetchTransactions</a>(<a class="code" href="classripple_1_1ReadView.html">ReadView</a> <span class="keyword">const</span>&amp; ledger, <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app)</div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;{</div>
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keywordflow">if</span> (!app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>().<a class="code" href="classripple_1_1Config.html#a8fdf3fd3b2112759b3a0a7fa4d8afa05">reporting</a>())</div>
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; {</div>
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordflow">return</span> {};</div>
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; }</div>
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; </div>
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keyword">auto</span> nodestoreHashes = <span class="keyword">dynamic_cast&lt;</span><a class="code" href="classripple_1_1RelationalDBInterfacePostgres.html">RelationalDBInterfacePostgres</a>*<span class="keyword">&gt;</span>(</div>
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; &amp;app.<a class="code" href="classripple_1_1Application.html#abd5ac50ab472e7b95341b391cc941e48">getRelationalDBInterface</a>())</div>
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; -&gt;<a class="code" href="namespaceripple.html#a1f8ed5b1b502a174e0dec8728905cd1e">getTxHashes</a>(ledger.<a class="code" href="classripple_1_1ReadView.html#a9263b10d706a447166b229ad8e3b574c">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a>);</div>
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; </div>
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5">flatFetchTransactions</a>(app, nodestoreHashes);</div>
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;}</div>
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a860be08979e27d8c6f37f722f996ba6c">getJobQueue</a>().<a class="code" href="classripple_1_1JobQueue.html#af5e34187d55aa58e551dc196aaf1ec25">addJob</a>(jobType, jobName, [&amp;app, ledger, <a class="code" href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">isCurrent</a>]() {</div>
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; saveValidatedLedger(app, ledger, isCurrent);</div>
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; }))</div>
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; {</div>
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; }</div>
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; </div>
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="comment">// The JobQueue won&#39;t do the Job. Do the save synchronously.</span></div>
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#a4574aa8b71b4bb8afc56cf6daff9ca86">saveValidatedLedger</a>(app, ledger, <a class="code" href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">isCurrent</a>);</div>
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;}</div>
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; </div>
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00996"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#a0e6f8ad49de88ce1eb3ffa77ca346c21"> 996</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#a0e6f8ad49de88ce1eb3ffa77ca346c21">Ledger::unshare</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>-&gt;unshare();</div>
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>-&gt;unshare();</div>
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;}</div>
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; </div>
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l01003"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#a156082bb161144196934ce455ee404b2"> 1003</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#a156082bb161144196934ce455ee404b2">Ledger::invariants</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>-&gt;invariants();</div>
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>-&gt;invariants();</div>
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;}</div>
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;<span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; </div>
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;<span class="comment"> * Make ledger using info loaded from database.</span></div>
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;<span class="comment"> * @param LedgerInfo: Ledger information.</span></div>
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;<span class="comment"> * @param app: Link to the Application.</span></div>
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;<span class="comment"> * @param acquire: Acquire the ledger if not found locally.</span></div>
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;<span class="comment"> * @return Shared pointer to the ledger.</span></div>
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a></div>
<div class="line"><a name="l01019"></a><span class="lineno"><a class="line" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061"> 1019</a></span>&#160;<a class="code" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061">loadLedgerHelper</a>(<a class="code" href="structripple_1_1LedgerInfo.html">LedgerInfo</a> <span class="keyword">const</span>&amp; info, <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app, <span class="keywordtype">bool</span> acquire)</div>
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;{</div>
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="keywordtype">bool</span> loaded;</div>
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keyword">auto</span> ledger = std::make_shared&lt;Ledger&gt;(</div>
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; info,</div>
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; loaded,</div>
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <a class="code" href="namespaceripple.html#a63a883cebf81b764433e67d90d4470d9a86a4fa105ff51b8c3be84734797d8144">acquire</a>,</div>
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(),</div>
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a26ccdf06f25ceadec7894dd5f8da7eab">getNodeFamily</a>(),</div>
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;Ledger&quot;</span>));</div>
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; </div>
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keywordflow">if</span> (!loaded)</div>
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; ledger.reset();</div>
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; </div>
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordflow">return</span> ledger;</div>
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;}</div>
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; </div>
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l01037"></a><span class="lineno"><a class="line" href="namespaceripple.html#a16f9dbea9c8dfaaaca124cf61c6b6e6d"> 1037</a></span>&#160;<a class="code" href="namespaceripple.html#a16f9dbea9c8dfaaaca124cf61c6b6e6d">finishLoadByIndexOrHash</a>(</div>
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a> <span class="keyword">const</span>&amp; ledger,</div>
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <a class="code" href="classripple_1_1Config.html">Config</a> <span class="keyword">const</span>&amp; config,</div>
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> j)</div>
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;{</div>
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">if</span> (!ledger)</div>
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; </div>
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a87ea8cee44207987a9d9ac826aacc831">setImmutable</a>(config);</div>
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; </div>
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; JLOG(j.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) &lt;&lt; <span class="stringliteral">&quot;Loaded ledger: &quot;</span> &lt;&lt; <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#aab2ff724e7c4b0ccdea55d62cdab8bbc">hash</a>);</div>
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; </div>
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a8a75fcab11d8fe2e7bd5cd6643a052e1">setFull</a>();</div>
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;}</div>
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; </div>
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/tuple.html">std::tuple&lt;std::shared_ptr&lt;Ledger&gt;</a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>, <a class="code" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>&gt;</div>
<div class="line"><a name="l01053"></a><span class="lineno"><a class="line" href="namespaceripple.html#a04cf5c0dd5329bc0e0203fb86cf91ed3"> 1053</a></span>&#160;<a class="code" href="namespaceripple.html#a04cf5c0dd5329bc0e0203fb86cf91ed3">getLatestLedger</a>(<a class="code" href="classripple_1_1Application.html">Application</a>&amp; app)</div>
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;{</div>
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keyword">const</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;LedgerInfo&gt;</a> info =</div>
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; app.<a class="code" href="classripple_1_1Application.html#abd5ac50ab472e7b95341b391cc941e48">getRelationalDBInterface</a>().<a class="code" href="classripple_1_1RelationalDBInterface.html#a1cf137dce25e130bffe96e816ab67408">getNewestLedgerInfo</a>();</div>
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keywordflow">if</span> (!info)</div>
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keywordflow">return</span> {<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a>(), {}, {}};</div>
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="keywordflow">return</span> {<a class="code" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061">loadLedgerHelper</a>(*info, app, <span class="keyword">true</span>), info-&gt;seq, info-&gt;hash};</div>
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;}</div>
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; </div>
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a></div>
<div class="line"><a name="l01063"></a><span class="lineno"><a class="line" href="namespaceripple.html#a22adb38923282bf7dbb38655afdb381d"> 1063</a></span>&#160;<a class="code" href="namespaceripple.html#a22adb38923282bf7dbb38655afdb381d">loadByIndex</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ledgerIndex, <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app, <span class="keywordtype">bool</span> acquire)</div>
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;{</div>
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <span class="keywordflow">if</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;LedgerInfo&gt;</a> info =</div>
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; app.<a class="code" href="classripple_1_1Application.html#abd5ac50ab472e7b95341b391cc941e48">getRelationalDBInterface</a>().<a class="code" href="classripple_1_1RelationalDBInterface.html#a1704b3edfa1eebb97e2772a1362ef781">getLedgerInfoByIndex</a>(ledgerIndex))</div>
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; {</div>
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a> ledger = <a class="code" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061">loadLedgerHelper</a>(*info, app, <a class="code" href="namespaceripple.html#a63a883cebf81b764433e67d90d4470d9a86a4fa105ff51b8c3be84734797d8144">acquire</a>);</div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <a class="code" href="namespaceripple.html#a16f9dbea9c8dfaaaca124cf61c6b6e6d">finishLoadByIndexOrHash</a>(ledger, app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(), app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;Ledger&quot;</span>));</div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="keywordflow">return</span> ledger;</div>
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; }</div>
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="keywordflow">return</span> {};</div>
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;}</div>
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; </div>
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a></div>
<div class="line"><a name="l01076"></a><span class="lineno"><a class="line" href="namespaceripple.html#a729619e7a3a0d92226e7d52347ff2a5e"> 1076</a></span>&#160;<a class="code" href="namespaceripple.html#a729619e7a3a0d92226e7d52347ff2a5e">loadByHash</a>(<a class="code" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; ledgerHash, <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app, <span class="keywordtype">bool</span> acquire)</div>
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;{</div>
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">if</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;LedgerInfo&gt;</a> info =</div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; app.<a class="code" href="classripple_1_1Application.html#abd5ac50ab472e7b95341b391cc941e48">getRelationalDBInterface</a>().<a class="code" href="classripple_1_1RelationalDBInterface.html#aa2591b2d99a0dcce5e980eb99b1de2a7">getLedgerInfoByHash</a>(ledgerHash))</div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; {</div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a> ledger = <a class="code" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061">loadLedgerHelper</a>(*info, app, <a class="code" href="namespaceripple.html#a63a883cebf81b764433e67d90d4470d9a86a4fa105ff51b8c3be84734797d8144">acquire</a>);</div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <a class="code" href="namespaceripple.html#a16f9dbea9c8dfaaaca124cf61c6b6e6d">finishLoadByIndexOrHash</a>(ledger, app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(), app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;Ledger&quot;</span>));</div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; assert(!ledger || ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#aab2ff724e7c4b0ccdea55d62cdab8bbc">hash</a> == ledgerHash);</div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordflow">return</span> ledger;</div>
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; }</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keywordflow">return</span> {};</div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;}</div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; </div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt;</div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;std::shared_ptr&lt;STTx const&gt;</a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;STObject const&gt;</a>&gt;&gt;</div>
<div class="line"><a name="l01091"></a><span class="lineno"><a class="line" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5"> 1091</a></span>&#160;<a class="code" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5">flatFetchTransactions</a>(<a class="code" href="classripple_1_1Application.html">Application</a>&amp; app, <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a>&amp; nodestoreHashes)</div>
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;{</div>
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordflow">if</span> (!app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>().<a class="code" href="classripple_1_1Config.html#a8fdf3fd3b2112759b3a0a7fa4d8afa05">reporting</a>())</div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; {</div>
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions: not running in reporting mode&quot;</span>);</div>
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; }</div>
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; </div>
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt;</div>
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;std::shared_ptr&lt;STTx const&gt;</a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;STObject const&gt;</a>&gt;&gt;</div>
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; txns;</div>
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="keyword">auto</span> start = <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/system_clock/now.html">std::chrono::system_clock::now</a>();</div>
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keyword">auto</span> nodeDb =</div>
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keyword">dynamic_cast&lt;</span><a class="code" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html">NodeStore::DatabaseNodeImp</a>*<span class="keyword">&gt;</span>(&amp;(app.<a class="code" href="classripple_1_1Application.html#a25c5851322f6cb3762563fd1278c6143">getNodeStore</a>()));</div>
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keywordflow">if</span> (!nodeDb)</div>
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; {</div>
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="stringliteral">&quot;Called flatFetchTransactions but database is not DatabaseNodeImp&quot;</span>);</div>
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; }</div>
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keyword">auto</span> objs = nodeDb-&gt;fetchBatch(nodestoreHashes);</div>
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; </div>
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keyword">auto</span> end = <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/system_clock/now.html">std::chrono::system_clock::now</a>();</div>
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; JLOG(app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;Ledger&quot;</span>).<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>())</div>
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; &lt;&lt; <span class="stringliteral">&quot; Flat fetch time : &quot;</span> &lt;&lt; ((end - start).count() / 1000000000.0)</div>
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; &lt;&lt; <span class="stringliteral">&quot; number of transactions &quot;</span> &lt;&lt; nodestoreHashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; assert(objs.size() == nodestoreHashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>());</div>
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; objs.size(); ++i)</div>
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; {</div>
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <a class="code" href="classripple_1_1base__uint.html">uint256</a>&amp; nodestoreHash = nodestoreHashes[i];</div>
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keyword">auto</span>&amp; obj = objs[i];</div>
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="keywordflow">if</span> (obj)</div>
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; {</div>
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keyword">auto</span> node = <a class="code" href="classripple_1_1SHAMapTreeNode.html#a5631e2f77123e3b73229ef4c890ad60f">SHAMapTreeNode::makeFromPrefix</a>(</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <a class="code" href="namespaceripple.html#aabe37451093c21757855542d68fba3ce">makeSlice</a>(obj-&gt;getData()), <a class="code" href="classripple_1_1SHAMapHash.html">SHAMapHash</a>{nodestoreHash});</div>
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">if</span> (!node)</div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; {</div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions : Error making SHAMap node&quot;</span>);</div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; }</div>
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <span class="keyword">auto</span> item = (<span class="keyword">static_cast&lt;</span><a class="code" href="classripple_1_1SHAMapLeafNode.html">SHAMapLeafNode</a>*<span class="keyword">&gt;</span>(node.get()))-&gt;peekItem();</div>
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keywordflow">if</span> (!item)</div>
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; {</div>
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions : Error reading SHAMap node&quot;</span>);</div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; }</div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="keyword">auto</span> txnPlusMeta = <a class="code" href="namespaceripple.html#aa1353a397900c2af70f9acba924b33cb">deserializeTxPlusMeta</a>(*item);</div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keywordflow">if</span> (!txnPlusMeta.first || !txnPlusMeta.second)</div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; {</div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions : Error deserializing SHAMap node&quot;</span>);</div>
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; }</div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; txns.push_back(std::move(txnPlusMeta));</div>
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; }</div>
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; {</div>
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions : Containing SHAMap node not found&quot;</span>);</div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; }</div>
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; }</div>
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <span class="keywordflow">return</span> txns;</div>
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;}</div>
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt;</div>
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;std::shared_ptr&lt;STTx const&gt;</a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;STObject const&gt;</a>&gt;&gt;</div>
<div class="line"><a name="l01160"></a><span class="lineno"><a class="line" href="namespaceripple.html#a641da3f4ad91dd7082d6a58040932acf"> 1160</a></span>&#160;<a class="code" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5">flatFetchTransactions</a>(<a class="code" href="classripple_1_1ReadView.html">ReadView</a> <span class="keyword">const</span>&amp; ledger, <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app)</div>
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;{</div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordflow">if</span> (!app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>().<a class="code" href="classripple_1_1Config.html#a8fdf3fd3b2112759b3a0a7fa4d8afa05">reporting</a>())</div>
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; {</div>
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <span class="keywordflow">return</span> {};</div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; }</div>
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; </div>
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keyword">auto</span> nodestoreHashes = <span class="keyword">dynamic_cast&lt;</span><a class="code" href="classripple_1_1RelationalDBInterfacePostgres.html">RelationalDBInterfacePostgres</a>*<span class="keyword">&gt;</span>(</div>
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; &amp;app.<a class="code" href="classripple_1_1Application.html#abd5ac50ab472e7b95341b391cc941e48">getRelationalDBInterface</a>())</div>
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; -&gt;<a class="code" href="namespaceripple.html#a1f8ed5b1b502a174e0dec8728905cd1e">getTxHashes</a>(ledger.<a class="code" href="classripple_1_1ReadView.html#a9263b10d706a447166b229ad8e3b574c">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a>);</div>
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; </div>
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5">flatFetchTransactions</a>(app, nodestoreHashes);</div>
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;}</div>
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;} <span class="comment">// namespace ripple</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassripple_1_1STArray_html_a158ccc470b30b011cd462eadcf6f249c"><div class="ttname"><a href="classripple_1_1STArray.html#a158ccc470b30b011cd462eadcf6f249c">ripple::STArray::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="STArray_8h_source.html#l00138">STArray.h:138</a></div></div>
<div class="ttc" id="aclassripple_1_1STArray_html_a158ccc470b30b011cd462eadcf6f249c"><div class="ttname"><a href="classripple_1_1STArray.html#a158ccc470b30b011cd462eadcf6f249c">ripple::STArray::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="STArray_8h_source.html#l00215">STArray.h:215</a></div></div>
<div class="ttc" id="aclassbeast_1_1Journal_html_a3dfb8e2e3eecccdb5cf78ff21bca069c"><div class="ttname"><a href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">beast::Journal::fatal</a></div><div class="ttdeci">Stream fatal() const</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00339">Journal.h:339</a></div></div>
<div class="ttc" id="aclassripple_1_1ReadView_html_a9263b10d706a447166b229ad8e3b574c"><div class="ttname"><a href="classripple_1_1ReadView.html#a9263b10d706a447166b229ad8e3b574c">ripple::ReadView::info</a></div><div class="ttdeci">virtual LedgerInfo const &amp; info() const =0</div><div class="ttdoc">Returns information about the ledger.</div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a0b300e04e1cd2c608710d02467f4e7be"><div class="ttname"><a href="classripple_1_1Ledger.html#a0b300e04e1cd2c608710d02467f4e7be">ripple::Ledger::slesUpperBound</a></div><div class="ttdeci">std::unique_ptr&lt; sles_type::iter_base &gt; slesUpperBound(uint256 const &amp;key) const override</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00463">Ledger.cpp:463</a></div></div>
@@ -1251,6 +1250,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1Ledger_html_aa83dfb46c969cf85cba5ca889b5cf7d6"><div class="ttname"><a href="classripple_1_1Ledger.html#aa83dfb46c969cf85cba5ca889b5cf7d6">ripple::Ledger::slesBegin</a></div><div class="ttdeci">std::unique_ptr&lt; sles_type::iter_base &gt; slesBegin() const override</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00451">Ledger.cpp:451</a></div></div>
<div class="ttc" id="aclassripple_1_1Application_html_a26ccdf06f25ceadec7894dd5f8da7eab"><div class="ttname"><a href="classripple_1_1Application.html#a26ccdf06f25ceadec7894dd5f8da7eab">ripple::Application::getNodeFamily</a></div><div class="ttdeci">virtual Family &amp; getNodeFamily()=0</div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_aef7b9a3e3b4fd553e0a9db4ff1e7a8a7"><div class="ttname"><a href="classripple_1_1Ledger.html#aef7b9a3e3b4fd553e0a9db4ff1e7a8a7">ripple::Ledger::addSLE</a></div><div class="ttdeci">bool addSLE(SLE const &amp;sle)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00372">Ledger.cpp:372</a></div></div>
<div class="ttc" id="aclassripple_1_1STLedgerEntry_html_adef03efcc12360ee4a7e17bd2434f312"><div class="ttname"><a href="classripple_1_1STLedgerEntry.html#adef03efcc12360ee4a7e17bd2434f312">ripple::STLedgerEntry::key</a></div><div class="ttdeci">uint256 const &amp; key() const</div><div class="ttdoc">Returns the 'key' (or 'index') of this item.</div><div class="ttdef"><b>Definition:</b> <a href="STLedgerEntry_8h_source.html#l00113">STLedgerEntry.h:113</a></div></div>
<div class="ttc" id="anamespaceripple_html_a81aef0121745f69cf76b866c91c2639c"><div class="ttname"><a href="namespaceripple.html#a81aef0121745f69cf76b866c91c2639c">ripple::isFlagLedger</a></div><div class="ttdeci">bool isFlagLedger(LedgerIndex seq)</div><div class="ttdoc">Returns true if the given ledgerIndex is a flag ledgerIndex.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00913">Ledger.cpp:913</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a210375076ddca23b7374efea0b34de4a"><div class="ttname"><a href="classripple_1_1Ledger.html#a210375076ddca23b7374efea0b34de4a">ripple::Ledger::rawReplace</a></div><div class="ttdeci">void rawReplace(std::shared_ptr&lt; SLE &gt; const &amp;sle) override</div><div class="ttdoc">Unconditionally replace a state item.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00541">Ledger.cpp:541</a></div></div>
<div class="ttc" id="anamespaceripple_html_ad5143ceada01141772ae4aab984f94bda7fa2267e9b1bf739a70bb1860ab2a99c"><div class="ttname"><a href="namespaceripple.html#ad5143ceada01141772ae4aab984f94bda7fa2267e9b1bf739a70bb1860ab2a99c">ripple::HashPrefix::ledgerMaster</a></div><div class="ttdeci">@ ledgerMaster</div><div class="ttdoc">ledger master data for signing</div></div>
@@ -1269,14 +1269,14 @@ $(function() {
<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="astructripple_1_1LedgerInfo_html_a5c129196edfd78e992f81959f075e5ca"><div class="ttname"><a href="structripple_1_1LedgerInfo.html#a5c129196edfd78e992f81959f075e5ca">ripple::LedgerInfo::parentHash</a></div><div class="ttdeci">uint256 parentHash</div><div class="ttdef"><b>Definition:</b> <a href="ReadView_8h_source.html#l00103">ReadView.h:103</a></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 &amp; 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#l00160">Indexes.cpp:160</a></div></div>
<div class="ttc" id="anamespaceripple_html_a22adb38923282bf7dbb38655afdb381d"><div class="ttname"><a href="namespaceripple.html#a22adb38923282bf7dbb38655afdb381d">ripple::loadByIndex</a></div><div class="ttdeci">std::shared_ptr&lt; Ledger &gt; loadByIndex(std::uint32_t ledgerIndex, Application &amp;app, bool acquire)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l01064">Ledger.cpp:1064</a></div></div>
<div class="ttc" id="anamespaceripple_html_a22adb38923282bf7dbb38655afdb381d"><div class="ttname"><a href="namespaceripple.html#a22adb38923282bf7dbb38655afdb381d">ripple::loadByIndex</a></div><div class="ttdeci">std::shared_ptr&lt; Ledger &gt; loadByIndex(std::uint32_t ledgerIndex, Application &amp;app, bool acquire)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l01063">Ledger.cpp:1063</a></div></div>
<div class="ttc" id="anamespaceripple_html_ad5143ceada01141772ae4aab984f94bda555f976fd82d9e7e487770c44c7980bf"><div class="ttname"><a href="namespaceripple.html#ad5143ceada01141772ae4aab984f94bda555f976fd82d9e7e487770c44c7980bf">ripple::HashPrefix::txNode</a></div><div class="ttdeci">@ txNode</div><div class="ttdoc">transaction plus metadata</div></div>
<div class="ttc" id="autility_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/utility.html">utility</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_aba4ba40c32fcac1daa1fb3c867c5117e"><div class="ttname"><a href="classripple_1_1Ledger.html#aba4ba40c32fcac1daa1fb3c867c5117e">ripple::Ledger::fees_</a></div><div class="ttdeci">Fees fees_</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8h_source.html#l00408">Ledger.h:408</a></div></div>
<div class="ttc" id="aexception_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="aclassripple_1_1base__uint_html_ad2bffc75e554b89befbb9388e07392c0"><div class="ttname"><a href="classripple_1_1base__uint.html#ad2bffc75e554b89befbb9388e07392c0">ripple::base_uint::isNonZero</a></div><div class="ttdeci">bool isNonZero() const</div><div class="ttdef"><b>Definition:</b> <a href="base__uint_8h_source.html#l00516">base_uint.h:516</a></div></div>
<div class="ttc" id="aclassbeast_1_1Journal_html_abbe082bd27ca0f1d1365af2824e4f85b"><div class="ttname"><a href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">beast::Journal::trace</a></div><div class="ttdeci">Stream trace() const</div><div class="ttdoc">Severity stream access functions.</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00309">Journal.h:309</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a0e6f8ad49de88ce1eb3ffa77ca346c21"><div class="ttname"><a href="classripple_1_1Ledger.html#a0e6f8ad49de88ce1eb3ffa77ca346c21">ripple::Ledger::unshare</a></div><div class="ttdeci">void unshare() const</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00997">Ledger.cpp:997</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a0e6f8ad49de88ce1eb3ffa77ca346c21"><div class="ttname"><a href="classripple_1_1Ledger.html#a0e6f8ad49de88ce1eb3ffa77ca346c21">ripple::Ledger::unshare</a></div><div class="ttdeci">void unshare() const</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00996">Ledger.cpp:996</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a220660a0e999b374e502b117ae93833f"><div class="ttname"><a href="classripple_1_1Ledger.html#a220660a0e999b374e502b117ae93833f">ripple::Ledger::slesEnd</a></div><div class="ttdeci">std::unique_ptr&lt; sles_type::iter_base &gt; slesEnd() const override</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00457">Ledger.cpp:457</a></div></div>
<div class="ttc" id="astructripple_1_1ReadView_1_1txs__type_html"><div class="ttname"><a href="structripple_1_1ReadView_1_1txs__type.html">ripple::ReadView::txs_type</a></div><div class="ttdef"><b>Definition:</b> <a href="ReadView_8h_source.html#l00213">ReadView.h:213</a></div></div>
<div class="ttc" id="anamespaceripple_html_af96d1bdc5286a37ae6e34b3f05d7a1bd"><div class="ttname"><a href="namespaceripple.html#af96d1bdc5286a37ae6e34b3f05d7a1bd">ripple::sfFirstLedgerSequence</a></div><div class="ttdeci">const SF_UINT32 sfFirstLedgerSequence</div></div>
@@ -1297,23 +1297,23 @@ $(function() {
<div class="ttc" id="aduration_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::duration</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1DatabaseNodeImp_html"><div class="ttname"><a href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html">ripple::NodeStore::DatabaseNodeImp</a></div><div class="ttdef"><b>Definition:</b> <a href="DatabaseNodeImp_8h_source.html#l00030">DatabaseNodeImp.h:30</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_acda2d89a44551845c5be38291e5c9e8b"><div class="ttname"><a href="namespaceripple_1_1keylet.html#acda2d89a44551845c5be38291e5c9e8b">ripple::keylet::skip</a></div><div class="ttdeci">Keylet const &amp; skip() noexcept</div><div class="ttdoc">The index of the &quot;short&quot; skip list.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00142">Indexes.cpp:142</a></div></div>
<div class="ttc" id="anamespaceripple_html_a04cf5c0dd5329bc0e0203fb86cf91ed3"><div class="ttname"><a href="namespaceripple.html#a04cf5c0dd5329bc0e0203fb86cf91ed3">ripple::getLatestLedger</a></div><div class="ttdeci">std::tuple&lt; std::shared_ptr&lt; Ledger &gt;, std::uint32_t, uint256 &gt; getLatestLedger(Application &amp;app)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l01054">Ledger.cpp:1054</a></div></div>
<div class="ttc" id="anamespaceripple_html_a04cf5c0dd5329bc0e0203fb86cf91ed3"><div class="ttname"><a href="namespaceripple.html#a04cf5c0dd5329bc0e0203fb86cf91ed3">ripple::getLatestLedger</a></div><div class="ttdeci">std::tuple&lt; std::shared_ptr&lt; Ledger &gt;, std::uint32_t, uint256 &gt; getLatestLedger(Application &amp;app)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l01053">Ledger.cpp:1053</a></div></div>
<div class="ttc" id="anamespaceripple_html_a9a1e35684311191adb2870e2d88030fc"><div class="ttname"><a href="namespaceripple.html#a9a1e35684311191adb2870e2d88030fc">ripple::FLAG_LEDGER_INTERVAL</a></div><div class="ttdeci">constexpr std::uint32_t FLAG_LEDGER_INTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8h_source.html#l00416">Ledger.h:416</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_a6ae7e459a83bc46c3cfd9025753af1cb"><div class="ttname"><a href="classripple_1_1STObject.html#a6ae7e459a83bc46c3cfd9025753af1cb">ripple::STObject::getSerializer</a></div><div class="ttdeci">Serializer getSerializer() const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8h_source.html#l00367">STObject.h:367</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_a6ae7e459a83bc46c3cfd9025753af1cb"><div class="ttname"><a href="classripple_1_1STObject.html#a6ae7e459a83bc46c3cfd9025753af1cb">ripple::STObject::getSerializer</a></div><div class="ttdeci">Serializer getSerializer() const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8h_source.html#l00884">STObject.h:884</a></div></div>
<div class="ttc" id="aemplace_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_set/emplace.html">std::unordered_set::emplace</a></div><div class="ttdeci">T emplace(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a196e844a1c5a015af934bd864690a1e2"><div class="ttname"><a href="classripple_1_1Ledger.html#a196e844a1c5a015af934bd864690a1e2">ripple::Ledger::exists</a></div><div class="ttdeci">bool exists(Keylet const &amp;k) const override</div><div class="ttdoc">Determine if a state item exists.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00408">Ledger.cpp:408</a></div></div>
<div class="ttc" id="aclassbeast_1_1Journal_html_ad8fefe3e8ad583e1ed1bf02094ac3d8f"><div class="ttname"><a href="classbeast_1_1Journal.html#ad8fefe3e8ad583e1ed1bf02094ac3d8f">beast::Journal::warn</a></div><div class="ttdeci">Stream warn() const</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00327">Journal.h:327</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_1_1txs__iter__impl_html_a8b25859915691946909c9fc87db55753"><div class="ttname"><a href="classripple_1_1Ledger_1_1txs__iter__impl.html#a8b25859915691946909c9fc87db55753">ripple::Ledger::txs_iter_impl::equal</a></div><div class="ttdeci">bool equal(base_type const &amp;impl) const override</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00155">Ledger.cpp:155</a></div></div>
<div class="ttc" id="aclassripple_1_1STArray_html_adc3dc750320964c46b6d4ea2af8b8bc7"><div class="ttname"><a href="classripple_1_1STArray.html#adc3dc750320964c46b6d4ea2af8b8bc7">ripple::STArray::push_back</a></div><div class="ttdeci">void push_back(STObject const &amp;object)</div><div class="ttdef"><b>Definition:</b> <a href="STArray_8h_source.html#l00096">STArray.h:96</a></div></div>
<div class="ttc" id="aclassripple_1_1STArray_html_adc3dc750320964c46b6d4ea2af8b8bc7"><div class="ttname"><a href="classripple_1_1STArray.html#adc3dc750320964c46b6d4ea2af8b8bc7">ripple::STArray::push_back</a></div><div class="ttdeci">void push_back(STObject const &amp;object)</div><div class="ttdef"><b>Definition:</b> <a href="STArray_8h_source.html#l00173">STArray.h:173</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a66371f260017cdea7bef8f694a631139"><div class="ttname"><a href="classripple_1_1Ledger.html#a66371f260017cdea7bef8f694a631139">ripple::Ledger::peek</a></div><div class="ttdeci">std::shared_ptr&lt; SLE &gt; peek(Keylet const &amp;k) const</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00644">Ledger.cpp:644</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a156082bb161144196934ce455ee404b2"><div class="ttname"><a href="classripple_1_1Ledger.html#a156082bb161144196934ce455ee404b2">ripple::Ledger::invariants</a></div><div class="ttdeci">void invariants() const</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l01004">Ledger.cpp:1004</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a156082bb161144196934ce455ee404b2"><div class="ttname"><a href="classripple_1_1Ledger.html#a156082bb161144196934ce455ee404b2">ripple::Ledger::invariants</a></div><div class="ttdeci">void invariants() const</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l01003">Ledger.cpp:1003</a></div></div>
<div class="ttc" id="anamespaceripple_html_aebcad336ac983e05caf01c53d1cacde7"><div class="ttname"><a href="namespaceripple.html#aebcad336ac983e05caf01c53d1cacde7">ripple::roundCloseTime</a></div><div class="ttdeci">std::chrono::time_point&lt; Clock, Duration &gt; roundCloseTime(std::chrono::time_point&lt; Clock, Duration &gt; closeTime, std::chrono::duration&lt; Rep, Period &gt; closeResolution)</div><div class="ttdoc">Calculates the close time for a ledger, given a close time resolution.</div><div class="ttdef"><b>Definition:</b> <a href="LedgerTiming_8h_source.html#l00129">LedgerTiming.h:129</a></div></div>
<div class="ttc" id="atuple_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/tuple.html">std::tuple</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_1_1txs__iter__impl_html_abb153a1774b651b6784b4103ee69bc6c"><div class="ttname"><a href="classripple_1_1Ledger_1_1txs__iter__impl.html#abb153a1774b651b6784b4103ee69bc6c">ripple::Ledger::txs_iter_impl::operator=</a></div><div class="ttdeci">txs_iter_impl &amp; operator=(txs_iter_impl const &amp;)=delete</div></div>
<div class="ttc" id="aclassripple_1_1JobQueue_html_af5e34187d55aa58e551dc196aaf1ec25"><div class="ttname"><a href="classripple_1_1JobQueue.html#af5e34187d55aa58e551dc196aaf1ec25">ripple::JobQueue::addJob</a></div><div class="ttdeci">bool addJob(JobType type, std::string const &amp;name, JobHandler &amp;&amp;jobHandler)</div><div class="ttdoc">Adds a job to the JobQueue.</div><div class="ttdef"><b>Definition:</b> <a href="JobQueue_8h_source.html#l00166">JobQueue.h:166</a></div></div>
<div class="ttc" id="astructripple_1_1LedgerInfo_html_a06608577034840a474361d55624ce9a0"><div class="ttname"><a href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">ripple::LedgerInfo::seq</a></div><div class="ttdeci">LedgerIndex seq</div><div class="ttdef"><b>Definition:</b> <a href="ReadView_8h_source.html#l00092">ReadView.h:92</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a0432690b8a2af03cd14cf6c07561ea53"><div class="ttname"><a href="classripple_1_1Ledger.html#a0432690b8a2af03cd14cf6c07561ea53">ripple::Ledger::rawTxInsert</a></div><div class="ttdeci">void rawTxInsert(uint256 const &amp;key, std::shared_ptr&lt; Serializer const &gt; const &amp;txn, std::shared_ptr&lt; Serializer const &gt; const &amp;metaData) override</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00552">Ledger.cpp:552</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_af1235d307d6f464392a583d0dfaa3cc4"><div class="ttname"><a href="classripple_1_1STObject.html#af1235d307d6f464392a583d0dfaa3cc4">ripple::STObject::setFieldVL</a></div><div class="ttdeci">void setFieldVL(SField const &amp;field, Blob const &amp;)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00668">STObject.cpp:668</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_af1235d307d6f464392a583d0dfaa3cc4"><div class="ttname"><a href="classripple_1_1STObject.html#af1235d307d6f464392a583d0dfaa3cc4">ripple::STObject::setFieldVL</a></div><div class="ttdeci">void setFieldVL(SField const &amp;field, Blob const &amp;)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00695">STObject.cpp:695</a></div></div>
<div class="ttc" id="aclassripple_1_1PendingSaves_html_a9c7ac1e9824096756225e77ed14244c1"><div class="ttname"><a href="classripple_1_1PendingSaves.html#a9c7ac1e9824096756225e77ed14244c1">ripple::PendingSaves::startWork</a></div><div class="ttdeci">bool startWork(LedgerIndex seq)</div><div class="ttdoc">Start working on a ledger.</div><div class="ttdef"><b>Definition:</b> <a href="PendingSaves_8h_source.html#l00051">PendingSaves.h:51</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_1_1txs__iter__impl_html_a9c90a5db622af7862c7e570e4d29cff5"><div class="ttname"><a href="classripple_1_1Ledger_1_1txs__iter__impl.html#a9c90a5db622af7862c7e570e4d29cff5">ripple::Ledger::txs_iter_impl::txs_iter_impl</a></div><div class="ttdeci">txs_iter_impl(bool metadata, SHAMap::const_iterator iter)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00143">Ledger.cpp:143</a></div></div>
<div class="ttc" id="astructripple_1_1Fees_html_a75648591a2d5bc9e670f1f4081bfdfe0"><div class="ttname"><a href="structripple_1_1Fees.html#a75648591a2d5bc9e670f1f4081bfdfe0">ripple::Fees::reserve</a></div><div class="ttdeci">XRPAmount reserve</div><div class="ttdef"><b>Definition:</b> <a href="ReadView_8h_source.html#l00052">ReadView.h:52</a></div></div>
@@ -1325,7 +1325,7 @@ $(function() {
<div class="ttc" id="astructripple_1_1LedgerInfo_html_a1ddad764a35cb7eb22d0b4b62df047d5"><div class="ttname"><a href="structripple_1_1LedgerInfo.html#a1ddad764a35cb7eb22d0b4b62df047d5">ripple::LedgerInfo::txHash</a></div><div class="ttdeci">uint256 txHash</div><div class="ttdef"><b>Definition:</b> <a href="ReadView_8h_source.html#l00101">ReadView.h:101</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_aeb716bc6cc0abdf5389e022e2504ba61"><div class="ttname"><a href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">ripple::Ledger::info_</a></div><div class="ttdeci">LedgerInfo info_</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8h_source.html#l00410">Ledger.h:410</a></div></div>
<div class="ttc" id="aclassripple_1_1RelationalDBInterfacePostgres_html"><div class="ttname"><a href="classripple_1_1RelationalDBInterfacePostgres.html">ripple::RelationalDBInterfacePostgres</a></div><div class="ttdef"><b>Definition:</b> <a href="RelationalDBInterfacePostgres_8h_source.html#l00027">RelationalDBInterfacePostgres.h:27</a></div></div>
<div class="ttc" id="anamespaceripple_html_a16f9dbea9c8dfaaaca124cf61c6b6e6d"><div class="ttname"><a href="namespaceripple.html#a16f9dbea9c8dfaaaca124cf61c6b6e6d">ripple::finishLoadByIndexOrHash</a></div><div class="ttdeci">static void finishLoadByIndexOrHash(std::shared_ptr&lt; Ledger &gt; const &amp;ledger, Config const &amp;config, beast::Journal j)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l01038">Ledger.cpp:1038</a></div></div>
<div class="ttc" id="anamespaceripple_html_a16f9dbea9c8dfaaaca124cf61c6b6e6d"><div class="ttname"><a href="namespaceripple.html#a16f9dbea9c8dfaaaca124cf61c6b6e6d">ripple::finishLoadByIndexOrHash</a></div><div class="ttdeci">static void finishLoadByIndexOrHash(std::shared_ptr&lt; Ledger &gt; const &amp;ledger, Config const &amp;config, beast::Journal j)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l01037">Ledger.cpp:1037</a></div></div>
<div class="ttc" id="anamespaceripple_html_a224ce479b5c4267f2863235a53508803"><div class="ttname"><a href="namespaceripple.html#a224ce479b5c4267f2863235a53508803">ripple::deserializeTx</a></div><div class="ttdeci">std::shared_ptr&lt; STTx const &gt; deserializeTx(SHAMapItem const &amp;item)</div><div class="ttdoc">Deserialize a SHAMapItem containing a single STTx.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00382">Ledger.cpp:382</a></div></div>
<div class="ttc" id="aclassripple_1_1SHAMapHash_html"><div class="ttname"><a href="classripple_1_1SHAMapHash.html">ripple::SHAMapHash</a></div><div class="ttdef"><b>Definition:</b> <a href="SHAMapHash_8h_source.html#l00032">SHAMapHash.h:32</a></div></div>
<div class="ttc" id="anamespaceripple_html_a355ec605d1063c4316b6f1480359da19"><div class="ttname"><a href="namespaceripple.html#a355ec605d1063c4316b6f1480359da19">ripple::generateKeyPair</a></div><div class="ttdeci">std::pair&lt; PublicKey, SecretKey &gt; generateKeyPair(KeyType type, Seed const &amp;seed)</div><div class="ttdoc">Generate a key pair deterministically.</div><div class="ttdef"><b>Definition:</b> <a href="SecretKey_8cpp_source.html#l00351">SecretKey.cpp:351</a></div></div>
@@ -1340,7 +1340,6 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_a91e9fe7a4e92dba79c3812fd3edcaacc"><div class="ttname"><a href="namespaceripple.html#a91e9fe7a4e92dba79c3812fd3edcaacc">ripple::digest</a></div><div class="ttdeci">static Hasher::result_type digest(void const *data, std::size_t size) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="tokens_8cpp_source.html#l00047">tokens.cpp:47</a></div></div>
<div class="ttc" id="astructripple_1_1LedgerInfo_html_a8776d1f7ea49b0e25577f5610620c8fc"><div class="ttname"><a href="structripple_1_1LedgerInfo.html#a8776d1f7ea49b0e25577f5610620c8fc">ripple::LedgerInfo::closeTime</a></div><div class="ttdeci">NetClock::time_point closeTime</div><div class="ttdef"><b>Definition:</b> <a href="ReadView_8h_source.html#l00123">ReadView.h:123</a></div></div>
<div class="ttc" id="anamespaceripple_html_adc1f8a2c9b47d7c08e671ad3473e9d3a"><div class="ttname"><a href="namespaceripple.html#adc1f8a2c9b47d7c08e671ad3473e9d3a">ripple::publicKeyType</a></div><div class="ttdeci">std::optional&lt; KeyType &gt; publicKeyType(Slice const &amp;slice)</div><div class="ttdoc">Returns the type of public key.</div><div class="ttdef"><b>Definition:</b> <a href="PublicKey_8cpp_source.html#l00203">PublicKey.cpp:203</a></div></div>
<div class="ttc" id="aclassripple_1_1STLedgerEntry_html_a6387602187c2ca4e22297d5c908cbad6"><div class="ttname"><a href="classripple_1_1STLedgerEntry.html#a6387602187c2ca4e22297d5c908cbad6">ripple::STLedgerEntry::key</a></div><div class="ttdeci">uint256 const &amp; key() const</div><div class="ttdoc">Returns the 'key' (or 'index') of this item.</div><div class="ttdef"><b>Definition:</b> <a href="STLedgerEntry_8h_source.html#l00086">STLedgerEntry.h:86</a></div></div>
<div class="ttc" id="astructripple_1_1Keylet_html_a482983062843a8682fcea76a309c73db"><div class="ttname"><a href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">ripple::Keylet::key</a></div><div class="ttdeci">uint256 key</div><div class="ttdef"><b>Definition:</b> <a href="Keylet_8h_source.html#l00040">Keylet.h:40</a></div></div>
<div class="ttc" id="aclassripple_1_1base__uint_html"><div class="ttname"><a href="classripple_1_1base__uint.html">ripple::base_uint&lt; 256 &gt;</a></div></div>
<div class="ttc" id="anamespaceripple_html_ae0f54f8ce649d639bf3e2b295347e17aaa4e32e16425bc63db04ed98f3b3f4259"><div class="ttname"><a href="namespaceripple.html#ae0f54f8ce649d639bf3e2b295347e17aaa4e32e16425bc63db04ed98f3b3f4259">ripple::jtPUBOLDLEDGER</a></div><div class="ttdeci">@ jtPUBOLDLEDGER</div><div class="ttdef"><b>Definition:</b> <a href="Job_8h_source.html#l00043">Job.h:43</a></div></div>
@@ -1349,7 +1348,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1Config_html_a8fdf3fd3b2112759b3a0a7fa4d8afa05"><div class="ttname"><a href="classripple_1_1Config.html#a8fdf3fd3b2112759b3a0a7fa4d8afa05">ripple::Config::reporting</a></div><div class="ttdeci">bool reporting() const</div><div class="ttdef"><b>Definition:</b> <a href="Config_8h_source.html#l00316">Config.h:316</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a46a546d8198b17cb9dff3036d920eee4"><div class="ttname"><a href="classripple_1_1Ledger.html#a46a546d8198b17cb9dff3036d920eee4">ripple::Ledger::txExists</a></div><div class="ttdeci">bool txExists(uint256 const &amp;key) const override</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00482">Ledger.cpp:482</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4574aa8b71b4bb8afc56cf6daff9ca86"><div class="ttname"><a href="namespaceripple.html#a4574aa8b71b4bb8afc56cf6daff9ca86">ripple::saveValidatedLedger</a></div><div class="ttdeci">static bool saveValidatedLedger(Application &amp;app, std::shared_ptr&lt; Ledger const &gt; const &amp;ledger, bool current)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00919">Ledger.cpp:919</a></div></div>
<div class="ttc" id="anamespaceripple_html_a729619e7a3a0d92226e7d52347ff2a5e"><div class="ttname"><a href="namespaceripple.html#a729619e7a3a0d92226e7d52347ff2a5e">ripple::loadByHash</a></div><div class="ttdeci">std::shared_ptr&lt; Ledger &gt; loadByHash(uint256 const &amp;ledgerHash, Application &amp;app, bool acquire)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l01077">Ledger.cpp:1077</a></div></div>
<div class="ttc" id="anamespaceripple_html_a729619e7a3a0d92226e7d52347ff2a5e"><div class="ttname"><a href="namespaceripple.html#a729619e7a3a0d92226e7d52347ff2a5e">ripple::loadByHash</a></div><div class="ttdeci">std::shared_ptr&lt; Ledger &gt; loadByHash(uint256 const &amp;ledgerHash, Application &amp;app, bool acquire)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l01076">Ledger.cpp:1076</a></div></div>
<div class="ttc" id="aclassripple_1_1RelationalDBInterface_html_a1704b3edfa1eebb97e2772a1362ef781"><div class="ttname"><a href="classripple_1_1RelationalDBInterface.html#a1704b3edfa1eebb97e2772a1362ef781">ripple::RelationalDBInterface::getLedgerInfoByIndex</a></div><div class="ttdeci">virtual std::optional&lt; LedgerInfo &gt; getLedgerInfoByIndex(LedgerIndex ledgerSeq)=0</div><div class="ttdoc">getLedgerInfoByIndex Returns ledger by its sequence.</div></div>
<div class="ttc" id="aclassripple_1_1base__uint_html_a6fd7dba1ad932f4c1246c9a090c145e5"><div class="ttname"><a href="classripple_1_1base__uint.html#a6fd7dba1ad932f4c1246c9a090c145e5">ripple::base_uint::isZero</a></div><div class="ttdeci">bool isZero() const</div><div class="ttdef"><b>Definition:</b> <a href="base__uint_8h_source.html#l00511">base_uint.h:511</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_acbcedaa40d8162271cb6e6f37f549e5f"><div class="ttname"><a href="classripple_1_1Ledger.html#acbcedaa40d8162271cb6e6f37f549e5f">ripple::Ledger::setAccepted</a></div><div class="ttdeci">void setAccepted(NetClock::time_point closeTime, NetClock::duration closeResolution, bool correctCloseTime, Config const &amp;config)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00356">Ledger.cpp:356</a></div></div>
@@ -1372,7 +1371,7 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_a38d1749cd010f88da471b4183b2dfe52"><div class="ttname"><a href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">ripple::isCurrent</a></div><div class="ttdeci">bool isCurrent(ValidationParms const &amp;p, NetClock::time_point now, NetClock::time_point signTime, NetClock::time_point seenTime)</div><div class="ttdoc">Whether a validation is still current.</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l00146">Validations.h:146</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_1_1txs__iter__impl_html_a3edbc55ca2c3810cf38611bc1a3f74ad"><div class="ttname"><a href="classripple_1_1Ledger_1_1txs__iter__impl.html#a3edbc55ca2c3810cf38611bc1a3f74ad">ripple::Ledger::txs_iter_impl::iter_</a></div><div class="ttdeci">SHAMap::const_iterator iter_</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00134">Ledger.cpp:134</a></div></div>
<div class="ttc" id="aclassripple_1_1Config_html_afa4d9ecf1f0056fb1709770696b036f0"><div class="ttname"><a href="classripple_1_1Config.html#afa4d9ecf1f0056fb1709770696b036f0">ripple::Config::FEE_OWNER_RESERVE</a></div><div class="ttdeci">XRPAmount FEE_OWNER_RESERVE</div><div class="ttdef"><b>Definition:</b> <a href="Config_8h_source.html#l00188">Config.h:188</a></div></div>
<div class="ttc" id="aclassripple_1_1SHAMap_1_1const__iterator_html"><div class="ttname"><a href="classripple_1_1SHAMap_1_1const__iterator.html">ripple::SHAMap::const_iterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SHAMap_8h_source.html#l00597">SHAMap.h:597</a></div></div>
<div class="ttc" id="aclassripple_1_1SHAMap_1_1const__iterator_html"><div class="ttname"><a href="classripple_1_1SHAMap_1_1const__iterator.html">ripple::SHAMap::const_iterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SHAMap_8h_source.html#l00624">SHAMap.h:624</a></div></div>
<div class="ttc" id="anamespaceripple_html_a614d8681c8dff84ac2257939751987c5"><div class="ttname"><a href="namespaceripple.html#a614d8681c8dff84ac2257939751987c5">ripple::calcAccountID</a></div><div class="ttdeci">AccountID calcAccountID(PublicKey const &amp;pk)</div><div class="ttdef"><b>Definition:</b> <a href="AccountID_8cpp_source.html#l00080">AccountID.cpp:80</a></div></div>
<div class="ttc" id="aclassripple_1_1SHAMap_html"><div class="ttname"><a href="classripple_1_1SHAMap.html">ripple::SHAMap</a></div><div class="ttdoc">A SHAMap is both a radix tree with a fan-out of 16 and a Merkle tree.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMap_8h_source.html#l00095">SHAMap.h:95</a></div></div>
<div class="ttc" id="aclassripple_1_1STArray_html"><div class="ttname"><a href="classripple_1_1STArray.html">ripple::STArray</a></div><div class="ttdef"><b>Definition:</b> <a href="STArray_8h_source.html#l00028">STArray.h:28</a></div></div>
@@ -1394,7 +1393,6 @@ $(function() {
<div class="ttc" id="aclassripple_1_1Ledger_html_a136b67ea0189f69434c67ebbbffd8e49"><div class="ttname"><a href="classripple_1_1Ledger.html#a136b67ea0189f69434c67ebbbffd8e49">ripple::Ledger::assertSensible</a></div><div class="ttdeci">bool assertSensible(beast::Journal ledgerJ) const</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00814">Ledger.cpp:814</a></div></div>
<div class="ttc" id="aclassripple_1_1Family_html"><div class="ttname"><a href="classripple_1_1Family.html">ripple::Family</a></div><div class="ttdef"><b>Definition:</b> <a href="Family_8h_source.html#l00032">Family.h:32</a></div></div>
<div class="ttc" id="anamespaceripple_html_a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000"><div class="ttname"><a href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">ripple::ValStatus::current</a></div><div class="ttdeci">@ current</div><div class="ttdoc">This was a new validation and was added.</div></div>
<div class="ttc" id="aclassripple_1_1Job_html"><div class="ttname"><a href="classripple_1_1Job.html">ripple::Job</a></div><div class="ttdef"><b>Definition:</b> <a href="Job_8h_source.html#l00094">Job.h:94</a></div></div>
<div class="ttc" id="aclassripple_1_1SerialIter_html"><div class="ttname"><a href="classripple_1_1SerialIter.html">ripple::SerialIter</a></div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00310">Serializer.h:310</a></div></div>
<div class="ttc" id="aclassripple_1_1PendingSaves_html_a50e49f47a9b7bbc2e7875918708b0624"><div class="ttname"><a href="classripple_1_1PendingSaves.html#a50e49f47a9b7bbc2e7875918708b0624">ripple::PendingSaves::finishWork</a></div><div class="ttdeci">void finishWork(LedgerIndex seq)</div><div class="ttdoc">Finish working on a ledger.</div><div class="ttdef"><b>Definition:</b> <a href="PendingSaves_8h_source.html#l00074">PendingSaves.h:74</a></div></div>
<div class="ttc" id="aclassbeast_1_1Journal_html"><div class="ttname"><a href="classbeast_1_1Journal.html">beast::Journal</a></div><div class="ttdoc">A generic endpoint for log messages.</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00058">Journal.h:58</a></div></div>
@@ -1407,7 +1405,6 @@ $(function() {
<div class="ttc" id="aclassripple_1_1Ledger_html_a29434afa7c2ad64e71bb139bdd588191"><div class="ttname"><a href="classripple_1_1Ledger.html#a29434afa7c2ad64e71bb139bdd588191">ripple::Ledger::validatorToReEnable</a></div><div class="ttdeci">std::optional&lt; PublicKey &gt; validatorToReEnable() const</div><div class="ttdoc">get the to be re-enabled validator's master public key if any</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00697">Ledger.cpp:697</a></div></div>
<div class="ttc" id="aclassripple_1_1PendingSaves_html_ab5e9e105f7d12575bc2025468b4cc1f8"><div class="ttname"><a href="classripple_1_1PendingSaves.html#ab5e9e105f7d12575bc2025468b4cc1f8">ripple::PendingSaves::shouldWork</a></div><div class="ttdeci">bool shouldWork(LedgerIndex seq, bool isSynchronous)</div><div class="ttdoc">Check if a ledger should be dispatched.</div><div class="ttdef"><b>Definition:</b> <a href="PendingSaves_8h_source.html#l00099">PendingSaves.h:99</a></div></div>
<div class="ttc" id="astructripple_1_1LedgerInfo_html_ad789f949fc35acd576aac965b20aaaca"><div class="ttname"><a href="structripple_1_1LedgerInfo.html#ad789f949fc35acd576aac965b20aaaca">ripple::LedgerInfo::drops</a></div><div class="ttdeci">XRPAmount drops</div><div class="ttdef"><b>Definition:</b> <a href="ReadView_8h_source.html#l00105">ReadView.h:105</a></div></div>
<div class="ttc" id="aclassripple_1_1STArray_html_a9a8e8e818ee5ba2536921d3e63cda98e"><div class="ttname"><a href="classripple_1_1STArray.html#a9a8e8e818ee5ba2536921d3e63cda98e">ripple::STArray::back</a></div><div class="ttdeci">STObject &amp; back()</div><div class="ttdef"><b>Definition:</b> <a href="STArray_8h_source.html#l00077">STArray.h:77</a></div></div>
<div class="ttc" id="anamespaceripple_html_a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757"><div class="ttname"><a href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">ripple::KeyType::secp256k1</a></div><div class="ttdeci">@ secp256k1</div></div>
<div class="ttc" id="aclassripple_1_1Serializer_html"><div class="ttname"><a href="classripple_1_1Serializer.html">ripple::Serializer</a></div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00039">Serializer.h:39</a></div></div>
<div class="ttc" id="anamespaceripple_html_ad30131b5a5b7cf60d9b392ab868b8c0e"><div class="ttname"><a href="namespaceripple.html#ad30131b5a5b7cf60d9b392ab868b8c0e">ripple::getJson</a></div><div class="ttdeci">Json::Value getJson(LedgerFill const &amp;fill)</div><div class="ttdoc">Return a new Json::Value representing the ledger with given options.</div><div class="ttdef"><b>Definition:</b> <a href="LedgerToJson_8cpp_source.html#l00291">LedgerToJson.cpp:291</a></div></div>
@@ -1429,7 +1426,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1Application_html_a2897c28a5b5040e80e66f676d201d03f"><div class="ttname"><a href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">ripple::Application::journal</a></div><div class="ttdeci">virtual beast::Journal journal(std::string const &amp;name)=0</div></div>
<div class="ttc" id="anamespaceripple_html_a63a883cebf81b764433e67d90d4470d9a86a4fa105ff51b8c3be84734797d8144"><div class="ttname"><a href="namespaceripple.html#a63a883cebf81b764433e67d90d4470d9a86a4fa105ff51b8c3be84734797d8144">ripple::ShardState::acquire</a></div><div class="ttdeci">@ acquire</div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a0003b028844c6ac875b7c5f328d0c92e"><div class="ttname"><a href="classripple_1_1Ledger.html#a0003b028844c6ac875b7c5f328d0c92e">ripple::Ledger::setup</a></div><div class="ttdeci">bool setup(Config const &amp;config)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00590">Ledger.cpp:590</a></div></div>
<div class="ttc" id="aclassripple_1_1STArray_html_a12601f465a34c4aba5b9212e747d738d"><div class="ttname"><a href="classripple_1_1STArray.html#a12601f465a34c4aba5b9212e747d738d">ripple::STArray::emplace_back</a></div><div class="ttdeci">void emplace_back(Args &amp;&amp;... args)</div><div class="ttdef"><b>Definition:</b> <a href="STArray_8h_source.html#l00090">STArray.h:90</a></div></div>
<div class="ttc" id="aclassripple_1_1STArray_html_a12601f465a34c4aba5b9212e747d738d"><div class="ttname"><a href="classripple_1_1STArray.html#a12601f465a34c4aba5b9212e747d738d">ripple::STArray::emplace_back</a></div><div class="ttdeci">void emplace_back(Args &amp;&amp;... args)</div><div class="ttdef"><b>Definition:</b> <a href="STArray_8h_source.html#l00167">STArray.h:167</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#l00260">ReadView.h:260</a></div></div>
<div class="ttc" id="abegin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/begin.html">std::vector::begin</a></div><div class="ttdeci">T begin(T... args)</div></div>
<div class="ttc" id="anamespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdoc">STL namespace.</div></div>
@@ -1457,6 +1454,7 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_a5d9fe757c37a7602a883d30b14e1bf3c"><div class="ttname"><a href="namespaceripple.html#a5d9fe757c37a7602a883d30b14e1bf3c">ripple::SHAMapType</a></div><div class="ttdeci">SHAMapType</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapMissingNode_8h_source.html#l00032">SHAMapMissingNode.h:32</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_1_1txs__iter__impl_html"><div class="ttname"><a href="classripple_1_1Ledger_1_1txs__iter__impl.html">ripple::Ledger::txs_iter_impl</a></div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00130">Ledger.cpp:130</a></div></div>
<div class="ttc" id="aoptional_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a></div></div>
<div class="ttc" id="aclassripple_1_1STArray_html_a75f0aea39c00662bf3a18b263364e422"><div class="ttname"><a href="classripple_1_1STArray.html#a75f0aea39c00662bf3a18b263364e422">ripple::STArray::back</a></div><div class="ttdeci">STObject &amp; back()</div><div class="ttdef"><b>Definition:</b> <a href="STArray_8h_source.html#l00154">STArray.h:154</a></div></div>
<div class="ttc" id="aclassbeast_1_1Journal_html_a556228cb60bcf405c225d3f64b7b01ae"><div class="ttname"><a href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">beast::Journal::debug</a></div><div class="ttdeci">Stream debug() const</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00315">Journal.h:315</a></div></div>
<div class="ttc" id="anamespaceripple_html_ae0f54f8ce649d639bf3e2b295347e17a"><div class="ttname"><a href="namespaceripple.html#ae0f54f8ce649d639bf3e2b295347e17a">ripple::JobType</a></div><div class="ttdeci">JobType</div><div class="ttdef"><b>Definition:</b> <a href="Job_8h_source.html#l00034">Job.h:34</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_ac58ecac7b057504ea6c1706c0ee04623"><div class="ttname"><a href="namespaceripple_1_1keylet.html#ac58ecac7b057504ea6c1706c0ee04623">ripple::keylet::fees</a></div><div class="ttdeci">Keylet const &amp; fees() noexcept</div><div class="ttdoc">The (fixed) index of the object containing the ledger fees.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00168">Indexes.cpp:168</a></div></div>
@@ -1475,9 +1473,9 @@ $(function() {
<div class="ttc" id="aclassripple_1_1Ledger_html_afbe1eed445f88d1c62e0f11bb0289ce5"><div class="ttname"><a href="classripple_1_1Ledger.html#afbe1eed445f88d1c62e0f11bb0289ce5">ripple::Ledger::Ledger</a></div><div class="ttdeci">Ledger(Ledger const &amp;)=delete</div></div>
<div class="ttc" id="aunique_ptr_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a68cfe4a8abf683e2d6909f0d96013d8f"><div class="ttname"><a href="classripple_1_1Ledger.html#a68cfe4a8abf683e2d6909f0d96013d8f">ripple::Ledger::digest</a></div><div class="ttdeci">std::optional&lt; digest_type &gt; digest(key_type const &amp;key) const override</div><div class="ttdoc">Return the digest associated with the key.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00503">Ledger.cpp:503</a></div></div>
<div class="ttc" id="anamespaceripple_html_a56e0cc999ed456f36e9662a4fcae5061"><div class="ttname"><a href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061">ripple::loadLedgerHelper</a></div><div class="ttdeci">std::shared_ptr&lt; Ledger &gt; loadLedgerHelper(LedgerInfo const &amp;info, Application &amp;app, bool acquire)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l01020">Ledger.cpp:1020</a></div></div>
<div class="ttc" id="anamespaceripple_html_a56e0cc999ed456f36e9662a4fcae5061"><div class="ttname"><a href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061">ripple::loadLedgerHelper</a></div><div class="ttdeci">std::shared_ptr&lt; Ledger &gt; loadLedgerHelper(LedgerInfo const &amp;info, Application &amp;app, bool acquire)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l01019">Ledger.cpp:1019</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_1_1txs__iter__impl_html_a9c6b87e4c02e4538f5c86b8aa8f553a9"><div class="ttname"><a href="classripple_1_1Ledger_1_1txs__iter__impl.html#a9c6b87e4c02e4538f5c86b8aa8f553a9">ripple::Ledger::txs_iter_impl::increment</a></div><div class="ttdeci">void increment() override</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00163">Ledger.cpp:163</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_acd1aac04649d694a3524faf2ddebf843"><div class="ttname"><a href="classripple_1_1STObject.html#acd1aac04649d694a3524faf2ddebf843">ripple::STObject::setFieldU32</a></div><div class="ttdeci">void setFieldU32(SField const &amp;field, std::uint32_t)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00632">STObject.cpp:632</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_acd1aac04649d694a3524faf2ddebf843"><div class="ttname"><a href="classripple_1_1STObject.html#acd1aac04649d694a3524faf2ddebf843">ripple::STObject::setFieldU32</a></div><div class="ttdeci">void setFieldU32(SField const &amp;field, std::uint32_t)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00659">STObject.cpp:659</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_1_1sles__iter__impl_html_a0adbe4008ec68f0ae01b503356c35abb"><div class="ttname"><a href="classripple_1_1Ledger_1_1sles__iter__impl.html#a0adbe4008ec68f0ae01b503356c35abb">ripple::Ledger::sles_iter_impl::copy</a></div><div class="ttdeci">std::unique_ptr&lt; base_type &gt; copy() const override</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00100">Ledger.cpp:100</a></div></div>
<div class="ttc" id="anamespaceripple_html_a1b20cb9afe194d709bbeae9cc15fb180"><div class="ttname"><a href="namespaceripple.html#a1b20cb9afe194d709bbeae9cc15fb180">ripple::sfDisabledValidators</a></div><div class="ttdeci">const SField sfDisabledValidators</div></div>
<div class="ttc" id="anamespaceripple_html_a16991de33a4e83d355de9c387c712a4e"><div class="ttname"><a href="namespaceripple.html#a16991de33a4e83d355de9c387c712a4e">ripple::sfPublicKey</a></div><div class="ttdeci">const SF_VL sfPublicKey</div></div>
@@ -1495,7 +1493,7 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_a1f8ed5b1b502a174e0dec8728905cd1e"><div class="ttname"><a href="namespaceripple.html#a1f8ed5b1b502a174e0dec8728905cd1e">ripple::getTxHashes</a></div><div class="ttdeci">std::vector&lt; uint256 &gt; getTxHashes(std::shared_ptr&lt; PgPool &gt; const &amp;pgPool, LedgerIndex seq, Application &amp;app)</div><div class="ttdoc">getTxHashes Returns vector of tx hashes by given ledger sequence</div><div class="ttdef"><b>Definition:</b> <a href="RelationalDBInterface__postgres_8cpp_source.html#l00330">RelationalDBInterface_postgres.cpp:330</a></div></div>
<div class="ttc" id="anamespaceripple_html_a99725c9e6e92c48aeea784b5db6400fb"><div class="ttname"><a href="namespaceripple.html#a99725c9e6e92c48aeea784b5db6400fb">ripple::sfValidatorToReEnable</a></div><div class="ttdeci">const SF_VL sfValidatorToReEnable</div></div>
<div class="ttc" id="astructripple_1_1LedgerInfo_html_a3f7b6fb6d401cfc76e0179b061e02eb4"><div class="ttname"><a href="structripple_1_1LedgerInfo.html#a3f7b6fb6d401cfc76e0179b061e02eb4">ripple::LedgerInfo::parentCloseTime</a></div><div class="ttdeci">NetClock::time_point parentCloseTime</div><div class="ttdef"><b>Definition:</b> <a href="ReadView_8h_source.html#l00093">ReadView.h:93</a></div></div>
<div class="ttc" id="anamespaceripple_html_a6328c469eb804b05c66c8c140d470ba5"><div class="ttname"><a href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5">ripple::flatFetchTransactions</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; std::shared_ptr&lt; STTx const &gt;, std::shared_ptr&lt; STObject const &gt; &gt; &gt; flatFetchTransactions(Application &amp;app, std::vector&lt; uint256 &gt; &amp;nodestoreHashes)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l01092">Ledger.cpp:1092</a></div></div>
<div class="ttc" id="anamespaceripple_html_a6328c469eb804b05c66c8c140d470ba5"><div class="ttname"><a href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5">ripple::flatFetchTransactions</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; std::shared_ptr&lt; STTx const &gt;, std::shared_ptr&lt; STObject const &gt; &gt; &gt; flatFetchTransactions(Application &amp;app, std::vector&lt; uint256 &gt; &amp;nodestoreHashes)</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l01091">Ledger.cpp:1091</a></div></div>
<div class="ttc" id="anow_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/chrono/system_clock/now.html">std::chrono::system_clock::now</a></div><div class="ttdeci">T now(T... args)</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>