Files
rippled/classripple_1_1NodeStore_1_1Database.html
2020-11-20 19:16:46 +00:00

2511 lines
148 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>rippled: ripple::NodeStore::Database Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">rippled
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceripple.html">ripple</a></li><li class="navelem"><a class="el" href="namespaceripple_1_1NodeStore.html">NodeStore</a></li><li class="navelem"><a class="el" href="classripple_1_1NodeStore_1_1Database.html">Database</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#pri-types">Private Types</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classripple_1_1NodeStore_1_1Database-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">ripple::NodeStore::Database Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p>Persistency layer for <a class="el" href="classripple_1_1NodeObject.html" title="A simple object that the Ledger uses to store entries.">NodeObject</a>.
<a href="classripple_1_1NodeStore_1_1Database.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for ripple::NodeStore::Database:</div>
<div class="dyncontent">
<div class="center"><img src="classripple_1_1NodeStore_1_1Database__inherit__graph.png" border="0" usemap="#ripple_1_1NodeStore_1_1Database_inherit__map" alt="Inheritance graph"/></div>
<map name="ripple_1_1NodeStore_1_1Database_inherit__map" id="ripple_1_1NodeStore_1_1Database_inherit__map">
<area shape="rect" title="Persistency layer for NodeObject." alt="" coords="185,71,328,112"/>
<area shape="rect" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html" title=" " alt="" coords="376,5,519,47"/>
<area shape="rect" href="classripple_1_1NodeStore_1_1DatabaseRotating.html" title=" " alt="" coords="376,71,519,112"/>
<area shape="rect" href="classripple_1_1NodeStore_1_1DatabaseShard.html" title="A collection of historical shards." alt="" coords="376,136,519,177"/>
<area shape="rect" href="classripple_1_1Stoppable.html" title="Provides an interface for starting and stopping." alt="" coords="5,78,137,105"/>
<area shape="rect" href="classripple_1_1NodeStore_1_1DatabaseRotatingImp.html" title=" " alt="" coords="567,71,729,112"/>
<area shape="rect" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html" title=" " alt="" coords="575,136,721,177"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for ripple::NodeStore::Database:</div>
<div class="dyncontent">
<div class="center"><img src="classripple_1_1NodeStore_1_1Database__coll__graph.png" border="0" usemap="#ripple_1_1NodeStore_1_1Database_coll__map" alt="Collaboration graph"/></div>
<map name="ripple_1_1NodeStore_1_1Database_coll__map" id="ripple_1_1NodeStore_1_1Database_coll__map">
<area shape="rect" title="Persistency layer for NodeObject." alt="" coords="1485,695,1628,737"/>
<area shape="rect" href="classripple_1_1Stoppable.html" title="Provides an interface for starting and stopping." alt="" coords="1149,395,1281,421"/>
<area shape="rect" href="classripple_1_1RootStoppable.html" title=" " alt="" coords="1476,196,1637,223"/>
<area shape="rect" href="structripple_1_1Stoppable_1_1Child.html" title=" " alt="" coords="1487,397,1627,438"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/atomic/atomic.html" title=" " alt="" coords="751,359,905,385"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/thread/condition_variable.html" title=" " alt="" coords="743,272,913,299"/>
<area shape="rect" href="classripple_1_1ClosureCounter.html" title=" " alt="" coords="1132,111,1299,153"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/thread/mutex.html" title="STL class." alt="" coords="782,131,874,157"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/atomic/atomic.html" title=" " alt="" coords="757,5,899,32"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/string/basic_string.html" title="STL class." alt="" coords="785,433,871,460"/>
<area shape="rect" href="classbeast_1_1LockFreeStack_1_1Node.html" title=" " alt="" coords="5,475,184,517"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/atomic/atomic.html" title=" " alt="" coords="297,485,488,526"/>
<area shape="rect" href="classbeast_1_1LockFreeStack.html" title=" " alt="" coords="749,485,907,526"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/types/integer.html" title=" " alt="" coords="43,681,146,708"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/container/map.html" title=" " alt="" coords="1130,695,1301,737"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/container/array.html" title=" " alt="" coords="309,822,477,863"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/atomic/atomic.html" title=" " alt="" coords="512,933,719,960"/>
<area shape="rect" href="classripple_1_1base__uint.html" title=" " alt="" coords="757,715,899,757"/>
<area shape="rect" href="classripple_1_1base__uint.html" title=" " alt="" coords="757,883,899,925"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/types/size_t.html" title=" " alt="" coords="349,747,437,773"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/container/vector.html" title=" " alt="" coords="1120,772,1311,799"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/thread/thread.html" title="STL class." alt="" coords="782,781,874,808"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/atomic/atomic.html" title=" " alt="" coords="1112,832,1319,859"/>
<area shape="rect" href="http://en.cppreference.com/w/cpp/types/integer.html" title=" " alt="" coords="777,832,879,859"/>
<area shape="rect" href="classripple_1_1NodeStore_1_1Scheduler.html" title="Scheduling for asynchronous backend activity." alt="" coords="1144,577,1287,618"/>
<area shape="rect" href="classbeast_1_1Journal.html" title="A generic endpoint for log messages." alt="" coords="1160,1000,1271,1027"/>
<area shape="rect" href="classbeast_1_1Journal_1_1Sink.html" title="Abstraction for the underlying message destination." alt="" coords="755,1000,901,1027"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:acd7da6cb652b11ecd6b40fb79d6f8b2f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#acd7da6cb652b11ecd6b40fb79d6f8b2f">Database</a> ()=delete</td></tr>
<tr class="separator:acd7da6cb652b11ecd6b40fb79d6f8b2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a825a775a2e46e587e5dc02c4e619625a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a825a775a2e46e587e5dc02c4e619625a">Database</a> (<a class="elRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> name, <a class="el" href="classripple_1_1Stoppable.html">Stoppable</a> &amp;parent, <a class="el" href="classripple_1_1NodeStore_1_1Scheduler.html">Scheduler</a> &amp;scheduler, int readThreads, <a class="el" href="classripple_1_1Section.html">Section</a> const &amp;config, <a class="el" href="classbeast_1_1Journal.html">beast::Journal</a> j)</td></tr>
<tr class="memdesc:a825a775a2e46e587e5dc02c4e619625a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct the node store. <a href="classripple_1_1NodeStore_1_1Database.html#a825a775a2e46e587e5dc02c4e619625a">More...</a><br /></td></tr>
<tr class="separator:a825a775a2e46e587e5dc02c4e619625a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e1cec1845007e7037214306b2c4bf45"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a2e1cec1845007e7037214306b2c4bf45">~Database</a> ()</td></tr>
<tr class="memdesc:a2e1cec1845007e7037214306b2c4bf45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy the node store. <a href="classripple_1_1NodeStore_1_1Database.html#a2e1cec1845007e7037214306b2c4bf45">More...</a><br /></td></tr>
<tr class="separator:a2e1cec1845007e7037214306b2c4bf45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24f47bc48e8d040c662611674898fe2e"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a24f47bc48e8d040c662611674898fe2e">getName</a> () const =0</td></tr>
<tr class="memdesc:a24f47bc48e8d040c662611674898fe2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the name associated with this backend. <a href="classripple_1_1NodeStore_1_1Database.html#a24f47bc48e8d040c662611674898fe2e">More...</a><br /></td></tr>
<tr class="separator:a24f47bc48e8d040c662611674898fe2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1946e6706aecab34d6ea2207a33f6bc"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#ac1946e6706aecab34d6ea2207a33f6bc">import</a> (<a class="el" href="classripple_1_1NodeStore_1_1Database.html">Database</a> &amp;source)=0</td></tr>
<tr class="memdesc:ac1946e6706aecab34d6ea2207a33f6bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Import objects from another database. <a href="classripple_1_1NodeStore_1_1Database.html#ac1946e6706aecab34d6ea2207a33f6bc">More...</a><br /></td></tr>
<tr class="separator:ac1946e6706aecab34d6ea2207a33f6bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aada6493667fd17dd426f6545bf4cac93"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::int32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#aada6493667fd17dd426f6545bf4cac93">getWriteLoad</a> () const =0</td></tr>
<tr class="memdesc:aada6493667fd17dd426f6545bf4cac93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the estimated number of pending write operations. <a href="classripple_1_1NodeStore_1_1Database.html#aada6493667fd17dd426f6545bf4cac93">More...</a><br /></td></tr>
<tr class="separator:aada6493667fd17dd426f6545bf4cac93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7da2336581ee3348aad97c0d885658d0"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a7da2336581ee3348aad97c0d885658d0">store</a> (<a class="el" href="namespaceripple.html#a57d7e7b27df7e719fdf5569f96be60a3">NodeObjectType</a> type, <a class="el" href="namespaceripple.html#ab1f2184bb5938b5508798cd47a561a21">Blob</a> &amp;&amp;data, <a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;hash, <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ledgerSeq)=0</td></tr>
<tr class="memdesc:a7da2336581ee3348aad97c0d885658d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store the object. <a href="classripple_1_1NodeStore_1_1Database.html#a7da2336581ee3348aad97c0d885658d0">More...</a><br /></td></tr>
<tr class="separator:a7da2336581ee3348aad97c0d885658d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c2e13367bf02755107ee7ca3ad756be"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1NodeObject.html">NodeObject</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a4c2e13367bf02755107ee7ca3ad756be">fetchNodeObject</a> (<a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;hash, <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ledgerSeq=0, <a class="el" href="namespaceripple_1_1NodeStore.html#a6334ed426a8dbe335761b9d81ab6f19f">FetchType</a> fetchType=<a class="el" href="namespaceripple_1_1NodeStore.html#a6334ed426a8dbe335761b9d81ab6f19fa1303c4f41a88e739bc859612321b189f">FetchType::synchronous</a>)</td></tr>
<tr class="memdesc:a4c2e13367bf02755107ee7ca3ad756be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a node object. <a href="classripple_1_1NodeStore_1_1Database.html#a4c2e13367bf02755107ee7ca3ad756be">More...</a><br /></td></tr>
<tr class="separator:a4c2e13367bf02755107ee7ca3ad756be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abff61416b213b5ab28e482a61a9c80f8"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#abff61416b213b5ab28e482a61a9c80f8">asyncFetch</a> (<a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;hash, <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ledgerSeq, <a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1NodeObject.html">NodeObject</a> &gt; &amp;nodeObject)=0</td></tr>
<tr class="memdesc:abff61416b213b5ab28e482a61a9c80f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch an object without waiting. <a href="classripple_1_1NodeStore_1_1Database.html#abff61416b213b5ab28e482a61a9c80f8">More...</a><br /></td></tr>
<tr class="separator:abff61416b213b5ab28e482a61a9c80f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad7aa12d0cc01006120761d23312d428"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#aad7aa12d0cc01006120761d23312d428">storeLedger</a> (<a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &gt; const &amp;srcLedger)=0</td></tr>
<tr class="memdesc:aad7aa12d0cc01006120761d23312d428"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store a ledger from a different database. <a href="classripple_1_1NodeStore_1_1Database.html#aad7aa12d0cc01006120761d23312d428">More...</a><br /></td></tr>
<tr class="separator:aad7aa12d0cc01006120761d23312d428"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a332e25e0d08606b9eb501b9f83755dce"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a332e25e0d08606b9eb501b9f83755dce">waitReads</a> ()</td></tr>
<tr class="memdesc:a332e25e0d08606b9eb501b9f83755dce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for all currently pending async reads to complete. <a href="classripple_1_1NodeStore_1_1Database.html#a332e25e0d08606b9eb501b9f83755dce">More...</a><br /></td></tr>
<tr class="separator:a332e25e0d08606b9eb501b9f83755dce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2dcc2b3feb4fa641f2c3704915b377bb"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a2dcc2b3feb4fa641f2c3704915b377bb">getDesiredAsyncReadCount</a> (<a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ledgerSeq)=0</td></tr>
<tr class="memdesc:a2dcc2b3feb4fa641f2c3704915b377bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum number of async reads the node store prefers. <a href="classripple_1_1NodeStore_1_1Database.html#a2dcc2b3feb4fa641f2c3704915b377bb">More...</a><br /></td></tr>
<tr class="separator:a2dcc2b3feb4fa641f2c3704915b377bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a105cc1993a6e21fa10b5f35ec837ac89"><td class="memItemLeft" align="right" valign="top">virtual float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a105cc1993a6e21fa10b5f35ec837ac89">getCacheHitRate</a> ()=0</td></tr>
<tr class="memdesc:a105cc1993a6e21fa10b5f35ec837ac89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the positive cache hits to total attempts ratio. <a href="classripple_1_1NodeStore_1_1Database.html#a105cc1993a6e21fa10b5f35ec837ac89">More...</a><br /></td></tr>
<tr class="separator:a105cc1993a6e21fa10b5f35ec837ac89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3805d90fbd3ccdaec2a4c7c4ab109eac"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a3805d90fbd3ccdaec2a4c7c4ab109eac">tune</a> (int size, <a class="elRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::seconds</a> age)=0</td></tr>
<tr class="memdesc:a3805d90fbd3ccdaec2a4c7c4ab109eac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the maximum number of entries and maximum cache age for both caches. <a href="classripple_1_1NodeStore_1_1Database.html#a3805d90fbd3ccdaec2a4c7c4ab109eac">More...</a><br /></td></tr>
<tr class="separator:a3805d90fbd3ccdaec2a4c7c4ab109eac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40a0e5a30857e9ba3c7561748af31e29"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a40a0e5a30857e9ba3c7561748af31e29">sweep</a> ()=0</td></tr>
<tr class="memdesc:a40a0e5a30857e9ba3c7561748af31e29"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove expired entries from the positive and negative caches. <a href="classripple_1_1NodeStore_1_1Database.html#a40a0e5a30857e9ba3c7561748af31e29">More...</a><br /></td></tr>
<tr class="separator:a40a0e5a30857e9ba3c7561748af31e29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ccd565f5a4a5296c049a2a0886f363f"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a4ccd565f5a4a5296c049a2a0886f363f">getStoreCount</a> () const</td></tr>
<tr class="memdesc:a4ccd565f5a4a5296c049a2a0886f363f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gather statistics pertaining to read and write activities. <a href="classripple_1_1NodeStore_1_1Database.html#a4ccd565f5a4a5296c049a2a0886f363f">More...</a><br /></td></tr>
<tr class="separator:a4ccd565f5a4a5296c049a2a0886f363f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af32a551caa69e8108bdd9a9d74dd774e"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#af32a551caa69e8108bdd9a9d74dd774e">getFetchTotalCount</a> () const</td></tr>
<tr class="separator:af32a551caa69e8108bdd9a9d74dd774e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad28a451b16bc693364a1074c0f767f1f"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#ad28a451b16bc693364a1074c0f767f1f">getFetchHitCount</a> () const</td></tr>
<tr class="separator:ad28a451b16bc693364a1074c0f767f1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f2ed25135bf1d2aa487a2b2dc5c85cd"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a0f2ed25135bf1d2aa487a2b2dc5c85cd">getStoreSize</a> () const</td></tr>
<tr class="separator:a0f2ed25135bf1d2aa487a2b2dc5c85cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ebb38ac8562f6b1673a9f3b8216efce"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a8ebb38ac8562f6b1673a9f3b8216efce">getFetchSize</a> () const</td></tr>
<tr class="separator:a8ebb38ac8562f6b1673a9f3b8216efce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef142866cf7ca2a96d17efc55f8dcc19"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#aef142866cf7ca2a96d17efc55f8dcc19">fdRequired</a> () const</td></tr>
<tr class="memdesc:aef142866cf7ca2a96d17efc55f8dcc19"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of file descriptors the database expects to need. <a href="classripple_1_1NodeStore_1_1Database.html#aef142866cf7ca2a96d17efc55f8dcc19">More...</a><br /></td></tr>
<tr class="separator:aef142866cf7ca2a96d17efc55f8dcc19"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0923c37ede6c7ffeca02f59f566cf588"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a0923c37ede6c7ffeca02f59f566cf588">onStop</a> () override</td></tr>
<tr class="memdesc:a0923c37ede6c7ffeca02f59f566cf588"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override called when the stop notification is issued. <a href="classripple_1_1NodeStore_1_1Database.html#a0923c37ede6c7ffeca02f59f566cf588">More...</a><br /></td></tr>
<tr class="separator:a0923c37ede6c7ffeca02f59f566cf588"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae84b30410af69ec7e7adcdb6265a4af8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#ae84b30410af69ec7e7adcdb6265a4af8">onChildrenStopped</a> () override</td></tr>
<tr class="memdesc:ae84b30410af69ec7e7adcdb6265a4af8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override called when all children have stopped. <a href="classripple_1_1NodeStore_1_1Database.html#ae84b30410af69ec7e7adcdb6265a4af8">More...</a><br /></td></tr>
<tr class="separator:ae84b30410af69ec7e7adcdb6265a4af8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51f2d9197ceae15155509404ce09d9a7"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a51f2d9197ceae15155509404ce09d9a7">earliestLedgerSeq</a> () const</td></tr>
<tr class="separator:a51f2d9197ceae15155509404ce09d9a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9b6cb02b4e1128bd2c4e1a81c9d695c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1RootStoppable.html">RootStoppable</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#ae9b6cb02b4e1128bd2c4e1a81c9d695c">getRoot</a> ()</td></tr>
<tr class="separator:ae9b6cb02b4e1128bd2c4e1a81c9d695c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adea135697761febf430a8628814c7902"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#adea135697761febf430a8628814c7902">setParent</a> (<a class="el" href="classripple_1_1Stoppable.html">Stoppable</a> &amp;parent)</td></tr>
<tr class="memdesc:adea135697761febf430a8628814c7902"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the parent of this <a class="el" href="classripple_1_1Stoppable.html" title="Provides an interface for starting and stopping.">Stoppable</a>. <a href="classripple_1_1Stoppable.html#adea135697761febf430a8628814c7902">More...</a><br /></td></tr>
<tr class="separator:adea135697761febf430a8628814c7902"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a836b8737444ef1133c3596e61010fa80"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a836b8737444ef1133c3596e61010fa80">isStopping</a> () const</td></tr>
<tr class="memdesc:a836b8737444ef1133c3596e61010fa80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns <code>true</code> if the stoppable should stop. <a href="classripple_1_1Stoppable.html#a836b8737444ef1133c3596e61010fa80">More...</a><br /></td></tr>
<tr class="separator:a836b8737444ef1133c3596e61010fa80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1e1447ecb573d2341c8a71afd3e76da"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#af1e1447ecb573d2341c8a71afd3e76da">isStopped</a> () const</td></tr>
<tr class="memdesc:af1e1447ecb573d2341c8a71afd3e76da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns <code>true</code> if the requested stop has completed. <a href="classripple_1_1Stoppable.html#af1e1447ecb573d2341c8a71afd3e76da">More...</a><br /></td></tr>
<tr class="separator:af1e1447ecb573d2341c8a71afd3e76da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ec6fda89ff8bc63251a9c3682311e5d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a9ec6fda89ff8bc63251a9c3682311e5d">areChildrenStopped</a> () const</td></tr>
<tr class="memdesc:a9ec6fda89ff8bc63251a9c3682311e5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns <code>true</code> if all children have stopped. <a href="classripple_1_1Stoppable.html#a9ec6fda89ff8bc63251a9c3682311e5d">More...</a><br /></td></tr>
<tr class="separator:a9ec6fda89ff8bc63251a9c3682311e5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc824cd8bdcffbac3c919c7e6009dea5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceripple.html#adf17c8e58c57ecf0ed6cbc7ee1c2ab22">JobCounter</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#acc824cd8bdcffbac3c919c7e6009dea5">jobCounter</a> ()</td></tr>
<tr class="separator:acc824cd8bdcffbac3c919c7e6009dea5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca4a925fd0df7e3a3bca51c9593e6a6e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#aca4a925fd0df7e3a3bca51c9593e6a6e">alertable_sleep_until</a> (std::chrono::system_clock::time_point const &amp;t)</td></tr>
<tr class="memdesc:aca4a925fd0df7e3a3bca51c9593e6a6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sleep or wake up on stop. <a href="classripple_1_1Stoppable.html#aca4a925fd0df7e3a3bca51c9593e6a6e">More...</a><br /></td></tr>
<tr class="separator:aca4a925fd0df7e3a3bca51c9593e6a6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:adb9c1d15c7638e1448be9f5a98563f6b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#adb9c1d15c7638e1448be9f5a98563f6b">stopReadThreads</a> ()</td></tr>
<tr class="separator:adb9c1d15c7638e1448be9f5a98563f6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a090e39b8c6733b0dc4553f9e8e705605"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a090e39b8c6733b0dc4553f9e8e705605">storeStats</a> (<a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a> count, <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a> sz)</td></tr>
<tr class="separator:a090e39b8c6733b0dc4553f9e8e705605"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7974d49e283384c9ba01a5048c80c11"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#ab7974d49e283384c9ba01a5048c80c11">asyncFetch</a> (<a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;hash, <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ledgerSeq)</td></tr>
<tr class="separator:ab7974d49e283384c9ba01a5048c80c11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af885d9fe877259a258481f0df20697cd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#af885d9fe877259a258481f0df20697cd">importInternal</a> (<a class="el" href="classripple_1_1NodeStore_1_1Backend.html">Backend</a> &amp;dstBackend, <a class="el" href="classripple_1_1NodeStore_1_1Database.html">Database</a> &amp;srcDB)</td></tr>
<tr class="separator:af885d9fe877259a258481f0df20697cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac401404af7ef3c9fd0954cac802844a7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#ac401404af7ef3c9fd0954cac802844a7">storeLedger</a> (<a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &amp;srcLedger, <a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1NodeStore_1_1Backend.html">Backend</a> &gt; dstBackend, <a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1TaggedCache.html">TaggedCache</a>&lt; <a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>, <a class="el" href="classripple_1_1NodeObject.html">NodeObject</a> &gt;&gt; dstPCache, <a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1KeyCache.html">KeyCache</a>&lt; <a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> &gt;&gt; dstNCache)</td></tr>
<tr class="separator:ac401404af7ef3c9fd0954cac802844a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65a95f9c14637491df60d3a07518fa09"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a65a95f9c14637491df60d3a07518fa09">stopped</a> ()</td></tr>
<tr class="memdesc:a65a95f9c14637491df60d3a07518fa09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by derived classes to indicate that the stoppable has stopped. <a href="classripple_1_1Stoppable.html#a65a95f9c14637491df60d3a07518fa09">More...</a><br /></td></tr>
<tr class="separator:a65a95f9c14637491df60d3a07518fa09"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a0d7c3d303adce36199b2c67c4df8a2de"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classbeast_1_1Journal.html">beast::Journal</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a0d7c3d303adce36199b2c67c4df8a2de">j_</a></td></tr>
<tr class="separator:a0d7c3d303adce36199b2c67c4df8a2de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e5bc58351ded4683d7207383794a484"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1NodeStore_1_1Scheduler.html">Scheduler</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a0e5bc58351ded4683d7207383794a484">scheduler_</a></td></tr>
<tr class="separator:a0e5bc58351ded4683d7207383794a484"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a730a87cf8b617a8afb30e2531ede0f81"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a730a87cf8b617a8afb30e2531ede0f81">fdRequired_</a> {0}</td></tr>
<tr class="separator:a730a87cf8b617a8afb30e2531ede0f81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89497b9b4c5530b58040931489015d30"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic</a>&lt; <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a89497b9b4c5530b58040931489015d30">fetchHitCount_</a> {0}</td></tr>
<tr class="separator:a89497b9b4c5530b58040931489015d30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04150d23aa2acaf016d4ca40bd10804a"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic</a>&lt; <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a04150d23aa2acaf016d4ca40bd10804a">fetchSz_</a> {0}</td></tr>
<tr class="separator:a04150d23aa2acaf016d4ca40bd10804a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-types"></a>
Private Types</h2></td></tr>
<tr class="memitem:a43594a8835ccb53d7b80983694d26cad"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a43594a8835ccb53d7b80983694d26cad">Children</a> = <a class="el" href="classbeast_1_1LockFreeStack.html">beast::LockFreeStack</a>&lt; <a class="el" href="structripple_1_1Stoppable_1_1Child.html">Child</a> &gt;</td></tr>
<tr class="separator:a43594a8835ccb53d7b80983694d26cad"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a3f629d9f90e843367887aee6f52f6e1e"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1NodeObject.html">NodeObject</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a3f629d9f90e843367887aee6f52f6e1e">fetchNodeObject</a> (<a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;hash, <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ledgerSeq, <a class="el" href="structripple_1_1NodeStore_1_1FetchReport.html">FetchReport</a> &amp;fetchReport)=0</td></tr>
<tr class="separator:a3f629d9f90e843367887aee6f52f6e1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b5174a0ffb315030b96815d6ac86eaf"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a2b5174a0ffb315030b96815d6ac86eaf">for_each</a> (<a class="elRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a>&lt; void(<a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1NodeObject.html">NodeObject</a> &gt;)&gt; f)=0</td></tr>
<tr class="memdesc:a2b5174a0ffb315030b96815d6ac86eaf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visit every object in the database This is usually called during import. <a href="classripple_1_1NodeStore_1_1Database.html#a2b5174a0ffb315030b96815d6ac86eaf">More...</a><br /></td></tr>
<tr class="separator:a2b5174a0ffb315030b96815d6ac86eaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c4180512ff87a967de8091a019dc9f9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a7c4180512ff87a967de8091a019dc9f9">threadEntry</a> ()</td></tr>
<tr class="separator:a7c4180512ff87a967de8091a019dc9f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2a5544b4bfc0dccdc6a2a46f6ff5d84"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#ab2a5544b4bfc0dccdc6a2a46f6ff5d84">onPrepare</a> ()</td></tr>
<tr class="memdesc:ab2a5544b4bfc0dccdc6a2a46f6ff5d84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override called during preparation. <a href="classripple_1_1Stoppable.html#ab2a5544b4bfc0dccdc6a2a46f6ff5d84">More...</a><br /></td></tr>
<tr class="separator:ab2a5544b4bfc0dccdc6a2a46f6ff5d84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f24b7fcb7e8679dfd3783e9ffe3bbde"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a0f24b7fcb7e8679dfd3783e9ffe3bbde">onStart</a> ()</td></tr>
<tr class="memdesc:a0f24b7fcb7e8679dfd3783e9ffe3bbde"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override called during start. <a href="classripple_1_1Stoppable.html#a0f24b7fcb7e8679dfd3783e9ffe3bbde">More...</a><br /></td></tr>
<tr class="separator:a0f24b7fcb7e8679dfd3783e9ffe3bbde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a390c62d40a1ca754dfb2de4befa02b0d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a390c62d40a1ca754dfb2de4befa02b0d">prepareRecursive</a> ()</td></tr>
<tr class="separator:a390c62d40a1ca754dfb2de4befa02b0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab53b667e9786bed2c10dd3fcd02b517f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#ab53b667e9786bed2c10dd3fcd02b517f">startRecursive</a> ()</td></tr>
<tr class="separator:ab53b667e9786bed2c10dd3fcd02b517f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34ddbefa8dda0aab52b8ecf493833d62"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a34ddbefa8dda0aab52b8ecf493833d62">stopAsyncRecursive</a> (<a class="el" href="classbeast_1_1Journal.html">beast::Journal</a> j)</td></tr>
<tr class="separator:a34ddbefa8dda0aab52b8ecf493833d62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a294e4d3874e76f53a443cb4df306913f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a294e4d3874e76f53a443cb4df306913f">stopRecursive</a> (<a class="el" href="classbeast_1_1Journal.html">beast::Journal</a> j)</td></tr>
<tr class="separator:a294e4d3874e76f53a443cb4df306913f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a4dc1dcc2a79b60c2c7de7f1bdf05cecf"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic</a>&lt; <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a4dc1dcc2a79b60c2c7de7f1bdf05cecf">storeCount_</a> {0}</td></tr>
<tr class="separator:a4dc1dcc2a79b60c2c7de7f1bdf05cecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5dbc9808c511caeaaa7ce5c6b27276e6"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic</a>&lt; <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a5dbc9808c511caeaaa7ce5c6b27276e6">storeSz_</a> {0}</td></tr>
<tr class="separator:a5dbc9808c511caeaaa7ce5c6b27276e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3332d74cac6eb882c2908e14655d3a0"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic</a>&lt; <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#af3332d74cac6eb882c2908e14655d3a0">fetchTotalCount_</a> {0}</td></tr>
<tr class="separator:af3332d74cac6eb882c2908e14655d3a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06fbf66d1f34a6162a17daf72e71eba9"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/thread/mutex.html">std::mutex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a06fbf66d1f34a6162a17daf72e71eba9">readLock_</a></td></tr>
<tr class="separator:a06fbf66d1f34a6162a17daf72e71eba9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a438af3c0eba7891bb79d5c5dcb902556"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/thread/condition_variable.html">std::condition_variable</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a438af3c0eba7891bb79d5c5dcb902556">readCondVar_</a></td></tr>
<tr class="separator:a438af3c0eba7891bb79d5c5dcb902556"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6af5c13598349c55003f520267e514c1"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/thread/condition_variable.html">std::condition_variable</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a6af5c13598349c55003f520267e514c1">readGenCondVar_</a></td></tr>
<tr class="separator:a6af5c13598349c55003f520267e514c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23cce86a14aff6a9bd6206a6821f7dc1"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/container/map.html">std::map</a>&lt; <a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>, <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a23cce86a14aff6a9bd6206a6821f7dc1">read_</a></td></tr>
<tr class="separator:a23cce86a14aff6a9bd6206a6821f7dc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe98ed8463413de1a92d439cc1aebb35"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#afe98ed8463413de1a92d439cc1aebb35">readLastHash_</a></td></tr>
<tr class="separator:afe98ed8463413de1a92d439cc1aebb35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad769f906ab9351dc6c4fa166b3937e1c"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; <a class="elRef" href="http://en.cppreference.com/w/cpp/thread/thread.html">std::thread</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#ad769f906ab9351dc6c4fa166b3937e1c">readThreads_</a></td></tr>
<tr class="separator:ad769f906ab9351dc6c4fa166b3937e1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0056efda3dfb01158eece68b05c98c2d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#a0056efda3dfb01158eece68b05c98c2d">readShut_</a> {false}</td></tr>
<tr class="separator:a0056efda3dfb01158eece68b05c98c2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb20e114f931da87b2d25e8e1b1fe4ca"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#adb20e114f931da87b2d25e8e1b1fe4ca">readGen_</a> {0}</td></tr>
<tr class="separator:adb20e114f931da87b2d25e8e1b1fe4ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa59aca23acd391245f0b403df74ac8be"><td class="memItemLeft" align="right" valign="top">const <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Database.html#aa59aca23acd391245f0b403df74ac8be">earliestLedgerSeq_</a></td></tr>
<tr class="separator:aa59aca23acd391245f0b403df74ac8be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bee0684bbf67bc8c2f974cc30523cea"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a3bee0684bbf67bc8c2f974cc30523cea">m_name</a></td></tr>
<tr class="separator:a3bee0684bbf67bc8c2f974cc30523cea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a889a7b2e1b4c0fd463c51abfaa0ee0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1RootStoppable.html">RootStoppable</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a3a889a7b2e1b4c0fd463c51abfaa0ee0">m_root</a></td></tr>
<tr class="separator:a3a889a7b2e1b4c0fd463c51abfaa0ee0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9ece0159fb3954819b6b6f1672ac2e4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structripple_1_1Stoppable_1_1Child.html">Child</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#ab9ece0159fb3954819b6b6f1672ac2e4">m_child</a></td></tr>
<tr class="separator:ab9ece0159fb3954819b6b6f1672ac2e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d39131e97d8faa6beb1d36eab19dc2f"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic</a>&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a9d39131e97d8faa6beb1d36eab19dc2f">m_stopped</a> {false}</td></tr>
<tr class="separator:a9d39131e97d8faa6beb1d36eab19dc2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c1e09326ea6d61009b6630c9e297c89"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic</a>&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a8c1e09326ea6d61009b6630c9e297c89">m_childrenStopped</a> {false}</td></tr>
<tr class="separator:a8c1e09326ea6d61009b6630c9e297c89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc549cdc2b0ebef1878e6d79c496be4d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1Stoppable.html#a43594a8835ccb53d7b80983694d26cad">Children</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#adc549cdc2b0ebef1878e6d79c496be4d">m_children</a></td></tr>
<tr class="separator:adc549cdc2b0ebef1878e6d79c496be4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c9a256ee2a1f891a042dda5c89360c0"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/thread/condition_variable.html">std::condition_variable</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a3c9a256ee2a1f891a042dda5c89360c0">m_cv</a></td></tr>
<tr class="separator:a3c9a256ee2a1f891a042dda5c89360c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb1038efa534f43ebbd76db775592aaf"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/thread/mutex.html">std::mutex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#afb1038efa534f43ebbd76db775592aaf">m_mut</a></td></tr>
<tr class="separator:afb1038efa534f43ebbd76db775592aaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12f304b9baab521c4f5f8291485f1391"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a12f304b9baab521c4f5f8291485f1391">m_is_stopping</a> = false</td></tr>
<tr class="separator:a12f304b9baab521c4f5f8291485f1391"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1538bf3e4636b78efa3d30a5596eddf7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Stoppable.html#a1538bf3e4636b78efa3d30a5596eddf7">hasParent_</a> {false}</td></tr>
<tr class="separator:a1538bf3e4636b78efa3d30a5596eddf7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Persistency layer for <a class="el" href="classripple_1_1NodeObject.html" title="A simple object that the Ledger uses to store entries.">NodeObject</a>. </p>
<p>A Node is a ledger object which is uniquely identified by a key, which is the 256-bit hash of the body of the node. The payload is a variable length block of serialized data.</p>
<p>All ledger data is stored as node objects and as such, needs to be persisted between launches. Furthermore, since the set of node objects will in general be larger than the amount of available memory, purged node objects which are later accessed must be retrieved from the node store.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classripple_1_1NodeObject.html" title="A simple object that the Ledger uses to store entries.">NodeObject</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00053">53</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a43594a8835ccb53d7b80983694d26cad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43594a8835ccb53d7b80983694d26cad">&#9670;&nbsp;</a></span>Children</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classripple_1_1Stoppable.html#a43594a8835ccb53d7b80983694d26cad">ripple::Stoppable::Children</a> = <a class="el" href="classbeast_1_1LockFreeStack.html">beast::LockFreeStack</a>&lt;<a class="el" href="structripple_1_1Stoppable_1_1Child.html">Child</a>&gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8h_source.html#l00319">319</a> of file <a class="el" href="Stoppable_8h_source.html">Stoppable.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="acd7da6cb652b11ecd6b40fb79d6f8b2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd7da6cb652b11ecd6b40fb79d6f8b2f">&#9670;&nbsp;</a></span>Database() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ripple::NodeStore::Database::Database </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a825a775a2e46e587e5dc02c4e619625a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a825a775a2e46e587e5dc02c4e619625a">&#9670;&nbsp;</a></span>Database() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ripple::NodeStore::Database::Database </td>
<td>(</td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1Stoppable.html">Stoppable</a> &amp;&#160;</td>
<td class="paramname"><em>parent</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1NodeStore_1_1Scheduler.html">Scheduler</a> &amp;&#160;</td>
<td class="paramname"><em>scheduler</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>readThreads</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1Section.html">Section</a> const &amp;&#160;</td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classbeast_1_1Journal.html">beast::Journal</a>&#160;</td>
<td class="paramname"><em>j</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Construct the node store. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>The <a class="el" href="classripple_1_1Stoppable.html" title="Provides an interface for starting and stopping.">Stoppable</a> name for this <a class="el" href="classripple_1_1NodeStore_1_1Database.html" title="Persistency layer for NodeObject.">Database</a>. </td></tr>
<tr><td class="paramname">parent</td><td>The parent <a class="el" href="classripple_1_1Stoppable.html" title="Provides an interface for starting and stopping.">Stoppable</a>. </td></tr>
<tr><td class="paramname">scheduler</td><td>The scheduler to use for performing asynchronous tasks. </td></tr>
<tr><td class="paramname">readThreads</td><td>The number of asynchronous read threads to create. </td></tr>
<tr><td class="paramname">config</td><td>The configuration settings </td></tr>
<tr><td class="paramname">journal</td><td>Destination for logging output. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="Database_8cpp_source.html#l00029">29</a> of file <a class="el" href="Database_8cpp_source.html">Database.cpp</a>.</p>
</div>
</div>
<a id="a2e1cec1845007e7037214306b2c4bf45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e1cec1845007e7037214306b2c4bf45">&#9670;&nbsp;</a></span>~Database()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ripple::NodeStore::Database::~Database </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Destroy the node store. </p>
<p>All pending operations are completed, pending writes flushed, and files closed before this returns. </p>
<p class="definition">Definition at line <a class="el" href="Database_8cpp_source.html#l00049">49</a> of file <a class="el" href="Database_8cpp_source.html">Database.cpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a24f47bc48e8d040c662611674898fe2e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24f47bc48e8d040c662611674898fe2e">&#9670;&nbsp;</a></span>getName()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> ripple::NodeStore::Database::getName </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the name associated with this backend. </p>
<p>This is used for diagnostics and may not reflect the actual path or paths used by the underlying backend. </p>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html#a8d51265eb7fb99f0b830b81d4d3fc214">ripple::NodeStore::DatabaseShardImp</a>, <a class="el" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html#a2fb3e575c65dfb865877a15b7a365763">ripple::NodeStore::DatabaseNodeImp</a>, and <a class="el" href="classripple_1_1NodeStore_1_1DatabaseRotatingImp.html#a9c3f2d7e8b7e4cca14afe2177c1466b3">ripple::NodeStore::DatabaseRotatingImp</a>.</p>
</div>
</div>
<a id="ac1946e6706aecab34d6ea2207a33f6bc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac1946e6706aecab34d6ea2207a33f6bc">&#9670;&nbsp;</a></span>import()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void ripple::NodeStore::Database::import </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1NodeStore_1_1Database.html">Database</a> &amp;&#160;</td>
<td class="paramname"><em>source</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Import objects from another database. </p>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html#a373209a587ff5d3bb6aab0bae760149c">ripple::NodeStore::DatabaseShardImp</a>, <a class="el" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html#a2917747708b498ce8b0a24e074aa5b1f">ripple::NodeStore::DatabaseNodeImp</a>, and <a class="el" href="classripple_1_1NodeStore_1_1DatabaseRotatingImp.html#ae018381e1b62ed9c61ef8a82d1b3db47">ripple::NodeStore::DatabaseRotatingImp</a>.</p>
</div>
</div>
<a id="aada6493667fd17dd426f6545bf4cac93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aada6493667fd17dd426f6545bf4cac93">&#9670;&nbsp;</a></span>getWriteLoad()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::int32_t</a> ripple::NodeStore::Database::getWriteLoad </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the estimated number of pending write operations. </p>
<p>This is used for diagnostics. </p>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html#a494d3b67a11fccc7f21c0a5e58b1e26b">ripple::NodeStore::DatabaseShardImp</a>, <a class="el" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html#aa8d9a1100a8db28cf142e8fe32aee440">ripple::NodeStore::DatabaseNodeImp</a>, and <a class="el" href="classripple_1_1NodeStore_1_1DatabaseRotatingImp.html#a3b006f7535475fd276bc30b77a1b4673">ripple::NodeStore::DatabaseRotatingImp</a>.</p>
</div>
</div>
<a id="a7da2336581ee3348aad97c0d885658d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7da2336581ee3348aad97c0d885658d0">&#9670;&nbsp;</a></span>store()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void ripple::NodeStore::Database::store </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a57d7e7b27df7e719fdf5569f96be60a3">NodeObjectType</a>&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespaceripple.html#ab1f2184bb5938b5508798cd47a561a21">Blob</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;&#160;</td>
<td class="paramname"><em>hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td>
<td class="paramname"><em>ledgerSeq</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Store the object. </p>
<p>The caller's Blob parameter is overwritten.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">type</td><td>The type of object. </td></tr>
<tr><td class="paramname">data</td><td>The payload of the object. The caller's variable is overwritten. </td></tr>
<tr><td class="paramname">hash</td><td>The 256-bit hash of the payload data. </td></tr>
<tr><td class="paramname">ledgerSeq</td><td>The sequence of the ledger the object belongs to.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the object was stored? </dd></dl>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html#a5f23a54188aa2329d979c937d932dbaf">ripple::NodeStore::DatabaseNodeImp</a>, <a class="el" href="classripple_1_1NodeStore_1_1DatabaseRotatingImp.html#a7992d0dd009c5b855c331c73872c946d">ripple::NodeStore::DatabaseRotatingImp</a>, and <a class="el" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html#aa2a32f28cb0b4e0a5097205410c346eb">ripple::NodeStore::DatabaseShardImp</a>.</p>
</div>
</div>
<a id="a4c2e13367bf02755107ee7ca3ad756be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c2e13367bf02755107ee7ca3ad756be">&#9670;&nbsp;</a></span>fetchNodeObject() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1NodeObject.html">NodeObject</a> &gt; ripple::NodeStore::Database::fetchNodeObject </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;&#160;</td>
<td class="paramname"><em>hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td>
<td class="paramname"><em>ledgerSeq</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespaceripple_1_1NodeStore.html#a6334ed426a8dbe335761b9d81ab6f19f">FetchType</a>&#160;</td>
<td class="paramname"><em>fetchType</em> = <code><a class="el" href="namespaceripple_1_1NodeStore.html#a6334ed426a8dbe335761b9d81ab6f19fa1303c4f41a88e739bc859612321b189f">FetchType::synchronous</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch a node object. </p>
<p>If the object is known to be not in the database, isn't found in the database during the fetch, or failed to load correctly during the fetch, <code>nullptr</code> is returned.</p>
<dl class="section note"><dt>Note</dt><dd>This can be called concurrently. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">hash</td><td>The key of the object to retrieve. </td></tr>
<tr><td class="paramname">ledgerSeq</td><td>The sequence of the ledger where the object is stored. </td></tr>
<tr><td class="paramname">fetchType</td><td>the type of fetch, synchronous or asynchronous. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The object, or nullptr if it couldn't be retrieved. </dd></dl>
<p class="definition">Definition at line <a class="el" href="Database_8cpp_source.html#l00158">158</a> of file <a class="el" href="Database_8cpp_source.html">Database.cpp</a>.</p>
</div>
</div>
<a id="abff61416b213b5ab28e482a61a9c80f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abff61416b213b5ab28e482a61a9c80f8">&#9670;&nbsp;</a></span>asyncFetch() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ripple::NodeStore::Database::asyncFetch </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;&#160;</td>
<td class="paramname"><em>hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td>
<td class="paramname"><em>ledgerSeq</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1NodeObject.html">NodeObject</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>nodeObject</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch an object without waiting. </p>
<p>If I/O is required to determine whether or not the object is present, <code>false</code> is returned. Otherwise, <code>true</code> is returned and <code>object</code> is set to refer to the object, or <code>nullptr</code> if the object is not present. If I/O is required, the I/O is scheduled.</p>
<dl class="section note"><dt>Note</dt><dd>This can be called concurrently. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">hash</td><td>The key of the object to retrieve </td></tr>
<tr><td class="paramname">ledgerSeq</td><td>The sequence of the ledger where the object is stored, used by the shard store. </td></tr>
<tr><td class="paramname">nodeObject</td><td>The object retrieved </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Whether the operation completed </dd></dl>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html#a3f66e96cceecc81264bda0c5f9c43e54">ripple::NodeStore::DatabaseShardImp</a>, <a class="el" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html#a6aa6a71d2359642125d44d950333c0e4">ripple::NodeStore::DatabaseNodeImp</a>, and <a class="el" href="classripple_1_1NodeStore_1_1DatabaseRotatingImp.html#a01b2627edcc41e0ea4cd5ac6b0518494">ripple::NodeStore::DatabaseRotatingImp</a>.</p>
</div>
</div>
<a id="aad7aa12d0cc01006120761d23312d428"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad7aa12d0cc01006120761d23312d428">&#9670;&nbsp;</a></span>storeLedger() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ripple::NodeStore::Database::storeLedger </td>
<td>(</td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &gt; const &amp;&#160;</td>
<td class="paramname"><em>srcLedger</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Store a ledger from a different database. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">srcLedger</td><td>The ledger to store. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the operation was successful </dd></dl>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html#a2f242c02ca2541308788a558e747e21b">ripple::NodeStore::DatabaseShardImp</a>, <a class="el" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html#a727c96f7f30d04345184be123dfe1137">ripple::NodeStore::DatabaseNodeImp</a>, and <a class="el" href="classripple_1_1NodeStore_1_1DatabaseRotatingImp.html#a55502de7f83a364526263b38bc1fe709">ripple::NodeStore::DatabaseRotatingImp</a>.</p>
</div>
</div>
<a id="a332e25e0d08606b9eb501b9f83755dce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a332e25e0d08606b9eb501b9f83755dce">&#9670;&nbsp;</a></span>waitReads()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ripple::NodeStore::Database::waitReads </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Wait for all currently pending async reads to complete. </p>
<p class="definition">Definition at line <a class="el" href="Database_8cpp_source.html#l00061">61</a> of file <a class="el" href="Database_8cpp_source.html">Database.cpp</a>.</p>
</div>
</div>
<a id="a2dcc2b3feb4fa641f2c3704915b377bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2dcc2b3feb4fa641f2c3704915b377bb">&#9670;&nbsp;</a></span>getDesiredAsyncReadCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int ripple::NodeStore::Database::getDesiredAsyncReadCount </td>
<td>(</td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td>
<td class="paramname"><em>ledgerSeq</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the maximum number of async reads the node store prefers. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ledgerSeq</td><td>A ledger sequence specifying a shard to query. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of async reads preferred. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>The sequence is only used with the shard store. </dd></dl>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html#a2d4288e336088f1f657fae6512fcc65c">ripple::NodeStore::DatabaseNodeImp</a>, <a class="el" href="classripple_1_1NodeStore_1_1DatabaseRotatingImp.html#aaa618a70edf95b435b2e144c9137a50f">ripple::NodeStore::DatabaseRotatingImp</a>, and <a class="el" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html#a178beeab3052f02dbb9fe75d3bd4f6c6">ripple::NodeStore::DatabaseShardImp</a>.</p>
</div>
</div>
<a id="a105cc1993a6e21fa10b5f35ec837ac89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a105cc1993a6e21fa10b5f35ec837ac89">&#9670;&nbsp;</a></span>getCacheHitRate()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual float ripple::NodeStore::Database::getCacheHitRate </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the positive cache hits to total attempts ratio. </p>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html#af9351ee2bd83a81ce8dad2efc3933a44">ripple::NodeStore::DatabaseShardImp</a>, <a class="el" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html#a7ebd8f4f939df30f4cfa04b2b571be02">ripple::NodeStore::DatabaseNodeImp</a>, and <a class="el" href="classripple_1_1NodeStore_1_1DatabaseRotatingImp.html#a47ae911df9c292c3c074e5c809759b58">ripple::NodeStore::DatabaseRotatingImp</a>.</p>
</div>
</div>
<a id="a3805d90fbd3ccdaec2a4c7c4ab109eac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3805d90fbd3ccdaec2a4c7c4ab109eac">&#9670;&nbsp;</a></span>tune()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void ripple::NodeStore::Database::tune </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::seconds</a>&#160;</td>
<td class="paramname"><em>age</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the maximum number of entries and maximum cache age for both caches. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">size</td><td>Number of cache entries (0 = ignore) </td></tr>
<tr><td class="paramname">age</td><td>Maximum cache age in seconds </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html#ace01740f8b607399ffeb2397a4d92ab5">ripple::NodeStore::DatabaseShardImp</a>, <a class="el" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html#abe504ac619dae082bd15d7f16d12b786">ripple::NodeStore::DatabaseNodeImp</a>, and <a class="el" href="classripple_1_1NodeStore_1_1DatabaseRotatingImp.html#aaf5cdba2bb5e1dde75cfe528bd81a541">ripple::NodeStore::DatabaseRotatingImp</a>.</p>
</div>
</div>
<a id="a40a0e5a30857e9ba3c7561748af31e29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40a0e5a30857e9ba3c7561748af31e29">&#9670;&nbsp;</a></span>sweep()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void ripple::NodeStore::Database::sweep </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove expired entries from the positive and negative caches. </p>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html#a09183bd09b93a64f42d6ffb57a0e5647">ripple::NodeStore::DatabaseShardImp</a>, <a class="el" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html#af83b106a8e0f80ef92cc3140e1112ec0">ripple::NodeStore::DatabaseNodeImp</a>, and <a class="el" href="classripple_1_1NodeStore_1_1DatabaseRotatingImp.html#aa67b13515a70659f536b6d1cfeb1c2a2">ripple::NodeStore::DatabaseRotatingImp</a>.</p>
</div>
</div>
<a id="a4ccd565f5a4a5296c049a2a0886f363f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ccd565f5a4a5296c049a2a0886f363f">&#9670;&nbsp;</a></span>getStoreCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a> ripple::NodeStore::Database::getStoreCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Gather statistics pertaining to read and write activities. </p>
<dl class="section return"><dt>Returns</dt><dd>The total read and written bytes. </dd></dl>
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00196">196</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="af32a551caa69e8108bdd9a9d74dd774e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af32a551caa69e8108bdd9a9d74dd774e">&#9670;&nbsp;</a></span>getFetchTotalCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ripple::NodeStore::Database::getFetchTotalCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00202">202</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="ad28a451b16bc693364a1074c0f767f1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad28a451b16bc693364a1074c0f767f1f">&#9670;&nbsp;</a></span>getFetchHitCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ripple::NodeStore::Database::getFetchHitCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00208">208</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a0f2ed25135bf1d2aa487a2b2dc5c85cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f2ed25135bf1d2aa487a2b2dc5c85cd">&#9670;&nbsp;</a></span>getStoreSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a> ripple::NodeStore::Database::getStoreSize </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00214">214</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a8ebb38ac8562f6b1673a9f3b8216efce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ebb38ac8562f6b1673a9f3b8216efce">&#9670;&nbsp;</a></span>getFetchSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ripple::NodeStore::Database::getFetchSize </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00220">220</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="aef142866cf7ca2a96d17efc55f8dcc19"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef142866cf7ca2a96d17efc55f8dcc19">&#9670;&nbsp;</a></span>fdRequired()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ripple::NodeStore::Database::fdRequired </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of file descriptors the database expects to need. </p>
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00227">227</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a0923c37ede6c7ffeca02f59f566cf588"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0923c37ede6c7ffeca02f59f566cf588">&#9670;&nbsp;</a></span>onStop()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::NodeStore::Database::onStop </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Override called when the stop notification is issued. </p>
<p>The call is made on an unspecified, implementation-specific thread. onStop and onChildrenStopped will never be called concurrently, across all <a class="el" href="classripple_1_1Stoppable.html" title="Provides an interface for starting and stopping.">Stoppable</a> objects descended from the same root, inclusive of the root.</p>
<p>It is safe to call isStopping, isStopped, and areChildrenStopped from within this function; The values returned will always be valid and never change during the callback.</p>
<p>The default implementation simply calls <a class="el" href="classripple_1_1Stoppable.html#a65a95f9c14637491df60d3a07518fa09" title="Called by derived classes to indicate that the stoppable has stopped.">stopped()</a>. This is applicable when the <a class="el" href="classripple_1_1Stoppable.html" title="Provides an interface for starting and stopping.">Stoppable</a> has a trivial stop operation (or no stop operation), and we are merely using the <a class="el" href="classripple_1_1Stoppable.html" title="Provides an interface for starting and stopping.">Stoppable</a> API to position it as a dependency of some parent service.</p>
<p>Thread safety: May not block for long periods. Guaranteed only to be called once. Must be safe to call from any thread at any time. </p>
<p>Reimplemented from <a class="el" href="classripple_1_1Stoppable.html#a4278b4c199fbe20a75d69610a8970c03">ripple::Stoppable</a>.</p>
<p>Reimplemented in <a class="el" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html#a9f17f5785642cce8324c56de29a14770">ripple::NodeStore::DatabaseShardImp</a>.</p>
<p class="definition">Definition at line <a class="el" href="Database_8cpp_source.html#l00079">79</a> of file <a class="el" href="Database_8cpp_source.html">Database.cpp</a>.</p>
</div>
</div>
<a id="ae84b30410af69ec7e7adcdb6265a4af8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae84b30410af69ec7e7adcdb6265a4af8">&#9670;&nbsp;</a></span>onChildrenStopped()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::NodeStore::Database::onChildrenStopped </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Override called when all children have stopped. </p>
<p>The call is made on an unspecified, implementation-specific thread. onStop and onChildrenStopped will never be called concurrently, across all <a class="el" href="classripple_1_1Stoppable.html" title="Provides an interface for starting and stopping.">Stoppable</a> objects descended from the same root, inclusive of the root.</p>
<p>It is safe to call isStopping, isStopped, and areChildrenStopped from within this function; The values returned will always be valid and never change during the callback.</p>
<p>The default implementation does nothing.</p>
<p>Thread safety: May not block for long periods. Guaranteed only to be called once. Must be safe to call from any thread at any time. </p>
<p>Reimplemented from <a class="el" href="classripple_1_1Stoppable.html#a944a3ffe59dc8f41185fe7b740aa3e8f">ripple::Stoppable</a>.</p>
<p>Reimplemented in <a class="el" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html#a54438fef32a52fb3c2109a0b01d14d34">ripple::NodeStore::DatabaseShardImp</a>.</p>
<p class="definition">Definition at line <a class="el" href="Database_8cpp_source.html#l00087">87</a> of file <a class="el" href="Database_8cpp_source.html">Database.cpp</a>.</p>
</div>
</div>
<a id="a51f2d9197ceae15155509404ce09d9a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a51f2d9197ceae15155509404ce09d9a7">&#9670;&nbsp;</a></span>earliestLedgerSeq()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ripple::NodeStore::Database::earliestLedgerSeq </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The earliest ledger sequence allowed </dd></dl>
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00241">241</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="adb9c1d15c7638e1448be9f5a98563f6b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb9c1d15c7638e1448be9f5a98563f6b">&#9670;&nbsp;</a></span>stopReadThreads()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::NodeStore::Database::stopReadThreads </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8cpp_source.html#l00093">93</a> of file <a class="el" href="Database_8cpp_source.html">Database.cpp</a>.</p>
</div>
</div>
<a id="a090e39b8c6733b0dc4553f9e8e705605"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a090e39b8c6733b0dc4553f9e8e705605">&#9670;&nbsp;</a></span>storeStats()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::NodeStore::Database::storeStats </td>
<td>(</td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a>&#160;</td>
<td class="paramname"><em>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a>&#160;</td>
<td class="paramname"><em>sz</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00258">258</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="ab7974d49e283384c9ba01a5048c80c11"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7974d49e283384c9ba01a5048c80c11">&#9670;&nbsp;</a></span>asyncFetch() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::NodeStore::Database::asyncFetch </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;&#160;</td>
<td class="paramname"><em>hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td>
<td class="paramname"><em>ledgerSeq</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8cpp_source.html#l00110">110</a> of file <a class="el" href="Database_8cpp_source.html">Database.cpp</a>.</p>
</div>
</div>
<a id="af885d9fe877259a258481f0df20697cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af885d9fe877259a258481f0df20697cd">&#9670;&nbsp;</a></span>importInternal()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::NodeStore::Database::importInternal </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html">Backend</a> &amp;&#160;</td>
<td class="paramname"><em>dstBackend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1NodeStore_1_1Database.html">Database</a> &amp;&#160;</td>
<td class="paramname"><em>srcDB</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8cpp_source.html#l00119">119</a> of file <a class="el" href="Database_8cpp_source.html">Database.cpp</a>.</p>
</div>
</div>
<a id="ac401404af7ef3c9fd0954cac802844a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac401404af7ef3c9fd0954cac802844a7">&#9670;&nbsp;</a></span>storeLedger() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ripple::NodeStore::Database::storeLedger </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &amp;&#160;</td>
<td class="paramname"><em>srcLedger</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1NodeStore_1_1Backend.html">Backend</a> &gt;&#160;</td>
<td class="paramname"><em>dstBackend</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1TaggedCache.html">TaggedCache</a>&lt; <a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>, <a class="el" href="classripple_1_1NodeObject.html">NodeObject</a> &gt;&gt;&#160;</td>
<td class="paramname"><em>dstPCache</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1KeyCache.html">KeyCache</a>&lt; <a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> &gt;&gt;&#160;</td>
<td class="paramname"><em>dstNCache</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8cpp_source.html#l00184">184</a> of file <a class="el" href="Database_8cpp_source.html">Database.cpp</a>.</p>
</div>
</div>
<a id="a3f629d9f90e843367887aee6f52f6e1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f629d9f90e843367887aee6f52f6e1e">&#9670;&nbsp;</a></span>fetchNodeObject() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt;<a class="el" href="classripple_1_1NodeObject.html">NodeObject</a>&gt; ripple::NodeStore::Database::fetchNodeObject </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;&#160;</td>
<td class="paramname"><em>hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td>
<td class="paramname"><em>ledgerSeq</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structripple_1_1NodeStore_1_1FetchReport.html">FetchReport</a> &amp;&#160;</td>
<td class="paramname"><em>fetchReport</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html#a0e021f41fc02828e0a5cfeb076523f2e">ripple::NodeStore::DatabaseNodeImp</a>, <a class="el" href="classripple_1_1NodeStore_1_1DatabaseRotatingImp.html#ac8979815c7dbf46de5ca0dd7b293d5bb">ripple::NodeStore::DatabaseRotatingImp</a>, and <a class="el" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html#a0c873130f5ec07fee5d648a17bf42012">ripple::NodeStore::DatabaseShardImp</a>.</p>
</div>
</div>
<a id="a2b5174a0ffb315030b96815d6ac86eaf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b5174a0ffb315030b96815d6ac86eaf">&#9670;&nbsp;</a></span>for_each()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void ripple::NodeStore::Database::for_each </td>
<td>(</td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a>&lt; void(<a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1NodeObject.html">NodeObject</a> &gt;)&gt;&#160;</td>
<td class="paramname"><em>f</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Visit every object in the database This is usually called during import. </p>
<dl class="section note"><dt>Note</dt><dd>This routine will not be called concurrently with itself or other methods. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classripple_1_1NodeStore_1_1Database.html#ac1946e6706aecab34d6ea2207a33f6bc" title="Import objects from another database.">import</a> </dd></dl>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1DatabaseShardImp.html#a5b2de32b1cd5b588d023af75caf670e5">ripple::NodeStore::DatabaseShardImp</a>, <a class="el" href="classripple_1_1NodeStore_1_1DatabaseNodeImp.html#a6692b0758fc43e2d78520ff5e699e8b1">ripple::NodeStore::DatabaseNodeImp</a>, and <a class="el" href="classripple_1_1NodeStore_1_1DatabaseRotatingImp.html#aee99c67c55042890a37368f5d17620d4">ripple::NodeStore::DatabaseRotatingImp</a>.</p>
</div>
</div>
<a id="a7c4180512ff87a967de8091a019dc9f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c4180512ff87a967de8091a019dc9f9">&#9670;&nbsp;</a></span>threadEntry()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::NodeStore::Database::threadEntry </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8cpp_source.html#l00293">293</a> of file <a class="el" href="Database_8cpp_source.html">Database.cpp</a>.</p>
</div>
</div>
<a id="ae9b6cb02b4e1128bd2c4e1a81c9d695c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae9b6cb02b4e1128bd2c4e1a81c9d695c">&#9670;&nbsp;</a></span>getRoot()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1RootStoppable.html">RootStoppable</a>&amp; ripple::Stoppable::getRoot </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8h_source.html#l00214">214</a> of file <a class="el" href="Stoppable_8h_source.html">Stoppable.h</a>.</p>
</div>
</div>
<a id="adea135697761febf430a8628814c7902"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adea135697761febf430a8628814c7902">&#9670;&nbsp;</a></span>setParent()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::Stoppable::setParent </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1Stoppable.html">Stoppable</a> &amp;&#160;</td>
<td class="paramname"><em>parent</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the parent of this <a class="el" href="classripple_1_1Stoppable.html" title="Provides an interface for starting and stopping.">Stoppable</a>. </p>
<dl class="section note"><dt>Note</dt><dd>The <a class="el" href="classripple_1_1Stoppable.html" title="Provides an interface for starting and stopping.">Stoppable</a> must not already have a parent. The parent to be set cannot not be stopping. Both roots must match. </dd></dl>
<p class="definition">Definition at line <a class="el" href="Stoppable_8cpp_source.html#l00043">43</a> of file <a class="el" href="Stoppable_8cpp_source.html">Stoppable.cpp</a>.</p>
</div>
</div>
<a id="a836b8737444ef1133c3596e61010fa80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a836b8737444ef1133c3596e61010fa80">&#9670;&nbsp;</a></span>isStopping()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ripple::Stoppable::isStopping </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns <code>true</code> if the stoppable should stop. </p>
<p class="definition">Definition at line <a class="el" href="Stoppable_8cpp_source.html#l00054">54</a> of file <a class="el" href="Stoppable_8cpp_source.html">Stoppable.cpp</a>.</p>
</div>
</div>
<a id="af1e1447ecb573d2341c8a71afd3e76da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af1e1447ecb573d2341c8a71afd3e76da">&#9670;&nbsp;</a></span>isStopped()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ripple::Stoppable::isStopped </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns <code>true</code> if the requested stop has completed. </p>
<p class="definition">Definition at line <a class="el" href="Stoppable_8cpp_source.html#l00060">60</a> of file <a class="el" href="Stoppable_8cpp_source.html">Stoppable.cpp</a>.</p>
</div>
</div>
<a id="a9ec6fda89ff8bc63251a9c3682311e5d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ec6fda89ff8bc63251a9c3682311e5d">&#9670;&nbsp;</a></span>areChildrenStopped()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ripple::Stoppable::areChildrenStopped </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns <code>true</code> if all children have stopped. </p>
<p class="definition">Definition at line <a class="el" href="Stoppable_8cpp_source.html#l00066">66</a> of file <a class="el" href="Stoppable_8cpp_source.html">Stoppable.cpp</a>.</p>
</div>
</div>
<a id="acc824cd8bdcffbac3c919c7e6009dea5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc824cd8bdcffbac3c919c7e6009dea5">&#9670;&nbsp;</a></span>jobCounter()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespaceripple.html#adf17c8e58c57ecf0ed6cbc7ee1c2ab22">JobCounter</a> &amp; ripple::Stoppable::jobCounter </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8h_source.html#l00437">437</a> of file <a class="el" href="Stoppable_8h_source.html">Stoppable.h</a>.</p>
</div>
</div>
<a id="aca4a925fd0df7e3a3bca51c9593e6a6e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca4a925fd0df7e3a3bca51c9593e6a6e">&#9670;&nbsp;</a></span>alertable_sleep_until()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ripple::Stoppable::alertable_sleep_until </td>
<td>(</td>
<td class="paramtype">std::chrono::system_clock::time_point const &amp;&#160;</td>
<td class="paramname"><em>t</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sleep or wake up on stop. </p>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if we are stopping </dd></dl>
<p class="definition">Definition at line <a class="el" href="Stoppable_8h_source.html#l00455">455</a> of file <a class="el" href="Stoppable_8h_source.html">Stoppable.h</a>.</p>
</div>
</div>
<a id="a65a95f9c14637491df60d3a07518fa09"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a65a95f9c14637491df60d3a07518fa09">&#9670;&nbsp;</a></span>stopped()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::Stoppable::stopped </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by derived classes to indicate that the stoppable has stopped. </p>
<p class="definition">Definition at line <a class="el" href="Stoppable_8cpp_source.html#l00072">72</a> of file <a class="el" href="Stoppable_8cpp_source.html">Stoppable.cpp</a>.</p>
</div>
</div>
<a id="ab2a5544b4bfc0dccdc6a2a46f6ff5d84"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2a5544b4bfc0dccdc6a2a46f6ff5d84">&#9670;&nbsp;</a></span>onPrepare()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::Stoppable::onPrepare </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">virtual</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Override called during preparation. </p>
<p>Since all other <a class="el" href="classripple_1_1Stoppable.html" title="Provides an interface for starting and stopping.">Stoppable</a> objects in the tree have already been constructed, this provides an opportunity to perform initialization which depends on calling into other <a class="el" href="classripple_1_1Stoppable.html" title="Provides an interface for starting and stopping.">Stoppable</a> objects. This call is made on the same thread that called prepare(). The default implementation does nothing. Guaranteed to only be called once. </p>
<p>Reimplemented in <a class="el" href="classripple_1_1ApplicationImp.html#a11604902ac7fe26dea0514976808e2ad">ripple::ApplicationImp</a>, <a class="el" href="classripple_1_1OverlayImpl.html#addad297874d76d9df9fc2d7c903d7782">ripple::OverlayImpl</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1Root.html#a0419ed3fe1cbaff9a0e7b218ea8c7383">ripple::test::Stoppable_test::Root</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1C.html#a27bf534a255be28d9db438c2e650febe">ripple::test::Stoppable_test::C</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1I.html#a1f3cfa0cbcefd9779a0d6bbb33e929ad">ripple::test::Stoppable_test::I</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1B.html#a3802f8ec07a49c257e7af4d6425c66d3">ripple::test::Stoppable_test::B</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1H.html#aca211ad8479955c5c3a8ff56c8b80f23">ripple::test::Stoppable_test::H</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1G.html#acb490a17968f0429b5e98fdab6165de0">ripple::test::Stoppable_test::G</a>, <a class="el" href="classripple_1_1SHAMapStoreImp.html#adff33ddff93fb52cbc61b12abcafe98e">ripple::SHAMapStoreImp</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1A.html#a9c4f120d3d1257cb1922e6dedc6ebb7c">ripple::test::Stoppable_test::A</a>, <a class="el" href="classripple_1_1PeerFinder_1_1ManagerImp.html#a20612412402a342e2acc42a3f19936e7">ripple::PeerFinder::ManagerImp</a>, <a class="el" href="classripple_1_1perf_1_1PerfLogImp.html#a26d2333c65f5f8b8489f785d61c6346f">ripple::perf::PerfLogImp</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1F.html#a65baffca9446b7f05a5c4c561743698f">ripple::test::Stoppable_test::F</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1E.html#ab0d1bcc2b5c8349c9fedb83c880a0bcb">ripple::test::Stoppable_test::E</a>, <a class="el" href="classripple_1_1detail_1_1LedgerCleanerImp.html#a5f8e1250b4903f039435451cb8175f61">ripple::detail::LedgerCleanerImp</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1J.html#aeae3d11b4b4965ad1e41229b51eb3d10">ripple::test::Stoppable_test::J</a>, <a class="el" href="classripple_1_1LoadManager.html#a6f602f780c6e72f265cef2454e384db5">ripple::LoadManager</a>, <a class="el" href="structripple_1_1PerfLog__test_1_1PerfLogParent.html#a46116902aa4f8b6f1a5c91a49854e8f0">ripple::PerfLog_test::PerfLogParent</a>, and <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1D.html#a247b2d122fe5ebeda596a7f0bff9d79a">ripple::test::Stoppable_test::D</a>.</p>
<p class="definition">Definition at line <a class="el" href="Stoppable_8cpp_source.html#l00080">80</a> of file <a class="el" href="Stoppable_8cpp_source.html">Stoppable.cpp</a>.</p>
</div>
</div>
<a id="a0f24b7fcb7e8679dfd3783e9ffe3bbde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f24b7fcb7e8679dfd3783e9ffe3bbde">&#9670;&nbsp;</a></span>onStart()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::Stoppable::onStart </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">virtual</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Override called during start. </p>
<p>Reimplemented in <a class="el" href="classripple_1_1ApplicationImp.html#a21dd55310b1f0a99297b384518d6df25">ripple::ApplicationImp</a>, <a class="el" href="classripple_1_1OverlayImpl.html#a3918e80c1267d4f907730999a4f26008">ripple::OverlayImpl</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1Root.html#aa42c557911d8e76788e87c2d877750ed">ripple::test::Stoppable_test::Root</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1C.html#a5be3e389258ba50a85c06a5af860927e">ripple::test::Stoppable_test::C</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1I.html#ae470d42add62e9c7f0a80d3ef8cceaf7">ripple::test::Stoppable_test::I</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1B.html#af411953a02cb2ba6b5694ffd519aed7e">ripple::test::Stoppable_test::B</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1H.html#ae196a19d259fd57700c35f233c11c026">ripple::test::Stoppable_test::H</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1G.html#ad54103c4f31d04a7f5d6593583028049">ripple::test::Stoppable_test::G</a>, <a class="el" href="classripple_1_1SHAMapStoreImp.html#a06851331bd59c5b55221845549708a34">ripple::SHAMapStoreImp</a>, <a class="el" href="classripple_1_1GRPCServer.html#acf26b69bea55fa6a49fb7528cb5e00c6">ripple::GRPCServer</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1A.html#a7683aa7a642d9f45973df12e2d50faf4">ripple::test::Stoppable_test::A</a>, <a class="el" href="classripple_1_1PeerFinder_1_1ManagerImp.html#aadd75f0fa58820b55705ba28adec085b">ripple::PeerFinder::ManagerImp</a>, <a class="el" href="classripple_1_1perf_1_1PerfLogImp.html#a81a7c17c2d7403d410f40266c8dc8a85">ripple::perf::PerfLogImp</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1F.html#aae263a3c2bc022bc75b2506345cbebcd">ripple::test::Stoppable_test::F</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1E.html#a3a98555a979eb1a3249205d75919f8ad">ripple::test::Stoppable_test::E</a>, <a class="el" href="classripple_1_1detail_1_1LedgerCleanerImp.html#a363652c7715c7176bff335387f97991f">ripple::detail::LedgerCleanerImp</a>, <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1J.html#ae2d5a662e72976386d89b013572172d1">ripple::test::Stoppable_test::J</a>, <a class="el" href="classripple_1_1LoadManager.html#a347fd7fdf32d02e17c676fdd92990cd4">ripple::LoadManager</a>, <a class="el" href="structripple_1_1PerfLog__test_1_1PerfLogParent.html#a29639c6dcd73b345d6592f25c0138f8e">ripple::PerfLog_test::PerfLogParent</a>, and <a class="el" href="classripple_1_1test_1_1Stoppable__test_1_1D.html#a279e901b5c96dfffe93a24af57c6dc3c">ripple::test::Stoppable_test::D</a>.</p>
<p class="definition">Definition at line <a class="el" href="Stoppable_8cpp_source.html#l00085">85</a> of file <a class="el" href="Stoppable_8cpp_source.html">Stoppable.cpp</a>.</p>
</div>
</div>
<a id="a390c62d40a1ca754dfb2de4befa02b0d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a390c62d40a1ca754dfb2de4befa02b0d">&#9670;&nbsp;</a></span>prepareRecursive()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::Stoppable::prepareRecursive </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8cpp_source.html#l00103">103</a> of file <a class="el" href="Stoppable_8cpp_source.html">Stoppable.cpp</a>.</p>
</div>
</div>
<a id="ab53b667e9786bed2c10dd3fcd02b517f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab53b667e9786bed2c10dd3fcd02b517f">&#9670;&nbsp;</a></span>startRecursive()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::Stoppable::startRecursive </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8cpp_source.html#l00113">113</a> of file <a class="el" href="Stoppable_8cpp_source.html">Stoppable.cpp</a>.</p>
</div>
</div>
<a id="a34ddbefa8dda0aab52b8ecf493833d62"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a34ddbefa8dda0aab52b8ecf493833d62">&#9670;&nbsp;</a></span>stopAsyncRecursive()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::Stoppable::stopAsyncRecursive </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classbeast_1_1Journal.html">beast::Journal</a>&#160;</td>
<td class="paramname"><em>j</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8cpp_source.html#l00123">123</a> of file <a class="el" href="Stoppable_8cpp_source.html">Stoppable.cpp</a>.</p>
</div>
</div>
<a id="a294e4d3874e76f53a443cb4df306913f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a294e4d3874e76f53a443cb4df306913f">&#9670;&nbsp;</a></span>stopRecursive()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ripple::Stoppable::stopRecursive </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classbeast_1_1Journal.html">beast::Journal</a>&#160;</td>
<td class="paramname"><em>j</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8cpp_source.html#l00134">134</a> of file <a class="el" href="Stoppable_8cpp_source.html">Stoppable.cpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a0d7c3d303adce36199b2c67c4df8a2de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d7c3d303adce36199b2c67c4df8a2de">&#9670;&nbsp;</a></span>j_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classbeast_1_1Journal.html">beast::Journal</a> ripple::NodeStore::Database::j_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00247">247</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a0e5bc58351ded4683d7207383794a484"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e5bc58351ded4683d7207383794a484">&#9670;&nbsp;</a></span>scheduler_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1NodeStore_1_1Scheduler.html">Scheduler</a>&amp; ripple::NodeStore::Database::scheduler_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00248">248</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a730a87cf8b617a8afb30e2531ede0f81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a730a87cf8b617a8afb30e2531ede0f81">&#9670;&nbsp;</a></span>fdRequired_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int ripple::NodeStore::Database::fdRequired_ {0}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00249">249</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a89497b9b4c5530b58040931489015d30"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a89497b9b4c5530b58040931489015d30">&#9670;&nbsp;</a></span>fetchHitCount_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic</a>&lt;<a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&gt; ripple::NodeStore::Database::fetchHitCount_ {0}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00251">251</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a04150d23aa2acaf016d4ca40bd10804a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a04150d23aa2acaf016d4ca40bd10804a">&#9670;&nbsp;</a></span>fetchSz_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic</a>&lt;<a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&gt; ripple::NodeStore::Database::fetchSz_ {0}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00252">252</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a4dc1dcc2a79b60c2c7de7f1bdf05cecf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4dc1dcc2a79b60c2c7de7f1bdf05cecf">&#9670;&nbsp;</a></span>storeCount_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic</a>&lt;<a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a>&gt; ripple::NodeStore::Database::storeCount_ {0}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00282">282</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a5dbc9808c511caeaaa7ce5c6b27276e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5dbc9808c511caeaaa7ce5c6b27276e6">&#9670;&nbsp;</a></span>storeSz_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic</a>&lt;<a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a>&gt; ripple::NodeStore::Database::storeSz_ {0}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00283">283</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="af3332d74cac6eb882c2908e14655d3a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af3332d74cac6eb882c2908e14655d3a0">&#9670;&nbsp;</a></span>fetchTotalCount_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic</a>&lt;<a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a>&gt; ripple::NodeStore::Database::fetchTotalCount_ {0}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00284">284</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a06fbf66d1f34a6162a17daf72e71eba9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a06fbf66d1f34a6162a17daf72e71eba9">&#9670;&nbsp;</a></span>readLock_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/thread/mutex.html">std::mutex</a> ripple::NodeStore::Database::readLock_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00286">286</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a438af3c0eba7891bb79d5c5dcb902556"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a438af3c0eba7891bb79d5c5dcb902556">&#9670;&nbsp;</a></span>readCondVar_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/thread/condition_variable.html">std::condition_variable</a> ripple::NodeStore::Database::readCondVar_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00287">287</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a6af5c13598349c55003f520267e514c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6af5c13598349c55003f520267e514c1">&#9670;&nbsp;</a></span>readGenCondVar_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/thread/condition_variable.html">std::condition_variable</a> ripple::NodeStore::Database::readGenCondVar_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00288">288</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a23cce86a14aff6a9bd6206a6821f7dc1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a23cce86a14aff6a9bd6206a6821f7dc1">&#9670;&nbsp;</a></span>read_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/container/map.html">std::map</a>&lt;<a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>, <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&gt; ripple::NodeStore::Database::read_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00291">291</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="afe98ed8463413de1a92d439cc1aebb35"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afe98ed8463413de1a92d439cc1aebb35">&#9670;&nbsp;</a></span>readLastHash_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> ripple::NodeStore::Database::readLastHash_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00294">294</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="ad769f906ab9351dc6c4fa166b3937e1c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad769f906ab9351dc6c4fa166b3937e1c">&#9670;&nbsp;</a></span>readThreads_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt;<a class="elRef" href="http://en.cppreference.com/w/cpp/thread/thread.html">std::thread</a>&gt; ripple::NodeStore::Database::readThreads_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00296">296</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a0056efda3dfb01158eece68b05c98c2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0056efda3dfb01158eece68b05c98c2d">&#9670;&nbsp;</a></span>readShut_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ripple::NodeStore::Database::readShut_ {false}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00297">297</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="adb20e114f931da87b2d25e8e1b1fe4ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb20e114f931da87b2d25e8e1b1fe4ca">&#9670;&nbsp;</a></span>readGen_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint64_t ripple::NodeStore::Database::readGen_ {0}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00300">300</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="aa59aca23acd391245f0b403df74ac8be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa59aca23acd391245f0b403df74ac8be">&#9670;&nbsp;</a></span>earliestLedgerSeq_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ripple::NodeStore::Database::earliestLedgerSeq_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Database_8h_source.html#l00304">304</a> of file <a class="el" href="Database_8h_source.html">Database.h</a>.</p>
</div>
</div>
<a id="a3bee0684bbf67bc8c2f974cc30523cea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3bee0684bbf67bc8c2f974cc30523cea">&#9670;&nbsp;</a></span>m_name</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> ripple::Stoppable::m_name</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8h_source.html#l00339">339</a> of file <a class="el" href="Stoppable_8h_source.html">Stoppable.h</a>.</p>
</div>
</div>
<a id="a3a889a7b2e1b4c0fd463c51abfaa0ee0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a889a7b2e1b4c0fd463c51abfaa0ee0">&#9670;&nbsp;</a></span>m_root</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1RootStoppable.html">RootStoppable</a>&amp; ripple::Stoppable::m_root</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8h_source.html#l00340">340</a> of file <a class="el" href="Stoppable_8h_source.html">Stoppable.h</a>.</p>
</div>
</div>
<a id="ab9ece0159fb3954819b6b6f1672ac2e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9ece0159fb3954819b6b6f1672ac2e4">&#9670;&nbsp;</a></span>m_child</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structripple_1_1Stoppable_1_1Child.html">Child</a> ripple::Stoppable::m_child</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8h_source.html#l00341">341</a> of file <a class="el" href="Stoppable_8h_source.html">Stoppable.h</a>.</p>
</div>
</div>
<a id="a9d39131e97d8faa6beb1d36eab19dc2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d39131e97d8faa6beb1d36eab19dc2f">&#9670;&nbsp;</a></span>m_stopped</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic</a>&lt;bool&gt; ripple::Stoppable::m_stopped {false}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8h_source.html#l00342">342</a> of file <a class="el" href="Stoppable_8h_source.html">Stoppable.h</a>.</p>
</div>
</div>
<a id="a8c1e09326ea6d61009b6630c9e297c89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c1e09326ea6d61009b6630c9e297c89">&#9670;&nbsp;</a></span>m_childrenStopped</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic</a>&lt;bool&gt; ripple::Stoppable::m_childrenStopped {false}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8h_source.html#l00343">343</a> of file <a class="el" href="Stoppable_8h_source.html">Stoppable.h</a>.</p>
</div>
</div>
<a id="adc549cdc2b0ebef1878e6d79c496be4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adc549cdc2b0ebef1878e6d79c496be4d">&#9670;&nbsp;</a></span>m_children</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1Stoppable.html#a43594a8835ccb53d7b80983694d26cad">Children</a> ripple::Stoppable::m_children</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8h_source.html#l00344">344</a> of file <a class="el" href="Stoppable_8h_source.html">Stoppable.h</a>.</p>
</div>
</div>
<a id="a3c9a256ee2a1f891a042dda5c89360c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c9a256ee2a1f891a042dda5c89360c0">&#9670;&nbsp;</a></span>m_cv</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/thread/condition_variable.html">std::condition_variable</a> ripple::Stoppable::m_cv</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8h_source.html#l00345">345</a> of file <a class="el" href="Stoppable_8h_source.html">Stoppable.h</a>.</p>
</div>
</div>
<a id="afb1038efa534f43ebbd76db775592aaf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb1038efa534f43ebbd76db775592aaf">&#9670;&nbsp;</a></span>m_mut</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/thread/mutex.html">std::mutex</a> ripple::Stoppable::m_mut</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8h_source.html#l00346">346</a> of file <a class="el" href="Stoppable_8h_source.html">Stoppable.h</a>.</p>
</div>
</div>
<a id="a12f304b9baab521c4f5f8291485f1391"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12f304b9baab521c4f5f8291485f1391">&#9670;&nbsp;</a></span>m_is_stopping</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ripple::Stoppable::m_is_stopping = false</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8h_source.html#l00347">347</a> of file <a class="el" href="Stoppable_8h_source.html">Stoppable.h</a>.</p>
</div>
</div>
<a id="a1538bf3e4636b78efa3d30a5596eddf7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1538bf3e4636b78efa3d30a5596eddf7">&#9670;&nbsp;</a></span>hasParent_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ripple::Stoppable::hasParent_ {false}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Stoppable_8h_source.html#l00348">348</a> of file <a class="el" href="Stoppable_8h_source.html">Stoppable.h</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>