This commit is contained in:
nbougalis
2022-01-13 21:46:19 +00:00
parent 3ded95240d
commit 7bfed76f34
466 changed files with 42757 additions and 41995 deletions

View File

@@ -831,7 +831,7 @@ $(function() {
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; </div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;<span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;<span class="keywordtype">bool</span></div>
<div class="line"><a name="l00763"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#ac72cd0b23f72fff0b3cd479007b94d10"> 763</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#ac72cd0b23f72fff0b3cd479007b94d10">Ledger::walkLedger</a>(<a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> j)<span class="keyword"> const</span></div>
<div class="line"><a name="l00763"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#a84b32158843ca8c316711f0dfb85138d"> 763</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#a84b32158843ca8c316711f0dfb85138d">Ledger::walkLedger</a>(<a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> j, <span class="keywordtype">bool</span> parallel)<span class="keyword"> const</span></div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;SHAMapMissingNode&gt;</a> missingNodes1;</div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;SHAMapMissingNode&gt;</a> missingNodes2;</div>
@@ -844,400 +844,403 @@ $(function() {
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; }</div>
<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; <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>-&gt;walkMap(missingNodes1, 32);</div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; }</div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; </div>
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">if</span> (!missingNodes1.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/empty.html">empty</a>())</div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; {</div>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">auto</span> stream = j.<a class="code" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>())</div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; {</div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; stream &lt;&lt; missingNodes1.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() &lt;&lt; <span class="stringliteral">&quot; missing account node(s)&quot;</span>;</div>
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; stream &lt;&lt; <span class="stringliteral">&quot;First: &quot;</span> &lt;&lt; missingNodes1[0].what();</div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; }</div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; }</div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; </div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>-&gt;getHash().isZero() &amp;&amp; <a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a1ddad764a35cb7eb22d0b4b62df047d5">txHash</a>.<a class="code" href="classripple_1_1base__uint.html#ad2bffc75e554b89befbb9388e07392c0">isNonZero</a>() &amp;&amp;</div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; !<a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>-&gt;fetchRoot(<a class="code" href="classripple_1_1SHAMapHash.html">SHAMapHash</a>{info_.txHash}, <span class="keyword">nullptr</span>))</div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; {</div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; missingNodes2.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/emplace_back.html">emplace_back</a>(</div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <a class="code" href="namespaceripple.html#a5d9fe757c37a7602a883d30b14e1bf3cae6bed345f53943469741d7295552fcd4">SHAMapType::TRANSACTION</a>, <a class="code" href="classripple_1_1SHAMapHash.html">SHAMapHash</a>{<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a1ddad764a35cb7eb22d0b4b62df047d5">txHash</a>});</div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; }</div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; {</div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>-&gt;walkMap(missingNodes2, 32);</div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; }</div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; </div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">if</span> (!missingNodes2.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/empty.html">empty</a>())</div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; {</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">auto</span> stream = j.<a class="code" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>())</div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; stream &lt;&lt; missingNodes2.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() &lt;&lt; <span class="stringliteral">&quot; missing transaction node(s)&quot;</span>;</div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; stream &lt;&lt; <span class="stringliteral">&quot;First: &quot;</span> &lt;&lt; missingNodes2[0].what();</div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; }</div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; }</div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordflow">return</span> missingNodes1.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/empty.html">empty</a>() &amp;&amp; missingNodes2.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/empty.html">empty</a>();</div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;}</div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; </div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;<span class="keywordtype">bool</span></div>
<div class="line"><a name="l00811"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#a136b67ea0189f69434c67ebbbffd8e49"> 811</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#a136b67ea0189f69434c67ebbbffd8e49">Ledger::assertSensible</a>(<a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> ledgerJ)<span class="keyword"> const</span></div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#aab2ff724e7c4b0ccdea55d62cdab8bbc">hash</a>.<a class="code" href="classripple_1_1base__uint.html#ad2bffc75e554b89befbb9388e07392c0">isNonZero</a>() &amp;&amp; <a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#aadfc3fc0c7935a8705f3e9ab0c49b9d5">accountHash</a>.<a class="code" href="classripple_1_1base__uint.html#ad2bffc75e554b89befbb9388e07392c0">isNonZero</a>() &amp;&amp; <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a> &amp;&amp;</div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a> &amp;&amp; (<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#aadfc3fc0c7935a8705f3e9ab0c49b9d5">accountHash</a> == <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>-&gt;getHash().as_uint256()) &amp;&amp;</div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; (<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a1ddad764a35cb7eb22d0b4b62df047d5">txHash</a> == <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>-&gt;getHash().as_uint256()))</div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; {</div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; }</div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; </div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> j = <a class="code" href="namespaceripple.html#ad30131b5a5b7cf60d9b392ab868b8c0e">getJson</a>({*<span class="keyword">this</span>, {}});</div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; </div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; j[jss::accountTreeHash] = <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#aadfc3fc0c7935a8705f3e9ab0c49b9d5">accountHash</a>);</div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; j[jss::transTreeHash] = <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a1ddad764a35cb7eb22d0b4b62df047d5">txHash</a>);</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="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>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; </div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">if</span> (!missingNodes1.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/empty.html">empty</a>())</div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; {</div>
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">auto</span> stream = j.<a class="code" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>())</div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; {</div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; stream &lt;&lt; missingNodes1.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() &lt;&lt; <span class="stringliteral">&quot; missing account node(s)&quot;</span>;</div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; stream &lt;&lt; <span class="stringliteral">&quot;First: &quot;</span> &lt;&lt; missingNodes1[0].what();</div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; }</div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; }</div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; </div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>-&gt;getHash().isZero() &amp;&amp; <a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a1ddad764a35cb7eb22d0b4b62df047d5">txHash</a>.<a class="code" href="classripple_1_1base__uint.html#ad2bffc75e554b89befbb9388e07392c0">isNonZero</a>() &amp;&amp;</div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; !<a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>-&gt;fetchRoot(<a class="code" href="classripple_1_1SHAMapHash.html">SHAMapHash</a>{info_.txHash}, <span class="keyword">nullptr</span>))</div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; {</div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; missingNodes2.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/emplace_back.html">emplace_back</a>(</div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <a class="code" href="namespaceripple.html#a5d9fe757c37a7602a883d30b14e1bf3cae6bed345f53943469741d7295552fcd4">SHAMapType::TRANSACTION</a>, <a class="code" href="classripple_1_1SHAMapHash.html">SHAMapHash</a>{<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a1ddad764a35cb7eb22d0b4b62df047d5">txHash</a>});</div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; }</div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; {</div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>-&gt;walkMap(missingNodes2, 32);</div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; </div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordflow">if</span> (!missingNodes2.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/empty.html">empty</a>())</div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; {</div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">auto</span> stream = j.<a class="code" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>())</div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; {</div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; stream &lt;&lt; missingNodes2.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() &lt;&lt; <span class="stringliteral">&quot; missing transaction node(s)&quot;</span>;</div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; stream &lt;&lt; <span class="stringliteral">&quot;First: &quot;</span> &lt;&lt; missingNodes2[0].what();</div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; }</div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; }</div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">return</span> missingNodes1.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/empty.html">empty</a>() &amp;&amp; missingNodes2.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/empty.html">empty</a>();</div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;}</div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; </div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;<span class="keywordtype">bool</span></div>
<div class="line"><a name="l00814"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#a136b67ea0189f69434c67ebbbffd8e49"> 814</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#a136b67ea0189f69434c67ebbbffd8e49">Ledger::assertSensible</a>(<a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> ledgerJ)<span class="keyword"> const</span></div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#aab2ff724e7c4b0ccdea55d62cdab8bbc">hash</a>.<a class="code" href="classripple_1_1base__uint.html#ad2bffc75e554b89befbb9388e07392c0">isNonZero</a>() &amp;&amp; <a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#aadfc3fc0c7935a8705f3e9ab0c49b9d5">accountHash</a>.<a class="code" href="classripple_1_1base__uint.html#ad2bffc75e554b89befbb9388e07392c0">isNonZero</a>() &amp;&amp; <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a> &amp;&amp;</div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a> &amp;&amp; (<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#aadfc3fc0c7935a8705f3e9ab0c49b9d5">accountHash</a> == <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>-&gt;getHash().as_uint256()) &amp;&amp;</div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; (<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a1ddad764a35cb7eb22d0b4b62df047d5">txHash</a> == <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>-&gt;getHash().as_uint256()))</div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; {</div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; </div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> j = <a class="code" href="namespaceripple.html#ad30131b5a5b7cf60d9b392ab868b8c0e">getJson</a>({*<span class="keyword">this</span>, {}});</div>
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; </div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; JLOG(ledgerJ.<a class="code" href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">fatal</a>()) &lt;&lt; <span class="stringliteral">&quot;ledger is not sensible&quot;</span> &lt;&lt; j;</div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; </div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; </div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;}</div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; j[jss::accountTreeHash] = <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#aadfc3fc0c7935a8705f3e9ab0c49b9d5">accountHash</a>);</div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; j[jss::transTreeHash] = <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a1ddad764a35cb7eb22d0b4b62df047d5">txHash</a>);</div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; </div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; JLOG(ledgerJ.<a class="code" href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">fatal</a>()) &lt;&lt; <span class="stringliteral">&quot;ledger is not sensible&quot;</span> &lt;&lt; j;</div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; </div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; </div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160;<span class="comment">// update the skip list with the information from our previous ledger</span></div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;<span class="comment">// VFALCO TODO Document this skip list concept</span></div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00835"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#ae29576f2d8dc2685c53f5dc18c7925f8"> 835</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#ae29576f2d8dc2685c53f5dc18c7925f8">Ledger::updateSkipList</a>()</div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;{</div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a> == 0) <span class="comment">// genesis ledger has no previous ledger</span></div>
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; </div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> prevIndex = <a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a> - 1;</div>
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; </div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="comment">// update record of every 256th ledger</span></div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span> ((prevIndex &amp; 0xff) == 0)</div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; {</div>
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> k = <a class="code" href="namespaceripple_1_1keylet.html#acda2d89a44551845c5be38291e5c9e8b">keylet::skip</a>(prevIndex);</div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keyword">auto</span> sle = <a class="code" href="classripple_1_1Ledger.html#a66371f260017cdea7bef8f694a631139">peek</a>(k);</div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a> hashes;</div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; </div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordtype">bool</span> created;</div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">if</span> (!sle)</div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; {</div>
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; sle = std::make_shared&lt;SLE&gt;(k);</div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; created = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; }</div>
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; {</div>
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; hashes = <span class="keyword">static_cast&lt;</span>decltype(hashes)<span class="keyword">&gt;</span>(sle-&gt;getFieldV256(<a class="code" href="namespaceripple.html#ab44eddba949c362c1be0f959ee9a2117">sfHashes</a>));</div>
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; created = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; }</div>
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; </div>
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; assert(hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() &lt;= 256);</div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a5c129196edfd78e992f81959f075e5ca">parentHash</a>);</div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; sle-&gt;setFieldV256(<a class="code" href="namespaceripple.html#ab44eddba949c362c1be0f959ee9a2117">sfHashes</a>, <a class="code" href="classripple_1_1STVector256.html">STVector256</a>(hashes));</div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; sle-&gt;setFieldU32(<a class="code" href="namespaceripple.html#a628c597be4a050e3957be56ec78df01a">sfLastLedgerSequence</a>, prevIndex);</div>
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">if</span> (created)</div>
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a7ed6dcfefe77ee7b9e90e052df79e52d">rawInsert</a>(sle);</div>
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a210375076ddca23b7374efea0b34de4a">rawReplace</a>(sle);</div>
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; }</div>
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; </div>
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="comment">// update record of past 256 ledger</span></div>
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> k = <a class="code" href="namespaceripple_1_1keylet.html#acda2d89a44551845c5be38291e5c9e8b">keylet::skip</a>();</div>
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keyword">auto</span> sle = <a class="code" href="classripple_1_1Ledger.html#a66371f260017cdea7bef8f694a631139">peek</a>(k);</div>
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a> hashes;</div>
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordtype">bool</span> created;</div>
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">if</span> (!sle)</div>
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; {</div>
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; sle = std::make_shared&lt;SLE&gt;(k);</div>
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; created = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; }</div>
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; {</div>
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; hashes = <span class="keyword">static_cast&lt;</span>decltype(hashes)<span class="keyword">&gt;</span>(sle-&gt;getFieldV256(<a class="code" href="namespaceripple.html#ab44eddba949c362c1be0f959ee9a2117">sfHashes</a>));</div>
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; created = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; }</div>
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; assert(hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() &lt;= 256);</div>
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">if</span> (hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() == 256)</div>
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/erase.html">erase</a>(hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">begin</a>());</div>
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a5c129196edfd78e992f81959f075e5ca">parentHash</a>);</div>
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; sle-&gt;setFieldV256(<a class="code" href="namespaceripple.html#ab44eddba949c362c1be0f959ee9a2117">sfHashes</a>, <a class="code" href="classripple_1_1STVector256.html">STVector256</a>(hashes));</div>
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; sle-&gt;setFieldU32(<a class="code" href="namespaceripple.html#a628c597be4a050e3957be56ec78df01a">sfLastLedgerSequence</a>, prevIndex);</div>
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">if</span> (created)</div>
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a7ed6dcfefe77ee7b9e90e052df79e52d">rawInsert</a>(sle);</div>
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a210375076ddca23b7374efea0b34de4a">rawReplace</a>(sle);</div>
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;}</div>
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; </div>
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;<span class="keywordtype">bool</span></div>
<div class="line"><a name="l00899"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#a362b0cb4e326fbf23a38d588c51981ff"> 899</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#a362b0cb4e326fbf23a38d588c51981ff">Ledger::isFlagLedger</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a> % <a class="code" href="namespaceripple.html#a9a1e35684311191adb2870e2d88030fc">FLAG_LEDGER_INTERVAL</a> == 0;</div>
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;}</div>
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;<span class="keywordtype">bool</span></div>
<div class="line"><a name="l00904"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#a54305a9aa3553299b6ed1003cf5ec8d7"> 904</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#a54305a9aa3553299b6ed1003cf5ec8d7">Ledger::isVotingLedger</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a> + 1) % <a class="code" href="namespaceripple.html#a9a1e35684311191adb2870e2d88030fc">FLAG_LEDGER_INTERVAL</a> == 0;</div>
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;}</div>
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; </div>
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160;<span class="keywordtype">bool</span></div>
<div class="line"><a name="l00910"></a><span class="lineno"><a class="line" href="namespaceripple.html#a81aef0121745f69cf76b866c91c2639c"> 910</a></span>&#160;<a class="code" href="namespaceripple.html#a81aef0121745f69cf76b866c91c2639c">isFlagLedger</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">LedgerIndex</a> seq)</div>
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160;{</div>
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">return</span> seq % <a class="code" href="namespaceripple.html#a9a1e35684311191adb2870e2d88030fc">FLAG_LEDGER_INTERVAL</a> == 0;</div>
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;}</div>
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; </div>
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;<span class="keyword">static</span> <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00916"></a><span class="lineno"><a class="line" href="namespaceripple.html#a4574aa8b71b4bb8afc56cf6daff9ca86"> 916</a></span>&#160;<a class="code" href="namespaceripple.html#a4574aa8b71b4bb8afc56cf6daff9ca86">saveValidatedLedger</a>(</div>
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app,</div>
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger const&gt;</a> <span class="keyword">const</span>&amp; ledger,</div>
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="keywordtype">bool</span> current)</div>
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160;{</div>
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keyword">auto</span> j = 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="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keyword">auto</span> seq = ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a>;</div>
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">if</span> (!app.<a class="code" href="classripple_1_1Application.html#abddbb82136e88fc73b03054df91e8ba6">pendingSaves</a>().<a class="code" href="classripple_1_1PendingSaves.html#a9c7ac1e9824096756225e77ed14244c1">startWork</a>(seq))</div>
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; {</div>
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="comment">// The save was completed synchronously</span></div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; JLOG(j.debug()) &lt;&lt; <span class="stringliteral">&quot;Save aborted&quot;</span>;</div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; }</div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; </div>
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keyword">auto</span> res = <span class="keyword">dynamic_cast&lt;</span><a class="code" href="classripple_1_1RelationalDBInterfaceSqlite.html">RelationalDBInterfaceSqlite</a>*<span class="keyword">&gt;</span>(</div>
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; &amp;app.<a class="code" href="classripple_1_1Application.html#abd5ac50ab472e7b95341b391cc941e48">getRelationalDBInterface</a>())</div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; -&gt;<a class="code" href="namespaceripple.html#a4574aa8b71b4bb8afc56cf6daff9ca86">saveValidatedLedger</a>(ledger, <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>);</div>
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; </div>
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="comment">// Clients can now trust the database for</span></div>
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="comment">// information about this ledger sequence.</span></div>
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; app.<a class="code" href="classripple_1_1Application.html#abddbb82136e88fc73b03054df91e8ba6">pendingSaves</a>().<a class="code" href="classripple_1_1PendingSaves.html#a50e49f47a9b7bbc2e7875918708b0624">finishWork</a>(seq);</div>
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keywordflow">return</span> res;</div>
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;}</div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; </div>
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;<span class="keywordtype">bool</span></div>
<div class="line"><a name="l00944"></a><span class="lineno"><a class="line" href="namespaceripple.html#afd9c0655540fb85bcc173ec81c7c7290"> 944</a></span>&#160;<a class="code" href="namespaceripple.html#afd9c0655540fb85bcc173ec81c7c7290">pendSaveValidated</a>(</div>
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app,</div>
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger const&gt;</a> <span class="keyword">const</span>&amp; ledger,</div>
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordtype">bool</span> isSynchronous,</div>
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">isCurrent</a>)</div>
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;{</div>
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="keywordflow">if</span> (!app.<a class="code" href="classripple_1_1Application.html#ab7873738f31780e68f0d12d87fc35356">getHashRouter</a>().<a class="code" href="classripple_1_1HashRouter.html#ac43309b8c10713823bdc233f39931472">setFlags</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>, SF_SAVED))</div>
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; {</div>
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="comment">// We have tried to save this ledger recently</span></div>
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keyword">auto</span> stream = 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="l00954"></a><span class="lineno"> 954</span>&#160; JLOG(stream) &lt;&lt; <span class="stringliteral">&quot;Double pend save for &quot;</span> &lt;&lt; ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a>;</div>
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; </div>
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keywordflow">if</span> (!isSynchronous || !app.<a class="code" href="classripple_1_1Application.html#abddbb82136e88fc73b03054df91e8ba6">pendingSaves</a>().<a class="code" href="classripple_1_1PendingSaves.html#aeb28ec1977b7ac30071426b9170c7345">pending</a>(ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a>))</div>
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; {</div>
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="comment">// Either we don&#39;t need it to be finished</span></div>
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="comment">// or it is finished</span></div>
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; }</div>
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; }</div>
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; </div>
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; assert(ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a25c5bcfcef6f0b9f0de97582ee37797a">isImmutable</a>());</div>
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; </div>
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">if</span> (!app.<a class="code" href="classripple_1_1Application.html#abddbb82136e88fc73b03054df91e8ba6">pendingSaves</a>().<a class="code" href="classripple_1_1PendingSaves.html#ab5e9e105f7d12575bc2025468b4cc1f8">shouldWork</a>(ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a>, isSynchronous))</div>
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; {</div>
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keyword">auto</span> stream = 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="l00969"></a><span class="lineno"> 969</span>&#160; JLOG(stream) &lt;&lt; <span class="stringliteral">&quot;Pend save with seq in pending saves &quot;</span></div>
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; &lt;&lt; ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a>;</div>
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; </div>
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; }</div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;}</div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; </div>
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160;<span class="comment">// update the skip list with the information from our previous ledger</span></div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;<span class="comment">// VFALCO TODO Document this skip list concept</span></div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00838"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#ae29576f2d8dc2685c53f5dc18c7925f8"> 838</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#ae29576f2d8dc2685c53f5dc18c7925f8">Ledger::updateSkipList</a>()</div>
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;{</div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a> == 0) <span class="comment">// genesis ledger has no previous ledger</span></div>
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; </div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> prevIndex = <a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a> - 1;</div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; </div>
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="comment">// update record of every 256th ledger</span></div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">if</span> ((prevIndex &amp; 0xff) == 0)</div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; {</div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> k = <a class="code" href="namespaceripple_1_1keylet.html#acda2d89a44551845c5be38291e5c9e8b">keylet::skip</a>(prevIndex);</div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keyword">auto</span> sle = <a class="code" href="classripple_1_1Ledger.html#a66371f260017cdea7bef8f694a631139">peek</a>(k);</div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a> hashes;</div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; </div>
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordtype">bool</span> created;</div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <span class="keywordflow">if</span> (!sle)</div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; {</div>
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; sle = std::make_shared&lt;SLE&gt;(k);</div>
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; created = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; }</div>
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; {</div>
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; hashes = <span class="keyword">static_cast&lt;</span>decltype(hashes)<span class="keyword">&gt;</span>(sle-&gt;getFieldV256(<a class="code" href="namespaceripple.html#ab44eddba949c362c1be0f959ee9a2117">sfHashes</a>));</div>
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; created = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; </div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; assert(hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() &lt;= 256);</div>
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a5c129196edfd78e992f81959f075e5ca">parentHash</a>);</div>
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; sle-&gt;setFieldV256(<a class="code" href="namespaceripple.html#ab44eddba949c362c1be0f959ee9a2117">sfHashes</a>, <a class="code" href="classripple_1_1STVector256.html">STVector256</a>(hashes));</div>
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; sle-&gt;setFieldU32(<a class="code" href="namespaceripple.html#a628c597be4a050e3957be56ec78df01a">sfLastLedgerSequence</a>, prevIndex);</div>
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordflow">if</span> (created)</div>
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a7ed6dcfefe77ee7b9e90e052df79e52d">rawInsert</a>(sle);</div>
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a210375076ddca23b7374efea0b34de4a">rawReplace</a>(sle);</div>
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; }</div>
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; </div>
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="comment">// update record of past 256 ledger</span></div>
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> k = <a class="code" href="namespaceripple_1_1keylet.html#acda2d89a44551845c5be38291e5c9e8b">keylet::skip</a>();</div>
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keyword">auto</span> sle = <a class="code" href="classripple_1_1Ledger.html#a66371f260017cdea7bef8f694a631139">peek</a>(k);</div>
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a> hashes;</div>
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="keywordtype">bool</span> created;</div>
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">if</span> (!sle)</div>
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; {</div>
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; sle = std::make_shared&lt;SLE&gt;(k);</div>
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; created = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; }</div>
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; {</div>
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; hashes = <span class="keyword">static_cast&lt;</span>decltype(hashes)<span class="keyword">&gt;</span>(sle-&gt;getFieldV256(<a class="code" href="namespaceripple.html#ab44eddba949c362c1be0f959ee9a2117">sfHashes</a>));</div>
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; created = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; }</div>
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; assert(hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() &lt;= 256);</div>
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">if</span> (hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() == 256)</div>
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/erase.html">erase</a>(hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">begin</a>());</div>
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a5c129196edfd78e992f81959f075e5ca">parentHash</a>);</div>
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; sle-&gt;setFieldV256(<a class="code" href="namespaceripple.html#ab44eddba949c362c1be0f959ee9a2117">sfHashes</a>, <a class="code" href="classripple_1_1STVector256.html">STVector256</a>(hashes));</div>
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; sle-&gt;setFieldU32(<a class="code" href="namespaceripple.html#a628c597be4a050e3957be56ec78df01a">sfLastLedgerSequence</a>, prevIndex);</div>
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">if</span> (created)</div>
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a7ed6dcfefe77ee7b9e90e052df79e52d">rawInsert</a>(sle);</div>
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a210375076ddca23b7374efea0b34de4a">rawReplace</a>(sle);</div>
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;}</div>
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; </div>
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;<span class="keywordtype">bool</span></div>
<div class="line"><a name="l00902"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#a362b0cb4e326fbf23a38d588c51981ff"> 902</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#a362b0cb4e326fbf23a38d588c51981ff">Ledger::isFlagLedger</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a> % <a class="code" href="namespaceripple.html#a9a1e35684311191adb2870e2d88030fc">FLAG_LEDGER_INTERVAL</a> == 0;</div>
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;}</div>
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;<span class="keywordtype">bool</span></div>
<div class="line"><a name="l00907"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#a54305a9aa3553299b6ed1003cf5ec8d7"> 907</a></span>&#160;<a class="code" href="classripple_1_1Ledger.html#a54305a9aa3553299b6ed1003cf5ec8d7">Ledger::isVotingLedger</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classripple_1_1Ledger.html#aeb716bc6cc0abdf5389e022e2504ba61">info_</a>.<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a> + 1) % <a class="code" href="namespaceripple.html#a9a1e35684311191adb2870e2d88030fc">FLAG_LEDGER_INTERVAL</a> == 0;</div>
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;}</div>
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; </div>
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160;<span class="keywordtype">bool</span></div>
<div class="line"><a name="l00913"></a><span class="lineno"><a class="line" href="namespaceripple.html#a81aef0121745f69cf76b866c91c2639c"> 913</a></span>&#160;<a class="code" href="namespaceripple.html#a81aef0121745f69cf76b866c91c2639c">isFlagLedger</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">LedgerIndex</a> seq)</div>
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160;{</div>
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">return</span> seq % <a class="code" href="namespaceripple.html#a9a1e35684311191adb2870e2d88030fc">FLAG_LEDGER_INTERVAL</a> == 0;</div>
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;}</div>
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; </div>
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160;<span class="keyword">static</span> <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00919"></a><span class="lineno"><a class="line" href="namespaceripple.html#a4574aa8b71b4bb8afc56cf6daff9ca86"> 919</a></span>&#160;<a class="code" href="namespaceripple.html#a4574aa8b71b4bb8afc56cf6daff9ca86">saveValidatedLedger</a>(</div>
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app,</div>
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger const&gt;</a> <span class="keyword">const</span>&amp; ledger,</div>
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordtype">bool</span> current)</div>
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;{</div>
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keyword">auto</span> j = 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="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keyword">auto</span> seq = ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a>;</div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">if</span> (!app.<a class="code" href="classripple_1_1Application.html#abddbb82136e88fc73b03054df91e8ba6">pendingSaves</a>().<a class="code" href="classripple_1_1PendingSaves.html#a9c7ac1e9824096756225e77ed14244c1">startWork</a>(seq))</div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; {</div>
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="comment">// The save was completed synchronously</span></div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; JLOG(j.debug()) &lt;&lt; <span class="stringliteral">&quot;Save aborted&quot;</span>;</div>
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; }</div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; </div>
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keyword">auto</span> res = <span class="keyword">dynamic_cast&lt;</span><a class="code" href="classripple_1_1RelationalDBInterfaceSqlite.html">RelationalDBInterfaceSqlite</a>*<span class="keyword">&gt;</span>(</div>
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; &amp;app.<a class="code" href="classripple_1_1Application.html#abd5ac50ab472e7b95341b391cc941e48">getRelationalDBInterface</a>())</div>
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; -&gt;<a class="code" href="namespaceripple.html#a4574aa8b71b4bb8afc56cf6daff9ca86">saveValidatedLedger</a>(ledger, <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>);</div>
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; </div>
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="comment">// Clients can now trust the database for</span></div>
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="comment">// information about this ledger sequence.</span></div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; app.<a class="code" href="classripple_1_1Application.html#abddbb82136e88fc73b03054df91e8ba6">pendingSaves</a>().<a class="code" href="classripple_1_1PendingSaves.html#a50e49f47a9b7bbc2e7875918708b0624">finishWork</a>(seq);</div>
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keywordflow">return</span> res;</div>
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160;}</div>
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; </div>
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;<span class="keywordtype">bool</span></div>
<div class="line"><a name="l00947"></a><span class="lineno"><a class="line" href="namespaceripple.html#afd9c0655540fb85bcc173ec81c7c7290"> 947</a></span>&#160;<a class="code" href="namespaceripple.html#afd9c0655540fb85bcc173ec81c7c7290">pendSaveValidated</a>(</div>
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app,</div>
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger const&gt;</a> <span class="keyword">const</span>&amp; ledger,</div>
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="keywordtype">bool</span> isSynchronous,</div>
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">isCurrent</a>)</div>
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;{</div>
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">if</span> (!app.<a class="code" href="classripple_1_1Application.html#ab7873738f31780e68f0d12d87fc35356">getHashRouter</a>().<a class="code" href="classripple_1_1HashRouter.html#ac43309b8c10713823bdc233f39931472">setFlags</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>, SF_SAVED))</div>
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; {</div>
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="comment">// We have tried to save this ledger recently</span></div>
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keyword">auto</span> stream = 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="l00957"></a><span class="lineno"> 957</span>&#160; JLOG(stream) &lt;&lt; <span class="stringliteral">&quot;Double pend save for &quot;</span> &lt;&lt; ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a>;</div>
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; </div>
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keywordflow">if</span> (!isSynchronous || !app.<a class="code" href="classripple_1_1Application.html#abddbb82136e88fc73b03054df91e8ba6">pendingSaves</a>().<a class="code" href="classripple_1_1PendingSaves.html#aeb28ec1977b7ac30071426b9170c7345">pending</a>(ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a>))</div>
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; {</div>
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="comment">// Either we don&#39;t need it to be finished</span></div>
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="comment">// or it is finished</span></div>
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; }</div>
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; }</div>
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; </div>
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; assert(ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a25c5bcfcef6f0b9f0de97582ee37797a">isImmutable</a>());</div>
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; </div>
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">if</span> (!app.<a class="code" href="classripple_1_1Application.html#abddbb82136e88fc73b03054df91e8ba6">pendingSaves</a>().<a class="code" href="classripple_1_1PendingSaves.html#ab5e9e105f7d12575bc2025468b4cc1f8">shouldWork</a>(ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a>, isSynchronous))</div>
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; {</div>
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keyword">auto</span> stream = 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="l00972"></a><span class="lineno"> 972</span>&#160; JLOG(stream) &lt;&lt; <span class="stringliteral">&quot;Pend save with seq in pending saves &quot;</span></div>
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; &lt;&lt; ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">info</a>().<a class="code" href="structripple_1_1LedgerInfo.html#a06608577034840a474361d55624ce9a0">seq</a>;</div>
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; </div>
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <a class="code" href="namespaceripple.html#ae0f54f8ce649d639bf3e2b295347e17a">JobType</a> <span class="keyword">const</span> jobType{<a class="code" href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">isCurrent</a> ? <a class="code" href="namespaceripple.html#ae0f54f8ce649d639bf3e2b295347e17aa75c73aafec01f5472607a930d5d1f3b9">jtPUBLEDGER</a> : <a class="code" href="namespaceripple.html#ae0f54f8ce649d639bf3e2b295347e17aaa4e32e16425bc63db04ed98f3b3f4259">jtPUBOLDLEDGER</a>};</div>
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span>* <span class="keyword">const</span> jobName{</div>
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <a class="code" href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">isCurrent</a> ? <span class="stringliteral">&quot;Ledger::pendSave&quot;</span> : <span class="stringliteral">&quot;Ledger::pendOldSave&quot;</span>};</div>
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; </div>
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="comment">// See if we can use the JobQueue.</span></div>
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">if</span> (!isSynchronous &amp;&amp;</div>
<div class="line"><a name="l00981"></a><span class="lineno"> 981</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="l00982"></a><span class="lineno"> 982</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="l00983"></a><span class="lineno"> 983</span>&#160; saveValidatedLedger(app, ledger, isCurrent);</div>
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; }))</div>
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; {</div>
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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="comment">// The JobQueue won&#39;t do the Job. Do the save synchronously.</span></div>
<div class="line"><a name="l00990"></a><span class="lineno"> 990</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="l00991"></a><span class="lineno"> 991</span>&#160;}</div>
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; </div>
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00994"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#a0e6f8ad49de88ce1eb3ffa77ca346c21"> 994</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="l00995"></a><span class="lineno"> 995</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>-&gt;unshare();</div>
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>-&gt;unshare();</div>
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160;}</div>
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; </div>
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l01001"></a><span class="lineno"><a class="line" href="classripple_1_1Ledger.html#a156082bb161144196934ce455ee404b2"> 1001</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="l01002"></a><span class="lineno"> 1002</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>-&gt;invariants();</div>
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>-&gt;invariants();</div>
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;}</div>
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;<span class="comment">//------------------------------------------------------------------------------</span></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;<span class="comment"> * Make ledger using info loaded from database.</span></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"> * @param LedgerInfo: Ledger information.</span></div>
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;<span class="comment"> * @param app: Link to the Application.</span></div>
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;<span class="comment"> * @param acquire: Acquire the ledger if not found locally.</span></div>
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;<span class="comment"> * @return Shared pointer to the ledger.</span></div>
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</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="l01017"></a><span class="lineno"><a class="line" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061"> 1017</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="l01018"></a><span class="lineno"> 1018</span>&#160;{</div>
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keywordtype">bool</span> loaded;</div>
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keyword">auto</span> ledger = std::make_shared&lt;Ledger&gt;(</div>
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; info,</div>
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; loaded,</div>
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <a class="code" href="namespaceripple.html#a63a883cebf81b764433e67d90d4470d9a86a4fa105ff51b8c3be84734797d8144">acquire</a>,</div>
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(),</div>
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a26ccdf06f25ceadec7894dd5f8da7eab">getNodeFamily</a>(),</div>
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</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="l01027"></a><span class="lineno"> 1027</span>&#160; </div>
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <span class="keywordflow">if</span> (!loaded)</div>
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; ledger.reset();</div>
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; }</div>
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; </div>
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <a class="code" href="namespaceripple.html#ae0f54f8ce649d639bf3e2b295347e17a">JobType</a> <span class="keyword">const</span> jobType{<a class="code" href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">isCurrent</a> ? <a class="code" href="namespaceripple.html#ae0f54f8ce649d639bf3e2b295347e17aa75c73aafec01f5472607a930d5d1f3b9">jtPUBLEDGER</a> : <a class="code" href="namespaceripple.html#ae0f54f8ce649d639bf3e2b295347e17aaa4e32e16425bc63db04ed98f3b3f4259">jtPUBOLDLEDGER</a>};</div>
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span>* <span class="keyword">const</span> jobName{</div>
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <a class="code" href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">isCurrent</a> ? <span class="stringliteral">&quot;Ledger::pendSave&quot;</span> : <span class="stringliteral">&quot;Ledger::pendOldSave&quot;</span>};</div>
<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">return</span> ledger;</div>
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</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="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l01035"></a><span class="lineno"><a class="line" href="namespaceripple.html#a16f9dbea9c8dfaaaca124cf61c6b6e6d"> 1035</a></span>&#160;<a class="code" href="namespaceripple.html#a16f9dbea9c8dfaaaca124cf61c6b6e6d">finishLoadByIndexOrHash</a>(</div>
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</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="l01037"></a><span class="lineno"> 1037</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="l01038"></a><span class="lineno"> 1038</span>&#160; <a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> j)</div>
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;{</div>
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <span class="keywordflow">if</span> (!ledger)</div>
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <span class="keywordflow">return</span>;</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; ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a87ea8cee44207987a9d9ac826aacc831">setImmutable</a>(config);</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; 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="l01046"></a><span class="lineno"> 1046</span>&#160; </div>
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; ledger-&gt;<a class="code" href="classripple_1_1Ledger.html#a8a75fcab11d8fe2e7bd5cd6643a052e1">setFull</a>();</div>
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</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;<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="l01051"></a><span class="lineno"><a class="line" href="namespaceripple.html#a04cf5c0dd5329bc0e0203fb86cf91ed3"> 1051</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="l01052"></a><span class="lineno"> 1052</span>&#160;{</div>
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</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="l01054"></a><span class="lineno"> 1054</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="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">if</span> (!info)</div>
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</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="l01057"></a><span class="lineno"> 1057</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="l01058"></a><span class="lineno"> 1058</span>&#160;}</div>
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; </div>
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</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="l01061"></a><span class="lineno"><a class="line" href="namespaceripple.html#a22adb38923282bf7dbb38655afdb381d"> 1061</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="l01062"></a><span class="lineno"> 1062</span>&#160;{</div>
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</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="l01064"></a><span class="lineno"> 1064</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="l01065"></a><span class="lineno"> 1065</span>&#160; {</div>
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</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="l01067"></a><span class="lineno"> 1067</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="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keywordflow">return</span> ledger;</div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; }</div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="keywordflow">return</span> {};</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; </div>
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</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="l01074"></a><span class="lineno"><a class="line" href="namespaceripple.html#a729619e7a3a0d92226e7d52347ff2a5e"> 1074</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="l01075"></a><span class="lineno"> 1075</span>&#160;{</div>
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</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="l01077"></a><span class="lineno"> 1077</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="l01078"></a><span class="lineno"> 1078</span>&#160; {</div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</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="l01080"></a><span class="lineno"> 1080</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="l01081"></a><span class="lineno"> 1081</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="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="keywordflow">return</span> ledger;</div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; }</div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordflow">return</span> {};</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; </div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</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="l01088"></a><span class="lineno"> 1088</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="l01089"></a><span class="lineno"><a class="line" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5"> 1089</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="l01090"></a><span class="lineno"> 1090</span>&#160;{</div>
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</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="l01092"></a><span class="lineno"> 1092</span>&#160; {</div>
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions: not running in reporting mode&quot;</span>);</div>
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; }</div>
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; </div>
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</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="l01099"></a><span class="lineno"> 1099</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="l01100"></a><span class="lineno"> 1100</span>&#160; txns;</div>
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</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="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keyword">auto</span> nodeDb =</div>
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</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="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keywordflow">if</span> (!nodeDb)</div>
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; {</div>
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="stringliteral">&quot;Called flatFetchTransactions but database is not DatabaseNodeImp&quot;</span>);</div>
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; }</div>
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keyword">auto</span> objs = nodeDb-&gt;fetchBatch(nodestoreHashes);</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> 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="l01113"></a><span class="lineno"> 1113</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="l01114"></a><span class="lineno"> 1114</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="l01115"></a><span class="lineno"> 1115</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="l01116"></a><span class="lineno"> 1116</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="l01117"></a><span class="lineno"> 1117</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="l01118"></a><span class="lineno"> 1118</span>&#160; {</div>
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <a class="code" href="classripple_1_1base__uint.html">uint256</a>&amp; nodestoreHash = nodestoreHashes[i];</div>
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="keyword">auto</span>&amp; obj = objs[i];</div>
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <span class="keywordflow">if</span> (obj)</div>
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; {</div>
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</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="l01124"></a><span class="lineno"> 1124</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="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keywordflow">if</span> (!node)</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; {</div>
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions : Error making SHAMap node&quot;</span>);</div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; }</div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</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="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">if</span> (!item)</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; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions : Error reading SHAMap node&quot;</span>);</div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; }</div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keyword">auto</span> txnPlusMeta = <a class="code" href="namespaceripple.html#aa1353a397900c2af70f9acba924b33cb">deserializeTxPlusMeta</a>(*item);</div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">if</span> (!txnPlusMeta.first || !txnPlusMeta.second)</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; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions : Error deserializing SHAMap node&quot;</span>);</div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; }</div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; txns.push_back(std::move(txnPlusMeta));</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; <span class="keywordflow">else</span></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; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <span class="stringliteral">&quot;flatFetchTransactions : Containing SHAMap node not found&quot;</span>);</div>
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; }</div>
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; }</div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="keywordflow">return</span> txns;</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;<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt;</div>
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</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="l01158"></a><span class="lineno"><a class="line" href="namespaceripple.html#a641da3f4ad91dd7082d6a58040932acf"> 1158</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="l01159"></a><span class="lineno"> 1159</span>&#160;{</div>
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</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="l01161"></a><span class="lineno"> 1161</span>&#160; {</div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keywordflow">return</span> {};</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; </div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</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="l01167"></a><span class="lineno"> 1167</span>&#160; &amp;app.<a class="code" href="classripple_1_1Application.html#abd5ac50ab472e7b95341b391cc941e48">getRelationalDBInterface</a>())</div>
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</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="l01169"></a><span class="lineno"> 1169</span>&#160; </div>
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5">flatFetchTransactions</a>(app, nodestoreHashes);</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="comment">// namespace ripple</span></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><!-- 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="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>
@@ -1248,7 +1251,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="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#l00910">Ledger.cpp:910</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>
<div class="ttc" id="aclassripple_1_1Ledger_html_a6bb1b6a13fe4c60edbfd502c39fa687c"><div class="ttname"><a href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">ripple::Ledger::txMap_</a></div><div class="ttdeci">std::shared_ptr&lt; SHAMap &gt; txMap_</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8h_source.html#l00402">Ledger.h:402</a></div></div>
@@ -1260,20 +1263,20 @@ $(function() {
<div class="ttc" id="aclassripple_1_1Ledger_1_1sles__iter__impl_html"><div class="ttname"><a href="classripple_1_1Ledger_1_1sles__iter__impl.html">ripple::Ledger::sles_iter_impl</a></div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00083">Ledger.cpp:83</a></div></div>
<div class="ttc" id="aclassripple_1_1STLedgerEntry_html"><div class="ttname"><a href="classripple_1_1STLedgerEntry.html">ripple::STLedgerEntry</a></div><div class="ttdef"><b>Definition:</b> <a href="STLedgerEntry_8h_source.html#l00030">STLedgerEntry.h:30</a></div></div>
<div class="ttc" id="anamespaceripple_html_a1565922b53abf78b7587a6e60d8d24ba"><div class="ttname"><a href="namespaceripple.html#a1565922b53abf78b7587a6e60d8d24ba">ripple::sfMetadata</a></div><div class="ttdeci">const SField sfMetadata</div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a54305a9aa3553299b6ed1003cf5ec8d7"><div class="ttname"><a href="classripple_1_1Ledger.html#a54305a9aa3553299b6ed1003cf5ec8d7">ripple::Ledger::isVotingLedger</a></div><div class="ttdeci">bool isVotingLedger() const</div><div class="ttdoc">Returns true if the ledger directly precedes a flag ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00904">Ledger.cpp:904</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a54305a9aa3553299b6ed1003cf5ec8d7"><div class="ttname"><a href="classripple_1_1Ledger.html#a54305a9aa3553299b6ed1003cf5ec8d7">ripple::Ledger::isVotingLedger</a></div><div class="ttdeci">bool isVotingLedger() const</div><div class="ttdoc">Returns true if the ledger directly precedes a flag ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00907">Ledger.cpp:907</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_ae0a63c9a1943ea6a18726df087a37bdc"><div class="ttname"><a href="classripple_1_1Ledger.html#ae0a63c9a1943ea6a18726df087a37bdc">ripple::Ledger::succ</a></div><div class="ttdeci">std::optional&lt; uint256 &gt; succ(uint256 const &amp;key, std::optional&lt; uint256 &gt; const &amp;last=std::nullopt) const override</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00421">Ledger.cpp:421</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a6cf0862134638e77b99e53c25c41f3a9"><div class="ttname"><a href="classripple_1_1Ledger.html#a6cf0862134638e77b99e53c25c41f3a9">ripple::Ledger::txRead</a></div><div class="ttdeci">tx_type txRead(key_type const &amp;key) const override</div><div class="ttdoc">Read a transaction from the tx map.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00488">Ledger.cpp:488</a></div></div>
<div class="ttc" id="ashared_ptr_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="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#l01061">Ledger.cpp:1061</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_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#l00994">Ledger.cpp:994</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_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>
@@ -1286,6 +1289,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1XRPAmount_html_a8a65b5528d6021159c5b8772aa86cfc1"><div class="ttname"><a href="classripple_1_1XRPAmount.html#a8a65b5528d6021159c5b8772aa86cfc1">ripple::XRPAmount::drops</a></div><div class="ttdeci">constexpr value_type drops() const</div><div class="ttdoc">Returns the number of drops.</div><div class="ttdef"><b>Definition:</b> <a href="XRPAmount_8h_source.html#l00172">XRPAmount.h:172</a></div></div>
<div class="ttc" id="anamespaceripple_html_a586714bf3cbbbb406d6f169742bce0d5"><div class="ttname"><a href="namespaceripple.html#a586714bf3cbbbb406d6f169742bce0d5">ripple::sfSequence</a></div><div class="ttdeci">const SF_UINT32 sfSequence</div></div>
<div class="ttc" id="anamespaceripple_html_a57d7e7b27df7e719fdf5569f96be60a3a65cfe147458030070724c8b3795e508f"><div class="ttname"><a href="namespaceripple.html#a57d7e7b27df7e719fdf5569f96be60a3a65cfe147458030070724c8b3795e508f">ripple::hotACCOUNT_NODE</a></div><div class="ttdeci">@ hotACCOUNT_NODE</div><div class="ttdef"><b>Definition:</b> <a href="NodeObject_8h_source.html#l00035">NodeObject.h:35</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a84b32158843ca8c316711f0dfb85138d"><div class="ttname"><a href="classripple_1_1Ledger.html#a84b32158843ca8c316711f0dfb85138d">ripple::Ledger::walkLedger</a></div><div class="ttdeci">bool walkLedger(beast::Journal j, bool parallel=false) const</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00763">Ledger.cpp:763</a></div></div>
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/vector.html">vector</a></div></div>
<div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/size.html">std::vector::size</a></div><div class="ttdeci">T size(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1Application_html_abd5ac50ab472e7b95341b391cc941e48"><div class="ttname"><a href="classripple_1_1Application.html#abd5ac50ab472e7b95341b391cc941e48">ripple::Application::getRelationalDBInterface</a></div><div class="ttdeci">virtual RelationalDBInterface &amp; getRelationalDBInterface()=0</div></div>
@@ -1293,7 +1297,7 @@ $(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#l01051">Ledger.cpp:1051</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_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="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>
@@ -1302,11 +1306,10 @@ $(function() {
<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_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#l01001">Ledger.cpp:1001</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="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_1Ledger_html_ac72cd0b23f72fff0b3cd479007b94d10"><div class="ttname"><a href="classripple_1_1Ledger.html#ac72cd0b23f72fff0b3cd479007b94d10">ripple::Ledger::walkLedger</a></div><div class="ttdeci">bool walkLedger(beast::Journal j) const</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00763">Ledger.cpp:763</a></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>
@@ -1322,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#l01035">Ledger.cpp:1035</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_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>
@@ -1343,10 +1346,10 @@ $(function() {
<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>
<div class="ttc" id="aclassripple_1_1Ledger_html_a31a21cc451eaa0a5af304e2625dc75f5"><div class="ttname"><a href="classripple_1_1Ledger.html#a31a21cc451eaa0a5af304e2625dc75f5">ripple::Ledger::info</a></div><div class="ttdeci">LedgerInfo const &amp; info() const override</div><div class="ttdoc">Returns information about the ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8h_source.html#l00148">Ledger.h:148</a></div></div>
<div class="ttc" id="atime_since_epoch_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/chrono/time_point/time_since_epoch.html">std::chrono::time_point::time_since_epoch</a></div><div class="ttdeci">T time_since_epoch(T... args)</div></div>
<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#l00313">Config.h:313</a></div></div>
<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#l00916">Ledger.cpp:916</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#l01074">Ledger.cpp:1074</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="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>
@@ -1369,14 +1372,14 @@ $(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#l00593">SHAMap.h:593</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="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>
<div class="ttc" id="aclassripple_1_1Ledger_1_1sles__iter__impl_html_acd61792241618333e4c3ba6cd807002f"><div class="ttname"><a href="classripple_1_1Ledger_1_1sles__iter__impl.html#acd61792241618333e4c3ba6cd807002f">ripple::Ledger::sles_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#l00086">Ledger.cpp:86</a></div></div>
<div class="ttc" id="astructripple_1_1create__genesis__t_html"><div class="ttname"><a href="structripple_1_1create__genesis__t.html">ripple::create_genesis_t</a></div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8h_source.html#l00044">Ledger.h:44</a></div></div>
<div class="ttc" id="anamespaceripple_html_ae0356b1de00f841c554c830be509dd58a5065e45315e5eab27c63b2dabd8ad150"><div class="ttname"><a href="namespaceripple.html#ae0356b1de00f841c554c830be509dd58a5065e45315e5eab27c63b2dabd8ad150">ripple::SHAMapNodeType::tnTRANSACTION_MD</a></div><div class="ttdeci">@ tnTRANSACTION_MD</div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a362b0cb4e326fbf23a38d588c51981ff"><div class="ttname"><a href="classripple_1_1Ledger.html#a362b0cb4e326fbf23a38d588c51981ff">ripple::Ledger::isFlagLedger</a></div><div class="ttdeci">bool isFlagLedger() const</div><div class="ttdoc">Returns true if the ledger is a flag ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00899">Ledger.cpp:899</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a362b0cb4e326fbf23a38d588c51981ff"><div class="ttname"><a href="classripple_1_1Ledger.html#a362b0cb4e326fbf23a38d588c51981ff">ripple::Ledger::isFlagLedger</a></div><div class="ttdeci">bool isFlagLedger() const</div><div class="ttdoc">Returns true if the ledger is a flag ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00902">Ledger.cpp:902</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_1_1sles__iter__impl_html_acb3327c3b6206bac3d509d23ada2e831"><div class="ttname"><a href="classripple_1_1Ledger_1_1sles__iter__impl.html#acb3327c3b6206bac3d509d23ada2e831">ripple::Ledger::sles_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#l00106">Ledger.cpp:106</a></div></div>
<div class="ttc" id="astructripple_1_1LedgerInfo_html_a279f72e0664518d5fccd52ed7a92e0da"><div class="ttname"><a href="structripple_1_1LedgerInfo.html#a279f72e0664518d5fccd52ed7a92e0da">ripple::LedgerInfo::closeFlags</a></div><div class="ttdeci">int closeFlags</div><div class="ttdef"><b>Definition:</b> <a href="ReadView_8h_source.html#l00114">ReadView.h:114</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_1_1sles__iter__impl_html_acda0c84e430ff61b71edb7bd155c7fd7"><div class="ttname"><a href="classripple_1_1Ledger_1_1sles__iter__impl.html#acda0c84e430ff61b71edb7bd155c7fd7">ripple::Ledger::sles_iter_impl::operator=</a></div><div class="ttdeci">sles_iter_impl &amp; operator=(sles_iter_impl const &amp;)=delete</div></div>
@@ -1388,7 +1391,7 @@ $(function() {
<div class="ttc" id="aclassbeast_1_1Journal_html_a87d6bd59020d94110027dcab3d9e3357"><div class="ttname"><a href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">beast::Journal::info</a></div><div class="ttdeci">Stream info() const</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00321">Journal.h:321</a></div></div>
<div class="ttc" id="atime_point_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/chrono/time_point.html">std::chrono::time_point</a></div></div>
<div class="ttc" id="aerase_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/erase.html">std::vector::erase</a></div><div class="ttdeci">T erase(T... args)</div></div>
<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#l00811">Ledger.cpp:811</a></div></div>
<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>
@@ -1438,7 +1441,7 @@ $(function() {
<div class="ttc" id="acassert_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/cassert.html">cassert</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a6608f7b02e1d18d06e27f28c5ce296d9"><div class="ttname"><a href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">ripple::Ledger::stateMap_</a></div><div class="ttdeci">std::shared_ptr&lt; SHAMap &gt; stateMap_</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8h_source.html#l00403">Ledger.h:403</a></div></div>
<div class="ttc" id="anamespaceripple_html_a25781d261e5e805fdf2834ab4af7be30"><div class="ttname"><a href="namespaceripple.html#a25781d261e5e805fdf2834ab4af7be30">ripple::sfDisabledValidator</a></div><div class="ttdeci">const SField sfDisabledValidator</div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_ae29576f2d8dc2685c53f5dc18c7925f8"><div class="ttname"><a href="classripple_1_1Ledger.html#ae29576f2d8dc2685c53f5dc18c7925f8">ripple::Ledger::updateSkipList</a></div><div class="ttdeci">void updateSkipList()</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00835">Ledger.cpp:835</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_ae29576f2d8dc2685c53f5dc18c7925f8"><div class="ttname"><a href="classripple_1_1Ledger.html#ae29576f2d8dc2685c53f5dc18c7925f8">ripple::Ledger::updateSkipList</a></div><div class="ttdeci">void updateSkipList()</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00838">Ledger.cpp:838</a></div></div>
<div class="ttc" id="aclassripple_1_1SerialIter_html_aa97628bd129c57f172027982c0ac4f1f"><div class="ttname"><a href="classripple_1_1SerialIter.html#aa97628bd129c57f172027982c0ac4f1f">ripple::SerialIter::getVLDataLength</a></div><div class="ttdeci">int getVLDataLength()</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8cpp_source.html#l00470">Serializer.cpp:470</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html_a131fb72a0a470e6b493865f9a06762c4"><div class="ttname"><a href="classripple_1_1Ledger.html#a131fb72a0a470e6b493865f9a06762c4">ripple::Ledger::open</a></div><div class="ttdeci">bool open() const override</div><div class="ttdoc">Returns true if this reflects an open ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8h_source.html#l00142">Ledger.h:142</a></div></div>
<div class="ttc" id="anamespaceripple_html_ab8a9c54401e8209fca7396c6b9c610f4"><div class="ttname"><a href="namespaceripple.html#ab8a9c54401e8209fca7396c6b9c610f4">ripple::sfBalance</a></div><div class="ttdeci">const SF_AMOUNT sfBalance</div></div>
@@ -1468,11 +1471,11 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_a8d9f578e31d5fdf0e82150bc1a4ce374"><div class="ttname"><a href="namespaceripple.html#a8d9f578e31d5fdf0e82150bc1a4ce374">ripple::ledgerDefaultTimeResolution</a></div><div class="ttdeci">constexpr auto ledgerDefaultTimeResolution</div><div class="ttdoc">Initial resolution of ledger close time.</div><div class="ttdef"><b>Definition:</b> <a href="LedgerTiming_8h_source.html#l00044">LedgerTiming.h:44</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_a53590de263224dde45f4856da2852319"><div class="ttname"><a href="namespaceripple_1_1keylet.html#a53590de263224dde45f4856da2852319">ripple::keylet::negativeUNL</a></div><div class="ttdeci">Keylet const &amp; negativeUNL() noexcept</div><div class="ttdoc">The (fixed) index of the object containing the ledger negativeUNL.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00176">Indexes.cpp:176</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_1_1txs__iter__impl_html_a8525f8ae51dd1e6f0e5a225a3eb207d4"><div class="ttname"><a href="classripple_1_1Ledger_1_1txs__iter__impl.html#a8525f8ae51dd1e6f0e5a225a3eb207d4">ripple::Ledger::txs_iter_impl::dereference</a></div><div class="ttdeci">txs_type::value_type dereference() const override</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00169">Ledger.cpp:169</a></div></div>
<div class="ttc" id="anamespaceripple_html_afd9c0655540fb85bcc173ec81c7c7290"><div class="ttname"><a href="namespaceripple.html#afd9c0655540fb85bcc173ec81c7c7290">ripple::pendSaveValidated</a></div><div class="ttdeci">bool pendSaveValidated(Application &amp;app, std::shared_ptr&lt; Ledger const &gt; const &amp;ledger, bool isSynchronous, bool isCurrent)</div><div class="ttdoc">Save, or arrange to save, a fully-validated ledger Returns false on error.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00944">Ledger.cpp:944</a></div></div>
<div class="ttc" id="anamespaceripple_html_afd9c0655540fb85bcc173ec81c7c7290"><div class="ttname"><a href="namespaceripple.html#afd9c0655540fb85bcc173ec81c7c7290">ripple::pendSaveValidated</a></div><div class="ttdeci">bool pendSaveValidated(Application &amp;app, std::shared_ptr&lt; Ledger const &gt; const &amp;ledger, bool isSynchronous, bool isCurrent)</div><div class="ttdoc">Save, or arrange to save, a fully-validated ledger Returns false on error.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8cpp_source.html#l00947">Ledger.cpp:947</a></div></div>
<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#l01017">Ledger.cpp:1017</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="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_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>
@@ -1492,7 +1495,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#l01089">Ledger.cpp:1089</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="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>