mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-24 04:55:52 +00:00
deploy: d49b486224
This commit is contained in:
@@ -831,7 +831,7 @@ $(function() {
|
||||
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  </div>
|
||||
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="comment">//------------------------------------------------------------------------------</span></div>
|
||||
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> <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> <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> <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> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<SHAMapMissingNode></a> missingNodes1;</div>
|
||||
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<SHAMapMissingNode></a> missingNodes2;</div>
|
||||
@@ -844,400 +844,403 @@ $(function() {
|
||||
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  }</div>
|
||||
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  {</div>
|
||||
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>->walkMap(missingNodes1, 32);</div>
|
||||
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  }</div>
|
||||
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  </div>
|
||||
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <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>  {</div>
|
||||
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <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>  {</div>
|
||||
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  stream << missingNodes1.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() << <span class="stringliteral">" missing account node(s)"</span>;</div>
|
||||
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  stream << <span class="stringliteral">"First: "</span> << missingNodes1[0].what();</div>
|
||||
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  }</div>
|
||||
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  }</div>
|
||||
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  </div>
|
||||
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>->getHash().isZero() && <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>() &&</div>
|
||||
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  !<a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>->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>  {</div>
|
||||
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  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>  <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>  }</div>
|
||||
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  {</div>
|
||||
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>->walkMap(missingNodes2, 32);</div>
|
||||
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  }</div>
|
||||
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  </div>
|
||||
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <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>  {</div>
|
||||
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <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>  {</div>
|
||||
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  stream << missingNodes2.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() << <span class="stringliteral">" missing transaction node(s)"</span>;</div>
|
||||
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  stream << <span class="stringliteral">"First: "</span> << missingNodes2[0].what();</div>
|
||||
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  }</div>
|
||||
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  }</div>
|
||||
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="keywordflow">return</span> missingNodes1.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/empty.html">empty</a>() && 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> }</div>
|
||||
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  </div>
|
||||
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span> <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> <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> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <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>() && <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>() && <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a> &&</div>
|
||||
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a> && (<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>->getHash().as_uint256()) &&</div>
|
||||
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  (<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>->getHash().as_uint256()))</div>
|
||||
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  {</div>
|
||||
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  }</div>
|
||||
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  </div>
|
||||
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <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>  </div>
|
||||
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  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>  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>  <span class="keywordflow">if</span> (parallel)</div>
|
||||
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>->walkMapParallel(missingNodes1, 32);</div>
|
||||
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>->walkMap(missingNodes1, 32);</div>
|
||||
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  }</div>
|
||||
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  </div>
|
||||
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <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>  {</div>
|
||||
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <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>  {</div>
|
||||
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  stream << missingNodes1.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() << <span class="stringliteral">" missing account node(s)"</span>;</div>
|
||||
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  stream << <span class="stringliteral">"First: "</span> << missingNodes1[0].what();</div>
|
||||
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  }</div>
|
||||
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  }</div>
|
||||
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  </div>
|
||||
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>->getHash().isZero() && <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>() &&</div>
|
||||
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  !<a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>->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>  {</div>
|
||||
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  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>  <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>  }</div>
|
||||
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  {</div>
|
||||
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>->walkMap(missingNodes2, 32);</div>
|
||||
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  }</div>
|
||||
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  </div>
|
||||
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <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>  {</div>
|
||||
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <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>  {</div>
|
||||
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  stream << missingNodes2.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() << <span class="stringliteral">" missing transaction node(s)"</span>;</div>
|
||||
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  stream << <span class="stringliteral">"First: "</span> << missingNodes2[0].what();</div>
|
||||
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  }</div>
|
||||
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  }</div>
|
||||
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">return</span> missingNodes1.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/empty.html">empty</a>() && 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> }</div>
|
||||
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  </div>
|
||||
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span> <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> <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> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <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>() && <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>() && <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a> &&</div>
|
||||
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a> && (<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>->getHash().as_uint256()) &&</div>
|
||||
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  (<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>->getHash().as_uint256()))</div>
|
||||
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  {</div>
|
||||
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  }</div>
|
||||
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  </div>
|
||||
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <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>  </div>
|
||||
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  JLOG(ledgerJ.<a class="code" href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">fatal</a>()) << <span class="stringliteral">"ledger is not sensible"</span> << j;</div>
|
||||
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  </div>
|
||||
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  </div>
|
||||
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span> }</div>
|
||||
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  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>  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>  </div>
|
||||
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  JLOG(ledgerJ.<a class="code" href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">fatal</a>()) << <span class="stringliteral">"ledger is not sensible"</span> << j;</div>
|
||||
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  </div>
|
||||
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  </div>
|
||||
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span> <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> <span class="comment">// VFALCO TODO Document this skip list concept</span></div>
|
||||
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span> <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> <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> {</div>
|
||||
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <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>  <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  </div>
|
||||
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <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>  </div>
|
||||
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <span class="comment">// update record of every 256th ledger</span></div>
|
||||
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">if</span> ((prevIndex & 0xff) == 0)</div>
|
||||
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  {</div>
|
||||
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <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>  <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>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<uint256></a> hashes;</div>
|
||||
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  </div>
|
||||
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordtype">bool</span> created;</div>
|
||||
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordflow">if</span> (!sle)</div>
|
||||
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  {</div>
|
||||
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  sle = std::make_shared<SLE>(k);</div>
|
||||
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  created = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  }</div>
|
||||
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  {</div>
|
||||
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  hashes = <span class="keyword">static_cast<</span>decltype(hashes)<span class="keyword">></span>(sle->getFieldV256(<a class="code" href="namespaceripple.html#ab44eddba949c362c1be0f959ee9a2117">sfHashes</a>));</div>
|
||||
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  created = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  }</div>
|
||||
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  </div>
|
||||
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  assert(hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() <= 256);</div>
|
||||
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  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>  sle->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>  sle->setFieldU32(<a class="code" href="namespaceripple.html#a628c597be4a050e3957be56ec78df01a">sfLastLedgerSequence</a>, prevIndex);</div>
|
||||
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keywordflow">if</span> (created)</div>
|
||||
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <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>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <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>  }</div>
|
||||
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  </div>
|
||||
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="comment">// update record of past 256 ledger</span></div>
|
||||
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <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>  <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>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<uint256></a> hashes;</div>
|
||||
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <span class="keywordtype">bool</span> created;</div>
|
||||
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="keywordflow">if</span> (!sle)</div>
|
||||
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  {</div>
|
||||
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  sle = std::make_shared<SLE>(k);</div>
|
||||
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  created = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  }</div>
|
||||
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  {</div>
|
||||
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  hashes = <span class="keyword">static_cast<</span>decltype(hashes)<span class="keyword">></span>(sle->getFieldV256(<a class="code" href="namespaceripple.html#ab44eddba949c362c1be0f959ee9a2117">sfHashes</a>));</div>
|
||||
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  created = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  }</div>
|
||||
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  assert(hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() <= 256);</div>
|
||||
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <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>  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>  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>  sle->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>  sle->setFieldU32(<a class="code" href="namespaceripple.html#a628c597be4a050e3957be56ec78df01a">sfLastLedgerSequence</a>, prevIndex);</div>
|
||||
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keywordflow">if</span> (created)</div>
|
||||
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <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>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <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> }</div>
|
||||
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  </div>
|
||||
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <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> <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> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <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> }</div>
|
||||
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span> <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> <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> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <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> }</div>
|
||||
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  </div>
|
||||
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span> <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> <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> {</div>
|
||||
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <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> }</div>
|
||||
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  </div>
|
||||
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span> <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> <a class="code" href="namespaceripple.html#a4574aa8b71b4bb8afc56cf6daff9ca86">saveValidatedLedger</a>(</div>
|
||||
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <a class="code" href="classripple_1_1Application.html">Application</a>& app,</div>
|
||||
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger const></a> <span class="keyword">const</span>& ledger,</div>
|
||||
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordtype">bool</span> current)</div>
|
||||
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span> {</div>
|
||||
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="keyword">auto</span> j = app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"Ledger"</span>);</div>
|
||||
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keyword">auto</span> seq = ledger-><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>  <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>  {</div>
|
||||
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="comment">// The save was completed synchronously</span></div>
|
||||
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  JLOG(j.debug()) << <span class="stringliteral">"Save aborted"</span>;</div>
|
||||
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  }</div>
|
||||
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  </div>
|
||||
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keyword">auto</span> res = <span class="keyword">dynamic_cast<</span><a class="code" href="classripple_1_1RelationalDBInterfaceSqlite.html">RelationalDBInterfaceSqlite</a>*<span class="keyword">></span>(</div>
|
||||
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  &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>  -><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>  </div>
|
||||
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="comment">// Clients can now trust the database for</span></div>
|
||||
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="comment">// information about this ledger sequence.</span></div>
|
||||
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  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>  <span class="keywordflow">return</span> res;</div>
|
||||
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span> }</div>
|
||||
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  </div>
|
||||
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span> <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> <a class="code" href="namespaceripple.html#afd9c0655540fb85bcc173ec81c7c7290">pendSaveValidated</a>(</div>
|
||||
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <a class="code" href="classripple_1_1Application.html">Application</a>& app,</div>
|
||||
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger const></a> <span class="keyword">const</span>& ledger,</div>
|
||||
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordtype">bool</span> isSynchronous,</div>
|
||||
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <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> {</div>
|
||||
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <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-><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>  {</div>
|
||||
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <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>  <span class="keyword">auto</span> stream = app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"Ledger"</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>  JLOG(stream) << <span class="stringliteral">"Double pend save for "</span> << ledger-><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>  </div>
|
||||
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <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-><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>  {</div>
|
||||
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="comment">// Either we don't need it to be finished</span></div>
|
||||
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="comment">// or it is finished</span></div>
|
||||
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  }</div>
|
||||
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  }</div>
|
||||
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  </div>
|
||||
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  assert(ledger-><a class="code" href="classripple_1_1Ledger.html#a25c5bcfcef6f0b9f0de97582ee37797a">isImmutable</a>());</div>
|
||||
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  </div>
|
||||
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <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-><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>  {</div>
|
||||
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="keyword">auto</span> stream = app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"Ledger"</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>  JLOG(stream) << <span class="stringliteral">"Pend save with seq in pending saves "</span></div>
|
||||
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  << ledger-><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>  </div>
|
||||
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  }</div>
|
||||
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span> }</div>
|
||||
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  </div>
|
||||
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span> <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> <span class="comment">// VFALCO TODO Document this skip list concept</span></div>
|
||||
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span> <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> <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> {</div>
|
||||
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <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>  <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  </div>
|
||||
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <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>  </div>
|
||||
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <span class="comment">// update record of every 256th ledger</span></div>
|
||||
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keywordflow">if</span> ((prevIndex & 0xff) == 0)</div>
|
||||
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  {</div>
|
||||
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <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>  <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>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<uint256></a> hashes;</div>
|
||||
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  </div>
|
||||
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <span class="keywordtype">bool</span> created;</div>
|
||||
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="keywordflow">if</span> (!sle)</div>
|
||||
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  {</div>
|
||||
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  sle = std::make_shared<SLE>(k);</div>
|
||||
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  created = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  }</div>
|
||||
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  {</div>
|
||||
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  hashes = <span class="keyword">static_cast<</span>decltype(hashes)<span class="keyword">></span>(sle->getFieldV256(<a class="code" href="namespaceripple.html#ab44eddba949c362c1be0f959ee9a2117">sfHashes</a>));</div>
|
||||
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  created = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  }</div>
|
||||
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  </div>
|
||||
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  assert(hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() <= 256);</div>
|
||||
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  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>  sle->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>  sle->setFieldU32(<a class="code" href="namespaceripple.html#a628c597be4a050e3957be56ec78df01a">sfLastLedgerSequence</a>, prevIndex);</div>
|
||||
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="keywordflow">if</span> (created)</div>
|
||||
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <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>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <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>  }</div>
|
||||
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  </div>
|
||||
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="comment">// update record of past 256 ledger</span></div>
|
||||
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <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>  <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>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<uint256></a> hashes;</div>
|
||||
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keywordtype">bool</span> created;</div>
|
||||
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">if</span> (!sle)</div>
|
||||
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  {</div>
|
||||
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  sle = std::make_shared<SLE>(k);</div>
|
||||
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  created = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  }</div>
|
||||
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  {</div>
|
||||
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  hashes = <span class="keyword">static_cast<</span>decltype(hashes)<span class="keyword">></span>(sle->getFieldV256(<a class="code" href="namespaceripple.html#ab44eddba949c362c1be0f959ee9a2117">sfHashes</a>));</div>
|
||||
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  created = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  }</div>
|
||||
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  assert(hashes.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() <= 256);</div>
|
||||
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <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>  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>  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>  sle->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>  sle->setFieldU32(<a class="code" href="namespaceripple.html#a628c597be4a050e3957be56ec78df01a">sfLastLedgerSequence</a>, prevIndex);</div>
|
||||
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <span class="keywordflow">if</span> (created)</div>
|
||||
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <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>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  <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> }</div>
|
||||
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  </div>
|
||||
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span> <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> <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> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <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> }</div>
|
||||
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span> <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> <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> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <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> }</div>
|
||||
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  </div>
|
||||
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span> <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> <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> {</div>
|
||||
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <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> }</div>
|
||||
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  </div>
|
||||
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span> <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> <a class="code" href="namespaceripple.html#a4574aa8b71b4bb8afc56cf6daff9ca86">saveValidatedLedger</a>(</div>
|
||||
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <a class="code" href="classripple_1_1Application.html">Application</a>& app,</div>
|
||||
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger const></a> <span class="keyword">const</span>& ledger,</div>
|
||||
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keywordtype">bool</span> current)</div>
|
||||
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span> {</div>
|
||||
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keyword">auto</span> j = app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"Ledger"</span>);</div>
|
||||
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keyword">auto</span> seq = ledger-><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>  <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>  {</div>
|
||||
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="comment">// The save was completed synchronously</span></div>
|
||||
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  JLOG(j.debug()) << <span class="stringliteral">"Save aborted"</span>;</div>
|
||||
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  }</div>
|
||||
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  </div>
|
||||
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <span class="keyword">auto</span> res = <span class="keyword">dynamic_cast<</span><a class="code" href="classripple_1_1RelationalDBInterfaceSqlite.html">RelationalDBInterfaceSqlite</a>*<span class="keyword">></span>(</div>
|
||||
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  &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>  -><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>  </div>
|
||||
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="comment">// Clients can now trust the database for</span></div>
|
||||
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="comment">// information about this ledger sequence.</span></div>
|
||||
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  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>  <span class="keywordflow">return</span> res;</div>
|
||||
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span> }</div>
|
||||
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  </div>
|
||||
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span> <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> <a class="code" href="namespaceripple.html#afd9c0655540fb85bcc173ec81c7c7290">pendSaveValidated</a>(</div>
|
||||
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <a class="code" href="classripple_1_1Application.html">Application</a>& app,</div>
|
||||
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger const></a> <span class="keyword">const</span>& ledger,</div>
|
||||
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="keywordtype">bool</span> isSynchronous,</div>
|
||||
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <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> {</div>
|
||||
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <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-><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>  {</div>
|
||||
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <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>  <span class="keyword">auto</span> stream = app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"Ledger"</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>  JLOG(stream) << <span class="stringliteral">"Double pend save for "</span> << ledger-><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>  </div>
|
||||
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <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-><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>  {</div>
|
||||
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="comment">// Either we don't need it to be finished</span></div>
|
||||
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="comment">// or it is finished</span></div>
|
||||
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  }</div>
|
||||
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  }</div>
|
||||
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  </div>
|
||||
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  assert(ledger-><a class="code" href="classripple_1_1Ledger.html#a25c5bcfcef6f0b9f0de97582ee37797a">isImmutable</a>());</div>
|
||||
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  </div>
|
||||
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <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-><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>  {</div>
|
||||
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="keyword">auto</span> stream = app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"Ledger"</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>  JLOG(stream) << <span class="stringliteral">"Pend save with seq in pending saves "</span></div>
|
||||
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  << ledger-><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>  </div>
|
||||
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <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>  <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>  <a class="code" href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">isCurrent</a> ? <span class="stringliteral">"Ledger::pendSave"</span> : <span class="stringliteral">"Ledger::pendOldSave"</span>};</div>
|
||||
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  </div>
|
||||
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="comment">// See if we can use the JobQueue.</span></div>
|
||||
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  <span class="keywordflow">if</span> (!isSynchronous &&</div>
|
||||
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  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>  jobType, jobName, [&app, ledger, <a class="code" href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">isCurrent</a>](<a class="code" href="classripple_1_1Job.html">Job</a>&) {</div>
|
||||
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  saveValidatedLedger(app, ledger, isCurrent);</div>
|
||||
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  }))</div>
|
||||
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  {</div>
|
||||
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  }</div>
|
||||
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  </div>
|
||||
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="comment">// The JobQueue won't do the Job. Do the save synchronously.</span></div>
|
||||
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <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> }</div>
|
||||
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  </div>
|
||||
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span> <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> <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> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>->unshare();</div>
|
||||
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>->unshare();</div>
|
||||
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span> }</div>
|
||||
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  </div>
|
||||
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <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> <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> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>->invariants();</div>
|
||||
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>->invariants();</div>
|
||||
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> }</div>
|
||||
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> <span class="comment">//------------------------------------------------------------------------------</span></div>
|
||||
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  </div>
|
||||
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <span class="comment">/*</span></div>
|
||||
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> <span class="comment"> * Make ledger using info loaded from database.</span></div>
|
||||
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <span class="comment"> * @param LedgerInfo: Ledger information.</span></div>
|
||||
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="comment"> * @param app: Link to the Application.</span></div>
|
||||
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <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> <span class="comment"> * @return Shared pointer to the ledger.</span></div>
|
||||
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="comment"> */</span></div>
|
||||
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger></a></div>
|
||||
<div class="line"><a name="l01017"></a><span class="lineno"><a class="line" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061"> 1017</a></span> <a class="code" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061">loadLedgerHelper</a>(<a class="code" href="structripple_1_1LedgerInfo.html">LedgerInfo</a> <span class="keyword">const</span>& info, <a class="code" href="classripple_1_1Application.html">Application</a>& app, <span class="keywordtype">bool</span> acquire)</div>
|
||||
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> {</div>
|
||||
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="keywordtype">bool</span> loaded;</div>
|
||||
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <span class="keyword">auto</span> ledger = std::make_shared<Ledger>(</div>
|
||||
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  info,</div>
|
||||
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  loaded,</div>
|
||||
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <a class="code" href="namespaceripple.html#a63a883cebf81b764433e67d90d4470d9a86a4fa105ff51b8c3be84734797d8144">acquire</a>,</div>
|
||||
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  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>  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>  app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"Ledger"</span>));</div>
|
||||
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  </div>
|
||||
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  <span class="keywordflow">if</span> (!loaded)</div>
|
||||
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  ledger.reset();</div>
|
||||
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  }</div>
|
||||
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  </div>
|
||||
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <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>  <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>  <a class="code" href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">isCurrent</a> ? <span class="stringliteral">"Ledger::pendSave"</span> : <span class="stringliteral">"Ledger::pendOldSave"</span>};</div>
|
||||
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  </div>
|
||||
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="comment">// See if we can use the JobQueue.</span></div>
|
||||
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  <span class="keywordflow">if</span> (!isSynchronous &&</div>
|
||||
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  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>  jobType, jobName, [&app, ledger, <a class="code" href="namespaceripple.html#a38d1749cd010f88da471b4183b2dfe52">isCurrent</a>](<a class="code" href="classripple_1_1Job.html">Job</a>&) {</div>
|
||||
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  saveValidatedLedger(app, ledger, isCurrent);</div>
|
||||
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  }))</div>
|
||||
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  {</div>
|
||||
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  }</div>
|
||||
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  </div>
|
||||
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="comment">// The JobQueue won't do the Job. Do the save synchronously.</span></div>
|
||||
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <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> }</div>
|
||||
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  </div>
|
||||
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span> <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> <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> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>->unshare();</div>
|
||||
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>->unshare();</div>
|
||||
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> }</div>
|
||||
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  </div>
|
||||
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <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> <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> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <a class="code" href="classripple_1_1Ledger.html#a6608f7b02e1d18d06e27f28c5ce296d9">stateMap_</a>->invariants();</div>
|
||||
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <a class="code" href="classripple_1_1Ledger.html#a6bb1b6a13fe4c60edbfd502c39fa687c">txMap_</a>->invariants();</div>
|
||||
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> }</div>
|
||||
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> <span class="comment">//------------------------------------------------------------------------------</span></div>
|
||||
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  </div>
|
||||
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <span class="comment">/*</span></div>
|
||||
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="comment"> * Make ledger using info loaded from database.</span></div>
|
||||
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> <span class="comment"> * @param LedgerInfo: Ledger information.</span></div>
|
||||
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="comment"> * @param app: Link to the Application.</span></div>
|
||||
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> <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> <span class="comment"> * @return Shared pointer to the ledger.</span></div>
|
||||
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> <span class="comment"> */</span></div>
|
||||
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger></a></div>
|
||||
<div class="line"><a name="l01020"></a><span class="lineno"><a class="line" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061"> 1020</a></span> <a class="code" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061">loadLedgerHelper</a>(<a class="code" href="structripple_1_1LedgerInfo.html">LedgerInfo</a> <span class="keyword">const</span>& info, <a class="code" href="classripple_1_1Application.html">Application</a>& app, <span class="keywordtype">bool</span> acquire)</div>
|
||||
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> {</div>
|
||||
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  <span class="keywordtype">bool</span> loaded;</div>
|
||||
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <span class="keyword">auto</span> ledger = std::make_shared<Ledger>(</div>
|
||||
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  info,</div>
|
||||
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  loaded,</div>
|
||||
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  <a class="code" href="namespaceripple.html#a63a883cebf81b764433e67d90d4470d9a86a4fa105ff51b8c3be84734797d8144">acquire</a>,</div>
|
||||
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  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>  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>  app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"Ledger"</span>));</div>
|
||||
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  </div>
|
||||
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keywordflow">return</span> ledger;</div>
|
||||
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> }</div>
|
||||
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keywordflow">if</span> (!loaded)</div>
|
||||
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  ledger.reset();</div>
|
||||
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  </div>
|
||||
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> <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> <a class="code" href="namespaceripple.html#a16f9dbea9c8dfaaaca124cf61c6b6e6d">finishLoadByIndexOrHash</a>(</div>
|
||||
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger></a> <span class="keyword">const</span>& ledger,</div>
|
||||
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <a class="code" href="classripple_1_1Config.html">Config</a> <span class="keyword">const</span>& config,</div>
|
||||
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <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> {</div>
|
||||
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="keywordflow">if</span> (!ledger)</div>
|
||||
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  </div>
|
||||
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  ledger-><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>  </div>
|
||||
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  JLOG(j.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) << <span class="stringliteral">"Loaded ledger: "</span> << <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(ledger-><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>  </div>
|
||||
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  ledger-><a class="code" href="classripple_1_1Ledger.html#a8a75fcab11d8fe2e7bd5cd6643a052e1">setFull</a>();</div>
|
||||
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> }</div>
|
||||
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  <span class="keywordflow">return</span> ledger;</div>
|
||||
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> }</div>
|
||||
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  </div>
|
||||
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> <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> <a class="code" href="namespaceripple.html#a16f9dbea9c8dfaaaca124cf61c6b6e6d">finishLoadByIndexOrHash</a>(</div>
|
||||
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger></a> <span class="keyword">const</span>& ledger,</div>
|
||||
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <a class="code" href="classripple_1_1Config.html">Config</a> <span class="keyword">const</span>& config,</div>
|
||||
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <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> {</div>
|
||||
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <span class="keywordflow">if</span> (!ledger)</div>
|
||||
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  </div>
|
||||
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  ledger-><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>  </div>
|
||||
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  JLOG(j.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) << <span class="stringliteral">"Loaded ledger: "</span> << <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(ledger-><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>  </div>
|
||||
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/tuple.html">std::tuple<std::shared_ptr<Ledger></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>></div>
|
||||
<div class="line"><a name="l01051"></a><span class="lineno"><a class="line" href="namespaceripple.html#a04cf5c0dd5329bc0e0203fb86cf91ed3"> 1051</a></span> <a class="code" href="namespaceripple.html#a04cf5c0dd5329bc0e0203fb86cf91ed3">getLatestLedger</a>(<a class="code" href="classripple_1_1Application.html">Application</a>& app)</div>
|
||||
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> {</div>
|
||||
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  <span class="keyword">const</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<LedgerInfo></a> info =</div>
|
||||
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  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>  <span class="keywordflow">if</span> (!info)</div>
|
||||
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="keywordflow">return</span> {<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger></a>(), {}, {}};</div>
|
||||
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keywordflow">return</span> {<a class="code" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061">loadLedgerHelper</a>(*info, app, <span class="keyword">true</span>), info->seq, info->hash};</div>
|
||||
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> }</div>
|
||||
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  </div>
|
||||
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger></a></div>
|
||||
<div class="line"><a name="l01061"></a><span class="lineno"><a class="line" href="namespaceripple.html#a22adb38923282bf7dbb38655afdb381d"> 1061</a></span> <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>& app, <span class="keywordtype">bool</span> acquire)</div>
|
||||
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> {</div>
|
||||
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  <span class="keywordflow">if</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<LedgerInfo></a> info =</div>
|
||||
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  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>  {</div>
|
||||
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger></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>  <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">"Ledger"</span>));</div>
|
||||
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <span class="keywordflow">return</span> ledger;</div>
|
||||
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  }</div>
|
||||
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <span class="keywordflow">return</span> {};</div>
|
||||
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> }</div>
|
||||
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  </div>
|
||||
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger></a></div>
|
||||
<div class="line"><a name="l01074"></a><span class="lineno"><a class="line" href="namespaceripple.html#a729619e7a3a0d92226e7d52347ff2a5e"> 1074</a></span> <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>& ledgerHash, <a class="code" href="classripple_1_1Application.html">Application</a>& app, <span class="keywordtype">bool</span> acquire)</div>
|
||||
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> {</div>
|
||||
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keywordflow">if</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<LedgerInfo></a> info =</div>
|
||||
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  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>  {</div>
|
||||
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger></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>  <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">"Ledger"</span>));</div>
|
||||
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  assert(!ledger || ledger-><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>  <span class="keywordflow">return</span> ledger;</div>
|
||||
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  }</div>
|
||||
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <span class="keywordflow">return</span> {};</div>
|
||||
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> }</div>
|
||||
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  </div>
|
||||
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a><</div>
|
||||
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair<std::shared_ptr<STTx const></a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<STObject const></a>>></div>
|
||||
<div class="line"><a name="l01089"></a><span class="lineno"><a class="line" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5"> 1089</a></span> <a class="code" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5">flatFetchTransactions</a>(<a class="code" href="classripple_1_1Application.html">Application</a>& app, <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<uint256></a>& nodestoreHashes)</div>
|
||||
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> {</div>
|
||||
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <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>  {</div>
|
||||
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  Throw<std::runtime_error>(</div>
|
||||
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  <span class="stringliteral">"flatFetchTransactions: not running in reporting mode"</span>);</div>
|
||||
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  }</div>
|
||||
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  </div>
|
||||
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a><</div>
|
||||
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair<std::shared_ptr<STTx const></a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<STObject const></a>>></div>
|
||||
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  txns;</div>
|
||||
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <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>  <span class="keyword">auto</span> nodeDb =</div>
|
||||
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <span class="keyword">dynamic_cast<</span><a class="code" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html">NodeStore::DatabaseNodeImp</a>*<span class="keyword">></span>(&(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>  <span class="keywordflow">if</span> (!nodeDb)</div>
|
||||
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  {</div>
|
||||
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  Throw<std::runtime_error>(</div>
|
||||
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <span class="stringliteral">"Called flatFetchTransactions but database is not DatabaseNodeImp"</span>);</div>
|
||||
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  }</div>
|
||||
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  <span class="keyword">auto</span> objs = nodeDb->fetchBatch(nodestoreHashes);</div>
|
||||
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  </div>
|
||||
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <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>  JLOG(app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"Ledger"</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>  << <span class="stringliteral">" Flat fetch time : "</span> << ((end - start).count() / 1000000000.0)</div>
|
||||
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  << <span class="stringliteral">" number of transactions "</span> << 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>  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>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < objs.size(); ++i)</div>
|
||||
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  {</div>
|
||||
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <a class="code" href="classripple_1_1base__uint.html">uint256</a>& nodestoreHash = nodestoreHashes[i];</div>
|
||||
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <span class="keyword">auto</span>& obj = objs[i];</div>
|
||||
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  <span class="keywordflow">if</span> (obj)</div>
|
||||
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  {</div>
|
||||
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <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>  <a class="code" href="namespaceripple.html#aabe37451093c21757855542d68fba3ce">makeSlice</a>(obj->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>  <span class="keywordflow">if</span> (!node)</div>
|
||||
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  {</div>
|
||||
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  Throw<std::runtime_error>(</div>
|
||||
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  <span class="stringliteral">"flatFetchTransactions : Error making SHAMap node"</span>);</div>
|
||||
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  }</div>
|
||||
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  <span class="keyword">auto</span> item = (<span class="keyword">static_cast<</span><a class="code" href="classripple_1_1SHAMapLeafNode.html">SHAMapLeafNode</a>*<span class="keyword">></span>(node.get()))->peekItem();</div>
|
||||
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <span class="keywordflow">if</span> (!item)</div>
|
||||
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  {</div>
|
||||
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  Throw<std::runtime_error>(</div>
|
||||
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  <span class="stringliteral">"flatFetchTransactions : Error reading SHAMap node"</span>);</div>
|
||||
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  }</div>
|
||||
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <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>  <span class="keywordflow">if</span> (!txnPlusMeta.first || !txnPlusMeta.second)</div>
|
||||
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  {</div>
|
||||
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  Throw<std::runtime_error>(</div>
|
||||
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  <span class="stringliteral">"flatFetchTransactions : Error deserializing SHAMap node"</span>);</div>
|
||||
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  }</div>
|
||||
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  txns.push_back(std::move(txnPlusMeta));</div>
|
||||
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  }</div>
|
||||
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  {</div>
|
||||
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  Throw<std::runtime_error>(</div>
|
||||
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  <span class="stringliteral">"flatFetchTransactions : Containing SHAMap node not found"</span>);</div>
|
||||
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  }</div>
|
||||
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  }</div>
|
||||
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  <span class="keywordflow">return</span> txns;</div>
|
||||
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> }</div>
|
||||
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a><</div>
|
||||
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair<std::shared_ptr<STTx const></a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<STObject const></a>>></div>
|
||||
<div class="line"><a name="l01158"></a><span class="lineno"><a class="line" href="namespaceripple.html#a641da3f4ad91dd7082d6a58040932acf"> 1158</a></span> <a class="code" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5">flatFetchTransactions</a>(<a class="code" href="classripple_1_1ReadView.html">ReadView</a> <span class="keyword">const</span>& ledger, <a class="code" href="classripple_1_1Application.html">Application</a>& app)</div>
|
||||
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> {</div>
|
||||
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <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>  {</div>
|
||||
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  <span class="keywordflow">return</span> {};</div>
|
||||
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  }</div>
|
||||
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  </div>
|
||||
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  <span class="keyword">auto</span> nodestoreHashes = <span class="keyword">dynamic_cast<</span><a class="code" href="classripple_1_1RelationalDBInterfacePostgres.html">RelationalDBInterfacePostgres</a>*<span class="keyword">></span>(</div>
|
||||
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  &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>  -><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>  </div>
|
||||
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <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> }</div>
|
||||
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> } <span class="comment">// namespace ripple</span></div>
|
||||
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  ledger-><a class="code" href="classripple_1_1Ledger.html#a8a75fcab11d8fe2e7bd5cd6643a052e1">setFull</a>();</div>
|
||||
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> }</div>
|
||||
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  </div>
|
||||
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/tuple.html">std::tuple<std::shared_ptr<Ledger></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>></div>
|
||||
<div class="line"><a name="l01054"></a><span class="lineno"><a class="line" href="namespaceripple.html#a04cf5c0dd5329bc0e0203fb86cf91ed3"> 1054</a></span> <a class="code" href="namespaceripple.html#a04cf5c0dd5329bc0e0203fb86cf91ed3">getLatestLedger</a>(<a class="code" href="classripple_1_1Application.html">Application</a>& app)</div>
|
||||
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> {</div>
|
||||
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="keyword">const</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<LedgerInfo></a> info =</div>
|
||||
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  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>  <span class="keywordflow">if</span> (!info)</div>
|
||||
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <span class="keywordflow">return</span> {<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger></a>(), {}, {}};</div>
|
||||
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  <span class="keywordflow">return</span> {<a class="code" href="namespaceripple.html#a56e0cc999ed456f36e9662a4fcae5061">loadLedgerHelper</a>(*info, app, <span class="keyword">true</span>), info->seq, info->hash};</div>
|
||||
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> }</div>
|
||||
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  </div>
|
||||
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger></a></div>
|
||||
<div class="line"><a name="l01064"></a><span class="lineno"><a class="line" href="namespaceripple.html#a22adb38923282bf7dbb38655afdb381d"> 1064</a></span> <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>& app, <span class="keywordtype">bool</span> acquire)</div>
|
||||
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> {</div>
|
||||
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  <span class="keywordflow">if</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<LedgerInfo></a> info =</div>
|
||||
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  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>  {</div>
|
||||
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger></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>  <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">"Ledger"</span>));</div>
|
||||
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="keywordflow">return</span> ledger;</div>
|
||||
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  }</div>
|
||||
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <span class="keywordflow">return</span> {};</div>
|
||||
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> }</div>
|
||||
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  </div>
|
||||
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger></a></div>
|
||||
<div class="line"><a name="l01077"></a><span class="lineno"><a class="line" href="namespaceripple.html#a729619e7a3a0d92226e7d52347ff2a5e"> 1077</a></span> <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>& ledgerHash, <a class="code" href="classripple_1_1Application.html">Application</a>& app, <span class="keywordtype">bool</span> acquire)</div>
|
||||
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> {</div>
|
||||
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <span class="keywordflow">if</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<LedgerInfo></a> info =</div>
|
||||
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  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>  {</div>
|
||||
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<Ledger></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>  <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">"Ledger"</span>));</div>
|
||||
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  assert(!ledger || ledger-><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>  <span class="keywordflow">return</span> ledger;</div>
|
||||
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  }</div>
|
||||
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  <span class="keywordflow">return</span> {};</div>
|
||||
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> }</div>
|
||||
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  </div>
|
||||
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a><</div>
|
||||
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair<std::shared_ptr<STTx const></a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<STObject const></a>>></div>
|
||||
<div class="line"><a name="l01092"></a><span class="lineno"><a class="line" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5"> 1092</a></span> <a class="code" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5">flatFetchTransactions</a>(<a class="code" href="classripple_1_1Application.html">Application</a>& app, <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<uint256></a>& nodestoreHashes)</div>
|
||||
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> {</div>
|
||||
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <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>  {</div>
|
||||
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  Throw<std::runtime_error>(</div>
|
||||
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <span class="stringliteral">"flatFetchTransactions: not running in reporting mode"</span>);</div>
|
||||
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  }</div>
|
||||
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  </div>
|
||||
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a><</div>
|
||||
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair<std::shared_ptr<STTx const></a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<STObject const></a>>></div>
|
||||
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  txns;</div>
|
||||
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <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>  <span class="keyword">auto</span> nodeDb =</div>
|
||||
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <span class="keyword">dynamic_cast<</span><a class="code" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html">NodeStore::DatabaseNodeImp</a>*<span class="keyword">></span>(&(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>  <span class="keywordflow">if</span> (!nodeDb)</div>
|
||||
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  {</div>
|
||||
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  Throw<std::runtime_error>(</div>
|
||||
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  <span class="stringliteral">"Called flatFetchTransactions but database is not DatabaseNodeImp"</span>);</div>
|
||||
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  }</div>
|
||||
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <span class="keyword">auto</span> objs = nodeDb->fetchBatch(nodestoreHashes);</div>
|
||||
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  </div>
|
||||
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <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>  JLOG(app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"Ledger"</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>  << <span class="stringliteral">" Flat fetch time : "</span> << ((end - start).count() / 1000000000.0)</div>
|
||||
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  << <span class="stringliteral">" number of transactions "</span> << 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>  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>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < objs.size(); ++i)</div>
|
||||
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  {</div>
|
||||
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  <a class="code" href="classripple_1_1base__uint.html">uint256</a>& nodestoreHash = nodestoreHashes[i];</div>
|
||||
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <span class="keyword">auto</span>& obj = objs[i];</div>
|
||||
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  <span class="keywordflow">if</span> (obj)</div>
|
||||
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  {</div>
|
||||
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  <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>  <a class="code" href="namespaceripple.html#aabe37451093c21757855542d68fba3ce">makeSlice</a>(obj->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>  <span class="keywordflow">if</span> (!node)</div>
|
||||
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  {</div>
|
||||
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  Throw<std::runtime_error>(</div>
|
||||
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <span class="stringliteral">"flatFetchTransactions : Error making SHAMap node"</span>);</div>
|
||||
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  }</div>
|
||||
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  <span class="keyword">auto</span> item = (<span class="keyword">static_cast<</span><a class="code" href="classripple_1_1SHAMapLeafNode.html">SHAMapLeafNode</a>*<span class="keyword">></span>(node.get()))->peekItem();</div>
|
||||
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keywordflow">if</span> (!item)</div>
|
||||
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  {</div>
|
||||
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  Throw<std::runtime_error>(</div>
|
||||
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  <span class="stringliteral">"flatFetchTransactions : Error reading SHAMap node"</span>);</div>
|
||||
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  }</div>
|
||||
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <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>  <span class="keywordflow">if</span> (!txnPlusMeta.first || !txnPlusMeta.second)</div>
|
||||
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  {</div>
|
||||
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  Throw<std::runtime_error>(</div>
|
||||
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  <span class="stringliteral">"flatFetchTransactions : Error deserializing SHAMap node"</span>);</div>
|
||||
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  }</div>
|
||||
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  txns.push_back(std::move(txnPlusMeta));</div>
|
||||
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  }</div>
|
||||
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  {</div>
|
||||
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  Throw<std::runtime_error>(</div>
|
||||
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  <span class="stringliteral">"flatFetchTransactions : Containing SHAMap node not found"</span>);</div>
|
||||
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  }</div>
|
||||
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  }</div>
|
||||
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <span class="keywordflow">return</span> txns;</div>
|
||||
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> }</div>
|
||||
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a><</div>
|
||||
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair<std::shared_ptr<STTx const></a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<STObject const></a>>></div>
|
||||
<div class="line"><a name="l01161"></a><span class="lineno"><a class="line" href="namespaceripple.html#a641da3f4ad91dd7082d6a58040932acf"> 1161</a></span> <a class="code" href="namespaceripple.html#a6328c469eb804b05c66c8c140d470ba5">flatFetchTransactions</a>(<a class="code" href="classripple_1_1ReadView.html">ReadView</a> <span class="keyword">const</span>& ledger, <a class="code" href="classripple_1_1Application.html">Application</a>& app)</div>
|
||||
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> {</div>
|
||||
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  <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>  {</div>
|
||||
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  <span class="keywordflow">return</span> {};</div>
|
||||
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  }</div>
|
||||
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  </div>
|
||||
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <span class="keyword">auto</span> nodestoreHashes = <span class="keyword">dynamic_cast<</span><a class="code" href="classripple_1_1RelationalDBInterfacePostgres.html">RelationalDBInterfacePostgres</a>*<span class="keyword">></span>(</div>
|
||||
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  &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>  -><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>  </div>
|
||||
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <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> }</div>
|
||||
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span> } <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< sles_type::iter_base > 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 & 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 &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< SLE > const &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< SHAMap > 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< uint256 > succ(uint256 const &key, std::optional< uint256 > const &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 &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 & 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< Ledger > loadByIndex(std::uint32_t ledgerIndex, Application &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< Ledger > loadByIndex(std::uint32_t ledgerIndex, Application &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< sles_type::iter_base > 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 & 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 & skip() noexcept</div><div class="ttdoc">The index of the "short" 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< std::shared_ptr< Ledger >, std::uint32_t, uint256 > getLatestLedger(Application &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< std::shared_ptr< Ledger >, std::uint32_t, uint256 > getLatestLedger(Application &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 &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 &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< SLE > peek(Keylet const &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< Clock, Duration > roundCloseTime(std::chrono::time_point< Clock, Duration > closeTime, std::chrono::duration< Rep, Period > 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 & operator=(txs_iter_impl const &)=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 &name, JobHandler &&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 &key, std::shared_ptr< Serializer const > const &txn, std::shared_ptr< Serializer const > const &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< Ledger > const &ledger, Config const &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< Ledger > const &ledger, Config const &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< STTx const > deserializeTx(SHAMapItem const &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< PublicKey, SecretKey > generateKeyPair(KeyType type, Seed const &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 & 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 &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 &app, std::shared_ptr< Ledger const > const &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< Ledger > loadByHash(uint256 const &ledgerHash, Application &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 &app, std::shared_ptr< Ledger const > const &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< Ledger > loadByHash(uint256 const &ledgerHash, Application &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< LedgerInfo > 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 &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 &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 &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 &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 & operator=(sles_iter_impl const &)=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< SHAMap > 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 & 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 &app, std::shared_ptr< Ledger const > const &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 &app, std::shared_ptr< Ledger const > const &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 &)=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< digest_type > digest(key_type const &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< Ledger > loadLedgerHelper(LedgerInfo const &info, Application &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< Ledger > loadLedgerHelper(LedgerInfo const &info, Application &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 &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< base_type > 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< uint256 > getTxHashes(std::shared_ptr< PgPool > const &pgPool, LedgerIndex seq, Application &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< std::pair< std::shared_ptr< STTx const >, std::shared_ptr< STObject const > > > flatFetchTransactions(Application &app, std::vector< uint256 > &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< std::pair< std::shared_ptr< STTx const >, std::shared_ptr< STObject const > > > flatFetchTransactions(Application &app, std::vector< uint256 > &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>
|
||||
|
||||
Reference in New Issue
Block a user