This commit is contained in:
manojsdoshi
2022-05-11 23:57:28 +00:00
parent c1b77a4e4e
commit 9aeea1cf29
1248 changed files with 88723 additions and 83819 deletions

View File

@@ -288,82 +288,88 @@ $(function() {
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="comment">// The earliest shard index</span></div>
<div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a569a3e61f4c7d272d96845b3a12c479a"> 325</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <span class="keyword">const</span> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a569a3e61f4c7d272d96845b3a12c479a">earliestShardIndex_</a>;</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; </div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a090e39b8c6733b0dc4553f9e8e705605"> 328</a></span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a090e39b8c6733b0dc4553f9e8e705605">storeStats</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a> count, <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a> sz)</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; assert(count &lt;= sz);</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a4dc1dcc2a79b60c2c7de7f1bdf05cecf">storeCount_</a> += count;</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a5dbc9808c511caeaaa7ce5c6b27276e6">storeSz_</a> += sz;</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; }</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; </div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="comment">// Called by the public import function</span></div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#af885d9fe877259a258481f0df20697cd">importInternal</a>(<a class="code" href="classripple_1_1NodeStore_1_1Backend.html">Backend</a>&amp; dstBackend, <a class="code" href="classripple_1_1NodeStore_1_1Database.html">Database</a>&amp; srcDB);</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; </div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="comment">// Called by the public storeLedger function</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#aad7aa12d0cc01006120761d23312d428">storeLedger</a>(<a class="code" href="classripple_1_1Ledger.html">Ledger</a> <span class="keyword">const</span>&amp; srcLedger, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Backend&gt;</a> dstBackend);</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; </div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#abdcb3e7fdaeae1252f850c0e2a4646c2"> 344</a></span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#abdcb3e7fdaeae1252f850c0e2a4646c2">updateFetchMetrics</a>(uint64_t fetches, uint64_t hits, uint64_t duration)</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; {</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#af3332d74cac6eb882c2908e14655d3a0">fetchTotalCount_</a> += fetches;</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a89497b9b4c5530b58040931489015d30">fetchHitCount_</a> += hits;</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#ab4ecdf417aaa8e5d4c88601244fe90d7">fetchDurationUs_</a> += duration;</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; </div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a4dc1dcc2a79b60c2c7de7f1bdf05cecf"> 352</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;std::uint64_t&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a4dc1dcc2a79b60c2c7de7f1bdf05cecf">storeCount_</a>{0};</div>
<div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a5dbc9808c511caeaaa7ce5c6b27276e6"> 353</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;std::uint64_t&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a5dbc9808c511caeaaa7ce5c6b27276e6">storeSz_</a>{0};</div>
<div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#af3332d74cac6eb882c2908e14655d3a0"> 354</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;std::uint64_t&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#af3332d74cac6eb882c2908e14655d3a0">fetchTotalCount_</a>{0};</div>
<div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#ab4ecdf417aaa8e5d4c88601244fe90d7"> 355</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;std::uint64_t&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#ab4ecdf417aaa8e5d4c88601244fe90d7">fetchDurationUs_</a>{0};</div>
<div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a83e7506a1b302966445210ebe56c3905"> 356</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;std::uint64_t&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a83e7506a1b302966445210ebe56c3905">storeDurationUs_</a>{0};</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; </div>
<div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a06fbf66d1f34a6162a17daf72e71eba9"> 358</a></span>&#160; <span class="keyword">mutable</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/mutex.html">std::mutex</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a06fbf66d1f34a6162a17daf72e71eba9">readLock_</a>;</div>
<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a438af3c0eba7891bb79d5c5dcb902556"> 359</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/condition_variable.html">std::condition_variable</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a438af3c0eba7891bb79d5c5dcb902556">readCondVar_</a>;</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; </div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="comment">// reads to do</span></div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/map.html">std::map</a>&lt;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>,</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>,</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a>&lt;void(<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;NodeObject&gt;</a> <span class="keyword">const</span>&amp;)&gt;&gt;&gt;&gt;</div>
<div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a59cd26efed86926842662b223d20359d"> 367</a></span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a59cd26efed86926842662b223d20359d">read_</a>;</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; </div>
<div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a7cb4eee79861b6a496fe6ddcd024a5f8"> 369</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;bool&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a7cb4eee79861b6a496fe6ddcd024a5f8">readStopping_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#af5fd85ba304bf9fd6e5afd7f06025180"> 370</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;int&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#af5fd85ba304bf9fd6e5afd7f06025180">readThreads_</a> = 0;</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; </div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keyword">virtual</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;NodeObject&gt;</a></div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a780601a4dce8d688490a24a61f8cea9e">fetchNodeObject</a>(</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; hash,</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ledgerSeq,</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="structripple_1_1NodeStore_1_1FetchReport.html">FetchReport</a>&amp; fetchReport,</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordtype">bool</span> duplicate) = 0;</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; </div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a2b5174a0ffb315030b96815d6ac86eaf">for_each</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a>&lt;<span class="keywordtype">void</span>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;NodeObject&gt;</a>)&gt; f) = 0;</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; </div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keyword">virtual</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;Backend::Counters&lt;std::uint64_t&gt;</a>&gt;</div>
<div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#aba0e02eea82d047dde49d56f362347bf"> 395</a></span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#aba0e02eea82d047dde49d56f362347bf">getCounters</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">return</span> std::nullopt;</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; </div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a7c4180512ff87a967de8091a019dc9f9">threadEntry</a>();</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;};</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; </div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;} <span class="comment">// namespace NodeStore</span></div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; </div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">// The maximum number of requests a thread extracts from the queue in an</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="comment">// attempt to minimize the overhead of mutex acquisition. This is an</span></div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="comment">// advanced tunable, via the config file. The default value is 4.</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a4f61a1a22df3ffe095ae4086d66e8756"> 330</a></span>&#160; <span class="keywordtype">int</span> <span class="keyword">const</span> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a4f61a1a22df3ffe095ae4086d66e8756">requestBundle_</a>;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; </div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a090e39b8c6733b0dc4553f9e8e705605"> 333</a></span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a090e39b8c6733b0dc4553f9e8e705605">storeStats</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a> count, <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a> sz)</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; assert(count &lt;= sz);</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a4dc1dcc2a79b60c2c7de7f1bdf05cecf">storeCount_</a> += count;</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a5dbc9808c511caeaaa7ce5c6b27276e6">storeSz_</a> += sz;</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; </div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="comment">// Called by the public import function</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#af885d9fe877259a258481f0df20697cd">importInternal</a>(<a class="code" href="classripple_1_1NodeStore_1_1Backend.html">Backend</a>&amp; dstBackend, <a class="code" href="classripple_1_1NodeStore_1_1Database.html">Database</a>&amp; srcDB);</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; </div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="comment">// Called by the public storeLedger function</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#aad7aa12d0cc01006120761d23312d428">storeLedger</a>(<a class="code" href="classripple_1_1Ledger.html">Ledger</a> <span class="keyword">const</span>&amp; srcLedger, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Backend&gt;</a> dstBackend);</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; </div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#abdcb3e7fdaeae1252f850c0e2a4646c2"> 349</a></span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#abdcb3e7fdaeae1252f850c0e2a4646c2">updateFetchMetrics</a>(uint64_t fetches, uint64_t hits, uint64_t duration)</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#af3332d74cac6eb882c2908e14655d3a0">fetchTotalCount_</a> += fetches;</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a89497b9b4c5530b58040931489015d30">fetchHitCount_</a> += hits;</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#ab4ecdf417aaa8e5d4c88601244fe90d7">fetchDurationUs_</a> += duration;</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; </div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a4dc1dcc2a79b60c2c7de7f1bdf05cecf"> 357</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;std::uint64_t&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a4dc1dcc2a79b60c2c7de7f1bdf05cecf">storeCount_</a>{0};</div>
<div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a5dbc9808c511caeaaa7ce5c6b27276e6"> 358</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;std::uint64_t&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a5dbc9808c511caeaaa7ce5c6b27276e6">storeSz_</a>{0};</div>
<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#af3332d74cac6eb882c2908e14655d3a0"> 359</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;std::uint64_t&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#af3332d74cac6eb882c2908e14655d3a0">fetchTotalCount_</a>{0};</div>
<div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#ab4ecdf417aaa8e5d4c88601244fe90d7"> 360</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;std::uint64_t&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#ab4ecdf417aaa8e5d4c88601244fe90d7">fetchDurationUs_</a>{0};</div>
<div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a83e7506a1b302966445210ebe56c3905"> 361</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;std::uint64_t&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a83e7506a1b302966445210ebe56c3905">storeDurationUs_</a>{0};</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; </div>
<div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a06fbf66d1f34a6162a17daf72e71eba9"> 363</a></span>&#160; <span class="keyword">mutable</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/mutex.html">std::mutex</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a06fbf66d1f34a6162a17daf72e71eba9">readLock_</a>;</div>
<div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a438af3c0eba7891bb79d5c5dcb902556"> 364</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/condition_variable.html">std::condition_variable</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a438af3c0eba7891bb79d5c5dcb902556">readCondVar_</a>;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; </div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="comment">// reads to do</span></div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/map.html">std::map</a>&lt;</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>,</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt;</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>,</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a>&lt;void(<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;NodeObject&gt;</a> <span class="keyword">const</span>&amp;)&gt;&gt;&gt;&gt;</div>
<div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a59cd26efed86926842662b223d20359d"> 372</a></span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a59cd26efed86926842662b223d20359d">read_</a>;</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; </div>
<div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#a7cb4eee79861b6a496fe6ddcd024a5f8"> 374</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;bool&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a7cb4eee79861b6a496fe6ddcd024a5f8">readStopping_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#af5fd85ba304bf9fd6e5afd7f06025180"> 375</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;int&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#af5fd85ba304bf9fd6e5afd7f06025180">readThreads_</a> = 0;</div>
<div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#ad9f741a64dae54f4b30f31fb68565283"> 376</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt;int&gt;</a> <a class="code" href="classripple_1_1NodeStore_1_1Database.html#ad9f741a64dae54f4b30f31fb68565283">runningThreads_</a> = 0;</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; </div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">virtual</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;NodeObject&gt;</a></div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a780601a4dce8d688490a24a61f8cea9e">fetchNodeObject</a>(</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; hash,</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ledgerSeq,</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="structripple_1_1NodeStore_1_1FetchReport.html">FetchReport</a>&amp; fetchReport,</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordtype">bool</span> duplicate) = 0;</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; </div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a2b5174a0ffb315030b96815d6ac86eaf">for_each</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a>&lt;<span class="keywordtype">void</span>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;NodeObject&gt;</a>)&gt; f) = 0;</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; </div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">virtual</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;Backend::Counters&lt;std::uint64_t&gt;</a>&gt;</div>
<div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="classripple_1_1NodeStore_1_1Database.html#aba0e02eea82d047dde49d56f362347bf"> 401</a></span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#aba0e02eea82d047dde49d56f362347bf">getCounters</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">return</span> std::nullopt;</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; </div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="classripple_1_1NodeStore_1_1Database.html#a7c4180512ff87a967de8091a019dc9f9">threadEntry</a>();</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;};</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; </div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;} <span class="comment">// namespace NodeStore</span></div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; </div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a8ebb38ac8562f6b1673a9f3b8216efce"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a8ebb38ac8562f6b1673a9f3b8216efce">ripple::NodeStore::Database::getFetchSize</a></div><div class="ttdeci">std::uint32_t getFetchSize() const</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00206">Database.h:206</a></div></div>
<div class="ttc" id="aclassripple_1_1Section_html"><div class="ttname"><a href="classripple_1_1Section.html">ripple::Section</a></div><div class="ttdoc">Holds a collection of configuration values.</div><div class="ttdef"><b>Definition:</b> <a href="BasicConfig_8h_source.html#l00042">BasicConfig.h:42</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a9d32ff3a7c28f6a852155ef954f7f59c"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a9d32ff3a7c28f6a852155ef954f7f59c">ripple::NodeStore::Database::lastLedgerSeq</a></div><div class="ttdeci">std::uint32_t lastLedgerSeq(std::uint32_t shardIndex) const noexcept</div><div class="ttdoc">Calculates the last ledger sequence for a given shard index.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00271">Database.h:271</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_aada6493667fd17dd426f6545bf4cac93"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#aada6493667fd17dd426f6545bf4cac93">ripple::NodeStore::Database::getWriteLoad</a></div><div class="ttdeci">virtual std::int32_t getWriteLoad() const =0</div><div class="ttdoc">Retrieve the estimated number of pending write operations.</div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a4ccd565f5a4a5296c049a2a0886f363f"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a4ccd565f5a4a5296c049a2a0886f363f">ripple::NodeStore::Database::getStoreCount</a></div><div class="ttdeci">std::uint64_t getStoreCount() const</div><div class="ttdoc">Gather statistics pertaining to read and write activities.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00182">Database.h:182</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_ab4ecdf417aaa8e5d4c88601244fe90d7"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#ab4ecdf417aaa8e5d4c88601244fe90d7">ripple::NodeStore::Database::fetchDurationUs_</a></div><div class="ttdeci">std::atomic&lt; std::uint64_t &gt; fetchDurationUs_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00355">Database.h:355</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_ab4ecdf417aaa8e5d4c88601244fe90d7"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#ab4ecdf417aaa8e5d4c88601244fe90d7">ripple::NodeStore::Database::fetchDurationUs_</a></div><div class="ttdeci">std::atomic&lt; std::uint64_t &gt; fetchDurationUs_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00360">Database.h:360</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html">ripple::NodeStore::Database</a></div><div class="ttdoc">Persistency layer for NodeObject.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00051">Database.h:51</a></div></div>
<div class="ttc" id="abasic_string_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div><div class="ttdoc">STL class.</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&lt; NodeObject &gt;</a></div></div>
@@ -372,63 +378,65 @@ $(function() {
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a730a87cf8b617a8afb30e2531ede0f81"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a730a87cf8b617a8afb30e2531ede0f81">ripple::NodeStore::Database::fdRequired_</a></div><div class="ttdeci">int fdRequired_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00303">Database.h:303</a></div></div>
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt; unsigned char &gt;</a></div></div>
<div class="ttc" id="anamespaceripple_html_a57d7e7b27df7e719fdf5569f96be60a3"><div class="ttname"><a href="namespaceripple.html#a57d7e7b27df7e719fdf5569f96be60a3">ripple::NodeObjectType</a></div><div class="ttdeci">NodeObjectType</div><div class="ttdoc">The types of node objects.</div><div class="ttdef"><b>Definition:</b> <a href="NodeObject_8h_source.html#l00032">NodeObject.h:32</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a59cd26efed86926842662b223d20359d"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a59cd26efed86926842662b223d20359d">ripple::NodeStore::Database::read_</a></div><div class="ttdeci">std::map&lt; uint256, std::vector&lt; std::pair&lt; std::uint32_t, std::function&lt; void(std::shared_ptr&lt; NodeObject &gt; const &amp;)&gt; &gt; &gt; &gt; read_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00367">Database.h:367</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_af3332d74cac6eb882c2908e14655d3a0"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#af3332d74cac6eb882c2908e14655d3a0">ripple::NodeStore::Database::fetchTotalCount_</a></div><div class="ttdeci">std::atomic&lt; std::uint64_t &gt; fetchTotalCount_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00354">Database.h:354</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a0d21a918d521d82947868d21e1aafadb"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a0d21a918d521d82947868d21e1aafadb">ripple::NodeStore::Database::asyncFetch</a></div><div class="ttdeci">virtual void asyncFetch(uint256 const &amp;hash, std::uint32_t ledgerSeq, std::function&lt; void(std::shared_ptr&lt; NodeObject &gt; const &amp;)&gt; &amp;&amp;callback)</div><div class="ttdoc">Fetch an object without waiting.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00163">Database.cpp:163</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a59cd26efed86926842662b223d20359d"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a59cd26efed86926842662b223d20359d">ripple::NodeStore::Database::read_</a></div><div class="ttdeci">std::map&lt; uint256, std::vector&lt; std::pair&lt; std::uint32_t, std::function&lt; void(std::shared_ptr&lt; NodeObject &gt; const &amp;)&gt; &gt; &gt; &gt; read_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00372">Database.h:372</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a4f61a1a22df3ffe095ae4086d66e8756"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a4f61a1a22df3ffe095ae4086d66e8756">ripple::NodeStore::Database::requestBundle_</a></div><div class="ttdeci">const int requestBundle_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00330">Database.h:330</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_af3332d74cac6eb882c2908e14655d3a0"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#af3332d74cac6eb882c2908e14655d3a0">ripple::NodeStore::Database::fetchTotalCount_</a></div><div class="ttdeci">std::atomic&lt; std::uint64_t &gt; fetchTotalCount_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00359">Database.h:359</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a0d21a918d521d82947868d21e1aafadb"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a0d21a918d521d82947868d21e1aafadb">ripple::NodeStore::Database::asyncFetch</a></div><div class="ttdeci">virtual void asyncFetch(uint256 const &amp;hash, std::uint32_t ledgerSeq, std::function&lt; void(std::shared_ptr&lt; NodeObject &gt; const &amp;)&gt; &amp;&amp;callback)</div><div class="ttdoc">Fetch an object without waiting.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00175">Database.cpp:175</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a57b89b559c083fde74a115a3df8f8046"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a57b89b559c083fde74a115a3df8f8046">ripple::NodeStore::Database::sync</a></div><div class="ttdeci">virtual void sync()=0</div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a04150d23aa2acaf016d4ca40bd10804a"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a04150d23aa2acaf016d4ca40bd10804a">ripple::NodeStore::Database::fetchSz_</a></div><div class="ttdeci">std::atomic&lt; std::uint32_t &gt; fetchSz_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00306">Database.h:306</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_affd86ea8d57875e1c9722fdf6a8f6326"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#affd86ea8d57875e1c9722fdf6a8f6326">ripple::NodeStore::Database::stop</a></div><div class="ttdeci">virtual void stop()</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00149">Database.cpp:149</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_affd86ea8d57875e1c9722fdf6a8f6326"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#affd86ea8d57875e1c9722fdf6a8f6326">ripple::NodeStore::Database::stop</a></div><div class="ttdeci">virtual void stop()</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00161">Database.cpp:161</a></div></div>
<div class="ttc" id="astructripple_1_1NodeStore_1_1FetchReport_html"><div class="ttname"><a href="structripple_1_1NodeStore_1_1FetchReport.html">ripple::NodeStore::FetchReport</a></div><div class="ttdoc">Contains information about a fetch operation.</div><div class="ttdef"><b>Definition:</b> <a href="ripple_2nodestore_2Scheduler_8h_source.html#l00032">ripple/nodestore/Scheduler.h:32</a></div></div>
<div class="ttc" id="afunction_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a7da2336581ee3348aad97c0d885658d0"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a7da2336581ee3348aad97c0d885658d0">ripple::NodeStore::Database::store</a></div><div class="ttdeci">virtual void store(NodeObjectType type, Blob &amp;&amp;data, uint256 const &amp;hash, std::uint32_t ledgerSeq)=0</div><div class="ttdoc">Store the object.</div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a7cb4eee79861b6a496fe6ddcd024a5f8"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a7cb4eee79861b6a496fe6ddcd024a5f8">ripple::NodeStore::Database::readStopping_</a></div><div class="ttdeci">std::atomic&lt; bool &gt; readStopping_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00369">Database.h:369</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_af5fd85ba304bf9fd6e5afd7f06025180"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#af5fd85ba304bf9fd6e5afd7f06025180">ripple::NodeStore::Database::readThreads_</a></div><div class="ttdeci">std::atomic&lt; int &gt; readThreads_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00370">Database.h:370</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a7cb4eee79861b6a496fe6ddcd024a5f8"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a7cb4eee79861b6a496fe6ddcd024a5f8">ripple::NodeStore::Database::readStopping_</a></div><div class="ttdeci">std::atomic&lt; bool &gt; readStopping_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00374">Database.h:374</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_af5fd85ba304bf9fd6e5afd7f06025180"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#af5fd85ba304bf9fd6e5afd7f06025180">ripple::NodeStore::Database::readThreads_</a></div><div class="ttdeci">std::atomic&lt; int &gt; readThreads_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00375">Database.h:375</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a89497b9b4c5530b58040931489015d30"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a89497b9b4c5530b58040931489015d30">ripple::NodeStore::Database::fetchHitCount_</a></div><div class="ttdeci">std::atomic&lt; std::uint32_t &gt; fetchHitCount_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00305">Database.h:305</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a4dc1dcc2a79b60c2c7de7f1bdf05cecf"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a4dc1dcc2a79b60c2c7de7f1bdf05cecf">ripple::NodeStore::Database::storeCount_</a></div><div class="ttdeci">std::atomic&lt; std::uint64_t &gt; storeCount_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00352">Database.h:352</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a4dc1dcc2a79b60c2c7de7f1bdf05cecf"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a4dc1dcc2a79b60c2c7de7f1bdf05cecf">ripple::NodeStore::Database::storeCount_</a></div><div class="ttdeci">std::atomic&lt; std::uint64_t &gt; storeCount_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00357">Database.h:357</a></div></div>
<div class="ttc" id="anamespaceripple_html_a356c68147333a9a48a344718038576d9"><div class="ttname"><a href="namespaceripple.html#a356c68147333a9a48a344718038576d9">ripple::uint256</a></div><div class="ttdeci">base_uint&lt; 256 &gt; uint256</div><div class="ttdef"><b>Definition:</b> <a href="base__uint_8h_source.html#l00543">base_uint.h:543</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_abdcb3e7fdaeae1252f850c0e2a4646c2"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#abdcb3e7fdaeae1252f850c0e2a4646c2">ripple::NodeStore::Database::updateFetchMetrics</a></div><div class="ttdeci">void updateFetchMetrics(uint64_t fetches, uint64_t hits, uint64_t duration)</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00344">Database.h:344</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a06fbf66d1f34a6162a17daf72e71eba9"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a06fbf66d1f34a6162a17daf72e71eba9">ripple::NodeStore::Database::readLock_</a></div><div class="ttdeci">std::mutex readLock_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00358">Database.h:358</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_abdcb3e7fdaeae1252f850c0e2a4646c2"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#abdcb3e7fdaeae1252f850c0e2a4646c2">ripple::NodeStore::Database::updateFetchMetrics</a></div><div class="ttdeci">void updateFetchMetrics(uint64_t fetches, uint64_t hits, uint64_t duration)</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00349">Database.h:349</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a06fbf66d1f34a6162a17daf72e71eba9"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a06fbf66d1f34a6162a17daf72e71eba9">ripple::NodeStore::Database::readLock_</a></div><div class="ttdeci">std::mutex readLock_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00363">Database.h:363</a></div></div>
<div class="ttc" id="aclassripple_1_1base__uint_html"><div class="ttname"><a href="classripple_1_1base__uint.html">ripple::base_uint&lt; 256 &gt;</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a24f47bc48e8d040c662611674898fe2e"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a24f47bc48e8d040c662611674898fe2e">ripple::NodeStore::Database::getName</a></div><div class="ttdeci">virtual std::string getName() const =0</div><div class="ttdoc">Retrieve the name associated with this backend.</div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a0f2ed25135bf1d2aa487a2b2dc5c85cd"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a0f2ed25135bf1d2aa487a2b2dc5c85cd">ripple::NodeStore::Database::getStoreSize</a></div><div class="ttdeci">std::uint64_t getStoreSize() const</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00200">Database.h:200</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a5dbc9808c511caeaaa7ce5c6b27276e6"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a5dbc9808c511caeaaa7ce5c6b27276e6">ripple::NodeStore::Database::storeSz_</a></div><div class="ttdeci">std::atomic&lt; std::uint64_t &gt; storeSz_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00353">Database.h:353</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a5dbc9808c511caeaaa7ce5c6b27276e6"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a5dbc9808c511caeaaa7ce5c6b27276e6">ripple::NodeStore::Database::storeSz_</a></div><div class="ttdeci">std::atomic&lt; std::uint64_t &gt; storeSz_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00358">Database.h:358</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_ace1c1b2ef66847e662ab3d6319b5ea5a"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#ace1c1b2ef66847e662ab3d6319b5ea5a">ripple::NodeStore::Database::firstLedgerSeq</a></div><div class="ttdeci">std::uint32_t firstLedgerSeq(std::uint32_t shardIndex) const noexcept</div><div class="ttdoc">Calculates the first ledger sequence for a given shard index.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00257">Database.h:257</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_af885d9fe877259a258481f0df20697cd"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#af885d9fe877259a258481f0df20697cd">ripple::NodeStore::Database::importInternal</a></div><div class="ttdeci">void importInternal(Backend &amp;dstBackend, Database &amp;srcDB)</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00175">Database.cpp:175</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_af885d9fe877259a258481f0df20697cd"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#af885d9fe877259a258481f0df20697cd">ripple::NodeStore::Database::importInternal</a></div><div class="ttdeci">void importInternal(Backend &amp;dstBackend, Database &amp;srcDB)</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00187">Database.cpp:187</a></div></div>
<div class="ttc" id="athread_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/thread.html">thread</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html"><div class="ttname"><a href="classripple_1_1Ledger.html">ripple::Ledger</a></div><div class="ttdoc">Holds a ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Ledger_8h_source.html#l00076">Ledger.h:76</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a438af3c0eba7891bb79d5c5dcb902556"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a438af3c0eba7891bb79d5c5dcb902556">ripple::NodeStore::Database::readCondVar_</a></div><div class="ttdeci">std::condition_variable readCondVar_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00359">Database.h:359</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a438af3c0eba7891bb79d5c5dcb902556"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a438af3c0eba7891bb79d5c5dcb902556">ripple::NodeStore::Database::readCondVar_</a></div><div class="ttdeci">std::condition_variable readCondVar_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00364">Database.h:364</a></div></div>
<div class="ttc" id="aclassbeast_1_1Journal_html"><div class="ttname"><a href="classbeast_1_1Journal.html">beast::Journal</a></div><div class="ttdoc">A generic endpoint for log messages.</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00058">Journal.h:58</a></div></div>
<div class="ttc" id="ainteger_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/integer.html">std::int32_t</a></div></div>
<div class="ttc" id="aatomic_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic&lt; std::uint32_t &gt;</a></div></div>
<div class="ttc" id="amap_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/map.html">std::map</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Scheduler_html"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Scheduler.html">ripple::NodeStore::Scheduler</a></div><div class="ttdoc">Scheduling for asynchronous backend activity.</div><div class="ttdef"><b>Definition:</b> <a href="ripple_2nodestore_2Scheduler_8h_source.html#l00060">ripple/nodestore/Scheduler.h:60</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a2e1cec1845007e7037214306b2c4bf45"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a2e1cec1845007e7037214306b2c4bf45">ripple::NodeStore::Database::~Database</a></div><div class="ttdeci">virtual ~Database()</div><div class="ttdoc">Destroy the node store.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00118">Database.cpp:118</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a2e1cec1845007e7037214306b2c4bf45"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a2e1cec1845007e7037214306b2c4bf45">ripple::NodeStore::Database::~Database</a></div><div class="ttdeci">virtual ~Database()</div><div class="ttdoc">Destroy the node store.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00130">Database.cpp:130</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a2b5174a0ffb315030b96815d6ac86eaf"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a2b5174a0ffb315030b96815d6ac86eaf">ripple::NodeStore::Database::for_each</a></div><div class="ttdeci">virtual void for_each(std::function&lt; void(std::shared_ptr&lt; NodeObject &gt;)&gt; f)=0</div><div class="ttdoc">Visit every object in the database This is usually called during import.</div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a40a0e5a30857e9ba3c7561748af31e29"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a40a0e5a30857e9ba3c7561748af31e29">ripple::NodeStore::Database::sweep</a></div><div class="ttdeci">virtual void sweep()=0</div><div class="ttdoc">Remove expired entries from the positive and negative caches.</div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a090e39b8c6733b0dc4553f9e8e705605"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a090e39b8c6733b0dc4553f9e8e705605">ripple::NodeStore::Database::storeStats</a></div><div class="ttdeci">void storeStats(std::uint64_t count, std::uint64_t sz)</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00328">Database.h:328</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a090e39b8c6733b0dc4553f9e8e705605"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a090e39b8c6733b0dc4553f9e8e705605">ripple::NodeStore::Database::storeStats</a></div><div class="ttdeci">void storeStats(std::uint64_t count, std::uint64_t sz)</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00333">Database.h:333</a></div></div>
<div class="ttc" id="anamespaceripple_1_1NodeStore_html_a6334ed426a8dbe335761b9d81ab6f19f"><div class="ttname"><a href="namespaceripple_1_1NodeStore.html#a6334ed426a8dbe335761b9d81ab6f19f">ripple::NodeStore::FetchType</a></div><div class="ttdeci">FetchType</div><div class="ttdef"><b>Definition:</b> <a href="ripple_2nodestore_2Scheduler_8h_source.html#l00029">ripple/nodestore/Scheduler.h:29</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a6bb055f14d1d28163e931ed73d94a1e1"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a6bb055f14d1d28163e931ed73d94a1e1">ripple::NodeStore::Database::isStopping</a></div><div class="ttdeci">bool isStopping() const</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00130">Database.cpp:130</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a6bb055f14d1d28163e931ed73d94a1e1"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a6bb055f14d1d28163e931ed73d94a1e1">ripple::NodeStore::Database::isStopping</a></div><div class="ttdeci">bool isStopping() const</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00142">Database.cpp:142</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a7c4180512ff87a967de8091a019dc9f9"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a7c4180512ff87a967de8091a019dc9f9">ripple::NodeStore::Database::threadEntry</a></div><div class="ttdeci">void threadEntry()</div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_aba0e02eea82d047dde49d56f362347bf"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#aba0e02eea82d047dde49d56f362347bf">ripple::NodeStore::Database::getCounters</a></div><div class="ttdeci">virtual std::optional&lt; Backend::Counters&lt; std::uint64_t &gt; &gt; getCounters() const</div><div class="ttdoc">Retrieve backend read and write stats.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00395">Database.h:395</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_aba0e02eea82d047dde49d56f362347bf"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#aba0e02eea82d047dde49d56f362347bf">ripple::NodeStore::Database::getCounters</a></div><div class="ttdeci">virtual std::optional&lt; Backend::Counters&lt; std::uint64_t &gt; &gt; getCounters() const</div><div class="ttdoc">Retrieve backend read and write stats.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00401">Database.h:401</a></div></div>
<div class="ttc" id="anamespaceripple_html"><div class="ttname"><a href="namespaceripple.html">ripple</a></div><div class="ttdoc">Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.</div><div class="ttdef"><b>Definition:</b> <a href="RCLCensorshipDetector_8h_source.html#l00029">RCLCensorshipDetector.h:29</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_aad7aa12d0cc01006120761d23312d428"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#aad7aa12d0cc01006120761d23312d428">ripple::NodeStore::Database::storeLedger</a></div><div class="ttdeci">virtual bool storeLedger(std::shared_ptr&lt; Ledger const &gt; const &amp;srcLedger)=0</div><div class="ttdoc">Store a ledger from a different database.</div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a0d7c3d303adce36199b2c67c4df8a2de"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a0d7c3d303adce36199b2c67c4df8a2de">ripple::NodeStore::Database::j_</a></div><div class="ttdeci">const beast::Journal j_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00301">Database.h:301</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a4ef10652a3c55080a2aef5f0e59dedfa"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a4ef10652a3c55080a2aef5f0e59dedfa">ripple::NodeStore::Database::seqToShardIndex</a></div><div class="ttdeci">std::uint32_t seqToShardIndex(std::uint32_t ledgerSeq) const noexcept</div><div class="ttdoc">Calculates the shard index for a given ledger sequence.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00283">Database.h:283</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a83e7506a1b302966445210ebe56c3905"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a83e7506a1b302966445210ebe56c3905">ripple::NodeStore::Database::storeDurationUs_</a></div><div class="ttdeci">std::atomic&lt; std::uint64_t &gt; storeDurationUs_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00356">Database.h:356</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a83e7506a1b302966445210ebe56c3905"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a83e7506a1b302966445210ebe56c3905">ripple::NodeStore::Database::storeDurationUs_</a></div><div class="ttdeci">std::atomic&lt; std::uint64_t &gt; storeDurationUs_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00361">Database.h:361</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_adff9d5837626015682eb551d645d6afe"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#adff9d5837626015682eb551d645d6afe">ripple::NodeStore::Database::earliestShardIndex</a></div><div class="ttdeci">std::uint32_t earliestShardIndex() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00246">Database.h:246</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a023779f42976b9c22da655bf9fd4f4a5"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a023779f42976b9c22da655bf9fd4f4a5">ripple::NodeStore::Database::getCountsJson</a></div><div class="ttdeci">void getCountsJson(Json::Value &amp;obj)</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00340">Database.cpp:340</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a023779f42976b9c22da655bf9fd4f4a5"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a023779f42976b9c22da655bf9fd4f4a5">ripple::NodeStore::Database::getCountsJson</a></div><div class="ttdeci">void getCountsJson(Json::Value &amp;obj)</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00352">Database.cpp:352</a></div></div>
<div class="ttc" id="acondition_variable_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/condition_variable.html">condition_variable</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_aa59aca23acd391245f0b403df74ac8be"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#aa59aca23acd391245f0b403df74ac8be">ripple::NodeStore::Database::earliestLedgerSeq_</a></div><div class="ttdeci">const std::uint32_t earliestLedgerSeq_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00322">Database.h:322</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_ad28a451b16bc693364a1074c0f767f1f"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#ad28a451b16bc693364a1074c0f767f1f">ripple::NodeStore::Database::getFetchHitCount</a></div><div class="ttdeci">std::uint32_t getFetchHitCount() const</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00194">Database.h:194</a></div></div>
<div class="ttc" id="aoptional_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a></div></div>
<div class="ttc" id="amutex_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/mutex.html">std::mutex</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a569a3e61f4c7d272d96845b3a12c479a"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a569a3e61f4c7d272d96845b3a12c479a">ripple::NodeStore::Database::earliestShardIndex_</a></div><div class="ttdeci">const std::uint32_t earliestShardIndex_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00325">Database.h:325</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a780601a4dce8d688490a24a61f8cea9e"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a780601a4dce8d688490a24a61f8cea9e">ripple::NodeStore::Database::fetchNodeObject</a></div><div class="ttdeci">std::shared_ptr&lt; NodeObject &gt; fetchNodeObject(uint256 const &amp;hash, std::uint32_t ledgerSeq=0, FetchType fetchType=FetchType::synchronous, bool duplicate=false)</div><div class="ttdoc">Fetch a node object.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00214">Database.cpp:214</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a780601a4dce8d688490a24a61f8cea9e"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a780601a4dce8d688490a24a61f8cea9e">ripple::NodeStore::Database::fetchNodeObject</a></div><div class="ttdeci">std::shared_ptr&lt; NodeObject &gt; fetchNodeObject(uint256 const &amp;hash, std::uint32_t ledgerSeq=0, FetchType fetchType=FetchType::synchronous, bool duplicate=false)</div><div class="ttdoc">Fetch a node object.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00226">Database.cpp:226</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a0e5bc58351ded4683d7207383794a484"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a0e5bc58351ded4683d7207383794a484">ripple::NodeStore::Database::scheduler_</a></div><div class="ttdeci">Scheduler &amp; scheduler_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00302">Database.h:302</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_ad9f741a64dae54f4b30f31fb68565283"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#ad9f741a64dae54f4b30f31fb68565283">ripple::NodeStore::Database::runningThreads_</a></div><div class="ttdeci">std::atomic&lt; int &gt; runningThreads_</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00376">Database.h:376</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_af32a551caa69e8108bdd9a9d74dd774e"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#af32a551caa69e8108bdd9a9d74dd774e">ripple::NodeStore::Database::getFetchTotalCount</a></div><div class="ttdeci">std::uint32_t getFetchTotalCount() const</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00188">Database.h:188</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_ae10c8f2c5e0676a704bd28486b7640af"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#ae10c8f2c5e0676a704bd28486b7640af">ripple::NodeStore::Database::earliestLedgerSeq</a></div><div class="ttdeci">std::uint32_t earliestLedgerSeq() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00238">Database.h:238</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_ae3e615caca1a493f80515d137b315fa8"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#ae3e615caca1a493f80515d137b315fa8">ripple::NodeStore::Database::isSameDB</a></div><div class="ttdeci">virtual bool isSameDB(std::uint32_t s1, std::uint32_t s2)=0</div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_aa76d0533ffd4bb80271a11b36de85ed2"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#aa76d0533ffd4bb80271a11b36de85ed2">ripple::NodeStore::Database::maxLedgers</a></div><div class="ttdeci">std::uint32_t maxLedgers(std::uint32_t shardIndex) const noexcept</div><div class="ttdoc">Calculates the maximum ledgers for a given shard index.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00136">Database.cpp:136</a></div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_aa76d0533ffd4bb80271a11b36de85ed2"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#aa76d0533ffd4bb80271a11b36de85ed2">ripple::NodeStore::Database::maxLedgers</a></div><div class="ttdeci">std::uint32_t maxLedgers(std::uint32_t shardIndex) const noexcept</div><div class="ttdoc">Calculates the maximum ledgers for a given shard index.</div><div class="ttdef"><b>Definition:</b> <a href="Database_8cpp_source.html#l00148">Database.cpp:148</a></div></div>
<div class="ttc" id="anamespaceripple_1_1NodeStore_html_a6334ed426a8dbe335761b9d81ab6f19fa1303c4f41a88e739bc859612321b189f"><div class="ttname"><a href="namespaceripple_1_1NodeStore.html#a6334ed426a8dbe335761b9d81ab6f19fa1303c4f41a88e739bc859612321b189f">ripple::NodeStore::FetchType::synchronous</a></div><div class="ttdeci">@ synchronous</div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_a6fd8c555e59355e643a40aaad4d83be6"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#a6fd8c555e59355e643a40aaad4d83be6">ripple::NodeStore::Database::importDatabase</a></div><div class="ttdeci">virtual void importDatabase(Database &amp;source)=0</div><div class="ttdoc">Import objects from another database.</div></div>
<div class="ttc" id="aclassripple_1_1NodeStore_1_1Database_html_aa65b806f875f06f0b17c83d987118c63"><div class="ttname"><a href="classripple_1_1NodeStore_1_1Database.html#aa65b806f875f06f0b17c83d987118c63">ripple::NodeStore::Database::ledgersPerShard</a></div><div class="ttdeci">std::uint32_t ledgersPerShard() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="Database_8h_source.html#l00230">Database.h:230</a></div></div>