Files
rippled/classripple_1_1NodeStore_1_1Backend.html
2025-11-04 00:36:48 -08:00

748 lines
44 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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>rippled: ripple::NodeStore::Backend 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 id="projectrow">
<td id="projectalign">
<div id="projectname">rippled
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</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_1Backend.html">Backend</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classripple_1_1NodeStore_1_1Backend-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">ripple::NodeStore::Backend Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div></div>
</div><!--header-->
<div class="contents">
<p>A backend used for the <a class="el" href="namespaceripple_1_1NodeStore.html">NodeStore</a>.
<a href="classripple_1_1NodeStore_1_1Backend.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="Backend_8h_source.html">Backend.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ripple::NodeStore::Backend:</div>
<div class="dyncontent">
<div class="center"><img src="classripple_1_1NodeStore_1_1Backend__inherit__graph.png" border="0" usemap="#aripple_1_1NodeStore_1_1Backend_inherit__map" alt="Inheritance graph"/></div>
<map name="aripple_1_1NodeStore_1_1Backend_inherit__map" id="aripple_1_1NodeStore_1_1Backend_inherit__map">
<area shape="rect" title="A backend used for the NodeStore." alt="" coords="5,69,148,109"/>
<area shape="rect" href="classripple_1_1NodeStore_1_1MemoryBackend.html" title=" " alt="" coords="196,5,339,45"/>
<area shape="poly" title=" " alt="" coords="149,62,206,43,208,48,151,67"/>
<area shape="rect" href="classripple_1_1NodeStore_1_1NuDBBackend.html" title=" " alt="" coords="196,69,339,109"/>
<area shape="poly" title=" " alt="" coords="161,87,196,87,196,92,161,92"/>
<area shape="rect" href="classripple_1_1NodeStore_1_1NullBackend.html" title=" " alt="" coords="196,133,339,173"/>
<area shape="poly" title=" " alt="" coords="151,111,208,131,206,136,149,116"/>
</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 id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a7be1490e873f0a4956e4dd9effc9061b" id="r_a7be1490e873f0a4956e4dd9effc9061b"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#a7be1490e873f0a4956e4dd9effc9061b">~Backend</a> ()=default</td></tr>
<tr class="memdesc:a7be1490e873f0a4956e4dd9effc9061b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy the backend. <br /></td></tr>
<tr class="separator:a7be1490e873f0a4956e4dd9effc9061b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a206d540c4b8359c598f2309c5ee194bd" id="r_a206d540c4b8359c598f2309c5ee194bd"><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_1Backend.html#a206d540c4b8359c598f2309c5ee194bd">getName</a> ()=0</td></tr>
<tr class="memdesc:a206d540c4b8359c598f2309c5ee194bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the human-readable name of this backend. <br /></td></tr>
<tr class="separator:a206d540c4b8359c598f2309c5ee194bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6471a9de444ac0df7c1dd102efa95854" id="r_a6471a9de444ac0df7c1dd102efa95854"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt; <a class="elRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#a6471a9de444ac0df7c1dd102efa95854">getBlockSize</a> () const</td></tr>
<tr class="memdesc:a6471a9de444ac0df7c1dd102efa95854"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the block size for backends that support it. <br /></td></tr>
<tr class="separator:a6471a9de444ac0df7c1dd102efa95854"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a586356a9f6050201be9d184bc3fd2c83" id="r_a586356a9f6050201be9d184bc3fd2c83"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#a586356a9f6050201be9d184bc3fd2c83">open</a> (bool createIfMissing=true)=0</td></tr>
<tr class="memdesc:a586356a9f6050201be9d184bc3fd2c83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open the backend. <br /></td></tr>
<tr class="separator:a586356a9f6050201be9d184bc3fd2c83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd6ac096e54166098107227a8d168044" id="r_acd6ac096e54166098107227a8d168044"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#acd6ac096e54166098107227a8d168044">isOpen</a> ()=0</td></tr>
<tr class="memdesc:acd6ac096e54166098107227a8d168044"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true is the database is open. <br /></td></tr>
<tr class="separator:acd6ac096e54166098107227a8d168044"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4e7c931c5382d31d877c6f7162dd21e" id="r_ae4e7c931c5382d31d877c6f7162dd21e"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#ae4e7c931c5382d31d877c6f7162dd21e">open</a> (bool createIfMissing, uint64_t appType, uint64_t uid, uint64_t salt)</td></tr>
<tr class="memdesc:ae4e7c931c5382d31d877c6f7162dd21e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open the backend. <br /></td></tr>
<tr class="separator:ae4e7c931c5382d31d877c6f7162dd21e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b13f9a9bbf0bf6470648f4910a92dd0" id="r_a6b13f9a9bbf0bf6470648f4910a92dd0"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#a6b13f9a9bbf0bf6470648f4910a92dd0">close</a> ()=0</td></tr>
<tr class="memdesc:a6b13f9a9bbf0bf6470648f4910a92dd0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close the backend. <br /></td></tr>
<tr class="separator:a6b13f9a9bbf0bf6470648f4910a92dd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d3224e43e89dc098962b986d70e9833" id="r_a7d3224e43e89dc098962b986d70e9833"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="namespaceripple_1_1NodeStore.html#af127c2e4fc73b5d35647147ef45b350c">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#a7d3224e43e89dc098962b986d70e9833">fetch</a> (void const *key, <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; *pObject)=0</td></tr>
<tr class="memdesc:a7d3224e43e89dc098962b986d70e9833"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a single object. <br /></td></tr>
<tr class="separator:a7d3224e43e89dc098962b986d70e9833"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a651edcf0faf1fd93b105d0286015d9" id="r_a9a651edcf0faf1fd93b105d0286015d9"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <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/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1NodeObject.html">NodeObject</a> &gt; &gt;, <a class="el" href="namespaceripple_1_1NodeStore.html#af127c2e4fc73b5d35647147ef45b350c">Status</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#a9a651edcf0faf1fd93b105d0286015d9">fetchBatch</a> (<a class="elRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; <a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const * &gt; const &amp;hashes)=0</td></tr>
<tr class="memdesc:a9a651edcf0faf1fd93b105d0286015d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a batch synchronously. <br /></td></tr>
<tr class="separator:a9a651edcf0faf1fd93b105d0286015d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8862f8d96713c985c3169e57cbb260c2" id="r_a8862f8d96713c985c3169e57cbb260c2"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#a8862f8d96713c985c3169e57cbb260c2">store</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_1NodeObject.html">NodeObject</a> &gt; const &amp;object)=0</td></tr>
<tr class="memdesc:a8862f8d96713c985c3169e57cbb260c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store a single object. <br /></td></tr>
<tr class="separator:a8862f8d96713c985c3169e57cbb260c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb1f22b4101841e695477646c95376a7" id="r_acb1f22b4101841e695477646c95376a7"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#acb1f22b4101841e695477646c95376a7">storeBatch</a> (<a class="el" href="namespaceripple_1_1NodeStore.html#ae0e4b79f8eb3ffa0bf8fcaf848643202">Batch</a> const &amp;<a class="el" href="namespaceripple.html#ad5143ceada01141772ae4aab984f94bdad265aed699f7409ac0ec6fe07ee9cb11">batch</a>)=0</td></tr>
<tr class="memdesc:acb1f22b4101841e695477646c95376a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store a group of objects. <br /></td></tr>
<tr class="separator:acb1f22b4101841e695477646c95376a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0756bdfe06dcb0382b47e23b39813394" id="r_a0756bdfe06dcb0382b47e23b39813394"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#a0756bdfe06dcb0382b47e23b39813394">sync</a> ()=0</td></tr>
<tr class="separator:a0756bdfe06dcb0382b47e23b39813394"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70721d2adc758a808d2536eee864df52" id="r_a70721d2adc758a808d2536eee864df52"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#a70721d2adc758a808d2536eee864df52">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:a70721d2adc758a808d2536eee864df52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visit every object in the database This is usually called during import. <br /></td></tr>
<tr class="separator:a70721d2adc758a808d2536eee864df52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4d7008b7a616ce05568da3e96a204ec" id="r_ac4d7008b7a616ce05568da3e96a204ec"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#ac4d7008b7a616ce05568da3e96a204ec">getWriteLoad</a> ()=0</td></tr>
<tr class="memdesc:ac4d7008b7a616ce05568da3e96a204ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Estimate the number of write operations pending. <br /></td></tr>
<tr class="separator:ac4d7008b7a616ce05568da3e96a204ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a898be5251e9216eb21938e3083c2d1ef" id="r_a898be5251e9216eb21938e3083c2d1ef"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#a898be5251e9216eb21938e3083c2d1ef">setDeletePath</a> ()=0</td></tr>
<tr class="memdesc:a898be5251e9216eb21938e3083c2d1ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove contents on disk upon destruction. <br /></td></tr>
<tr class="separator:a898be5251e9216eb21938e3083c2d1ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afea5371bd4d7824d96f28700fa831f33" id="r_afea5371bd4d7824d96f28700fa831f33"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#afea5371bd4d7824d96f28700fa831f33">verify</a> ()</td></tr>
<tr class="memdesc:afea5371bd4d7824d96f28700fa831f33"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform consistency checks on database. <br /></td></tr>
<tr class="separator:afea5371bd4d7824d96f28700fa831f33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a915130d326c2e63209accb8af09cf8b4" id="r_a915130d326c2e63209accb8af09cf8b4"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1NodeStore_1_1Backend.html#a915130d326c2e63209accb8af09cf8b4">fdRequired</a> () const =0</td></tr>
<tr class="memdesc:a915130d326c2e63209accb8af09cf8b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of file descriptors the backend expects to need. <br /></td></tr>
<tr class="separator:a915130d326c2e63209accb8af09cf8b4"><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>A backend used for the <a class="el" href="namespaceripple_1_1NodeStore.html">NodeStore</a>. </p>
<p>The <a class="el" href="namespaceripple_1_1NodeStore.html">NodeStore</a> uses a swappable backend so that other database systems can be tried. Different databases may offer various features such as improved performance, fault tolerant or distributed storage, or all in-memory operation.</p>
<p>A given instance of a backend is fixed to a particular key size. </p>
<p class="definition">Definition at line <a class="el" href="Backend_8h_source.html#l00020">20</a> of file <a class="el" href="Backend_8h_source.html">Backend.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a7be1490e873f0a4956e4dd9effc9061b" name="a7be1490e873f0a4956e4dd9effc9061b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7be1490e873f0a4956e4dd9effc9061b">&#9670;&#160;</a></span>~Backend()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual ripple::NodeStore::Backend::~Backend </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 class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Destroy the backend. </p>
<p>All open files are closed and flushed. If there are batched writes or other tasks scheduled, they will be completed before this call returns. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a206d540c4b8359c598f2309c5ee194bd" name="a206d540c4b8359c598f2309c5ee194bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a206d540c4b8359c598f2309c5ee194bd">&#9670;&#160;</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::Backend::getName </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 human-readable name of this backend. </p>
<p>This is used for diagnostic output. </p>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1MemoryBackend.html#a6c8bde126310dfbe7837ebdcc43b3bd2">ripple::NodeStore::MemoryBackend</a>, <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#a973bd1539e909dcc515980e7b6f61f3d">ripple::NodeStore::NuDBBackend</a>, and <a class="el" href="classripple_1_1NodeStore_1_1NullBackend.html#a89c46335dae32bdda3cc2cd0d2558abf">ripple::NodeStore::NullBackend</a>.</p>
</div>
</div>
<a id="a6471a9de444ac0df7c1dd102efa95854" name="a6471a9de444ac0df7c1dd102efa95854"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6471a9de444ac0df7c1dd102efa95854">&#9670;&#160;</a></span>getBlockSize()</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/utility/optional.html">std::optional</a>&lt; <a class="elRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> &gt; ripple::NodeStore::Backend::getBlockSize </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">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the block size for backends that support it. </p>
<p>Reimplemented in <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#a7ecb3aaf359d9d5159ed350873f4de9e">ripple::NodeStore::NuDBBackend</a>.</p>
<p class="definition">Definition at line <a class="el" href="Backend_8h_source.html#l00040">40</a> of file <a class="el" href="Backend_8h_source.html">Backend.h</a>.</p>
</div>
</div>
<a id="a586356a9f6050201be9d184bc3fd2c83" name="a586356a9f6050201be9d184bc3fd2c83"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a586356a9f6050201be9d184bc3fd2c83">&#9670;&#160;</a></span>open() <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 void ripple::NodeStore::Backend::open </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>createIfMissing</em> = <code>true</code></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>Open the backend. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">createIfMissing</td><td>Create the database files if necessary. This allows the caller to catch exceptions. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#a2160cbce008b1fd13e1797d81d989128">ripple::NodeStore::NuDBBackend</a>, <a class="el" href="classripple_1_1NodeStore_1_1NullBackend.html#a0b2c45caa5842849382a198b28687c8e">ripple::NodeStore::NullBackend</a>, and <a class="el" href="classripple_1_1NodeStore_1_1MemoryBackend.html#abb497e11a012f1a4e9986f8a5886f659">ripple::NodeStore::MemoryBackend</a>.</p>
</div>
</div>
<a id="acd6ac096e54166098107227a8d168044" name="acd6ac096e54166098107227a8d168044"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd6ac096e54166098107227a8d168044">&#9670;&#160;</a></span>isOpen()</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::Backend::isOpen </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>Returns true is the database is open. </p>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1MemoryBackend.html#ada78f1edc055747acbcd9b0da846d743">ripple::NodeStore::MemoryBackend</a>, <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#acf5ab73b7ec283a9ee0b73462e1d8531">ripple::NodeStore::NuDBBackend</a>, and <a class="el" href="classripple_1_1NodeStore_1_1NullBackend.html#a06edcc6548cdcac4785c1de9c3a1662f">ripple::NodeStore::NullBackend</a>.</p>
</div>
</div>
<a id="ae4e7c931c5382d31d877c6f7162dd21e" name="ae4e7c931c5382d31d877c6f7162dd21e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae4e7c931c5382d31d877c6f7162dd21e">&#9670;&#160;</a></span>open() <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 void ripple::NodeStore::Backend::open </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>createIfMissing</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>appType</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>uid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>salt</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">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Open the backend. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">createIfMissing</td><td>Create the database files if necessary. </td></tr>
<tr><td class="paramname">appType</td><td>Deterministic appType used to create a backend. </td></tr>
<tr><td class="paramname">uid</td><td>Deterministic uid used to create a backend. </td></tr>
<tr><td class="paramname">salt</td><td>Deterministic salt used to create a backend. </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="elRef" href="http://en.cppreference.com/w/cpp/error/runtime_error.html">std::runtime_error</a></td><td>is function is called not for NuDB backend. </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented in <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#a9e494839a2dcf789bb6cdc300ad65931">ripple::NodeStore::NuDBBackend</a>.</p>
<p class="definition">Definition at line <a class="el" href="Backend_8h_source.html#l00065">65</a> of file <a class="el" href="Backend_8h_source.html">Backend.h</a>.</p>
</div>
</div>
<a id="a6b13f9a9bbf0bf6470648f4910a92dd0" name="a6b13f9a9bbf0bf6470648f4910a92dd0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b13f9a9bbf0bf6470648f4910a92dd0">&#9670;&#160;</a></span>close()</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::Backend::close </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>Close the backend. </p>
<p>This allows the caller to catch exceptions. </p>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1MemoryBackend.html#a0a629815bc2dfa046866f0b28dea0887">ripple::NodeStore::MemoryBackend</a>, <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#a336d7fe747c73366bec1cf42c5e05b67">ripple::NodeStore::NuDBBackend</a>, and <a class="el" href="classripple_1_1NodeStore_1_1NullBackend.html#a0269121f17ab29c92a5df0d2a035dd47">ripple::NodeStore::NullBackend</a>.</p>
</div>
</div>
<a id="a7d3224e43e89dc098962b986d70e9833" name="a7d3224e43e89dc098962b986d70e9833"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d3224e43e89dc098962b986d70e9833">&#9670;&#160;</a></span>fetch()</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="el" href="namespaceripple_1_1NodeStore.html#af127c2e4fc73b5d35647147ef45b350c">Status</a> ripple::NodeStore::Backend::fetch </td>
<td>(</td>
<td class="paramtype">void const *&#160;</td>
<td class="paramname"><em>key</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; *&#160;</td>
<td class="paramname"><em>pObject</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 a single object. </p>
<p>If the object is not found or an error is encountered, the result will indicate the condition. </p><dl class="section note"><dt>Note</dt><dd>This will be called concurrently. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">key</td><td>A pointer to the key data. </td></tr>
<tr><td class="paramname">pObject</td><td>[out] The created object if successful. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The result of the operation. </dd></dl>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1NullBackend.html#a1dc8a4f932bb50366f9f967e5c35cb3a">ripple::NodeStore::NullBackend</a>, <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#a1b03edf356922e780fe41987476f1f6a">ripple::NodeStore::NuDBBackend</a>, and <a class="el" href="classripple_1_1NodeStore_1_1MemoryBackend.html#ad1c41ea346dc8b8202fd05f67349735c">ripple::NodeStore::MemoryBackend</a>.</p>
</div>
</div>
<a id="a9a651edcf0faf1fd93b105d0286015d9" name="a9a651edcf0faf1fd93b105d0286015d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a651edcf0faf1fd93b105d0286015d9">&#9670;&#160;</a></span>fetchBatch()</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/utility/pair.html">std::pair</a>&lt; <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/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1NodeObject.html">NodeObject</a> &gt; &gt;, <a class="el" href="namespaceripple_1_1NodeStore.html#af127c2e4fc73b5d35647147ef45b350c">Status</a> &gt; ripple::NodeStore::Backend::fetchBatch </td>
<td>(</td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; <a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const * &gt; const &amp;&#160;</td>
<td class="paramname"><em>hashes</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>Fetch a batch synchronously. </p>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1MemoryBackend.html#a914efe50059a9990c60e592a27bbad66">ripple::NodeStore::MemoryBackend</a>, <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#a260a0974fe386a76cd3956207a1b1878">ripple::NodeStore::NuDBBackend</a>, and <a class="el" href="classripple_1_1NodeStore_1_1NullBackend.html#a780a94041c6b9f059f9c33e5d5780c2a">ripple::NodeStore::NullBackend</a>.</p>
</div>
</div>
<a id="a8862f8d96713c985c3169e57cbb260c2" name="a8862f8d96713c985c3169e57cbb260c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8862f8d96713c985c3169e57cbb260c2">&#9670;&#160;</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::Backend::store </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; const &amp;&#160;</td>
<td class="paramname"><em>object</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 single object. </p>
<p>Depending on the implementation this may happen immediately or deferred using a scheduled task. </p><dl class="section note"><dt>Note</dt><dd>This will be called concurrently. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>The object to store. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#a00c5d2a5073f3318fc0e52f255a1c212">ripple::NodeStore::NuDBBackend</a>, <a class="el" href="classripple_1_1NodeStore_1_1MemoryBackend.html#a40130939ef641571abf616a970d63957">ripple::NodeStore::MemoryBackend</a>, and <a class="el" href="classripple_1_1NodeStore_1_1NullBackend.html#ad3d41ab83222e39efd5aaebf39160df8">ripple::NodeStore::NullBackend</a>.</p>
</div>
</div>
<a id="acb1f22b4101841e695477646c95376a7" name="acb1f22b4101841e695477646c95376a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acb1f22b4101841e695477646c95376a7">&#9670;&#160;</a></span>storeBatch()</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::Backend::storeBatch </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple_1_1NodeStore.html#ae0e4b79f8eb3ffa0bf8fcaf848643202">Batch</a> const &amp;&#160;</td>
<td class="paramname"><em>batch</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 group of objects. </p>
<dl class="section note"><dt>Note</dt><dd>This function will not be called concurrently with itself or <a class="el" href="classripple_1_1NodeStore_1_1Backend.html#a8862f8d96713c985c3169e57cbb260c2">store</a>. </dd></dl>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1MemoryBackend.html#ab677b7560cd27c159ad78e1412513d5f">ripple::NodeStore::MemoryBackend</a>, <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#a4e9abc2a44a3501131709dcd6d5c509a">ripple::NodeStore::NuDBBackend</a>, and <a class="el" href="classripple_1_1NodeStore_1_1NullBackend.html#ac3d735a9706df0a50c08a2a737ebeb3d">ripple::NodeStore::NullBackend</a>.</p>
</div>
</div>
<a id="a0756bdfe06dcb0382b47e23b39813394" name="a0756bdfe06dcb0382b47e23b39813394"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0756bdfe06dcb0382b47e23b39813394">&#9670;&#160;</a></span>sync()</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::Backend::sync </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>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1MemoryBackend.html#a7a01b5df53b3ca0487785188f98b4320">ripple::NodeStore::MemoryBackend</a>, <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#a7d886e5eee636e58798208a5e46e71f6">ripple::NodeStore::NuDBBackend</a>, and <a class="el" href="classripple_1_1NodeStore_1_1NullBackend.html#a48f53c890d50d72621ebaa72cba3214f">ripple::NodeStore::NullBackend</a>.</p>
</div>
</div>
<a id="a70721d2adc758a808d2536eee864df52" name="a70721d2adc758a808d2536eee864df52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70721d2adc758a808d2536eee864df52">&#9670;&#160;</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::Backend::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">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>import </dd></dl>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1MemoryBackend.html#aa6f448cbec37beaa817905fe441c511c">ripple::NodeStore::MemoryBackend</a>, <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#abaf0ba251ee000601135df13dd885dca">ripple::NodeStore::NuDBBackend</a>, and <a class="el" href="classripple_1_1NodeStore_1_1NullBackend.html#a7c5e9d556473e233e8db639f2b9f550a">ripple::NodeStore::NullBackend</a>.</p>
</div>
</div>
<a id="ac4d7008b7a616ce05568da3e96a204ec" name="ac4d7008b7a616ce05568da3e96a204ec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac4d7008b7a616ce05568da3e96a204ec">&#9670;&#160;</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 int ripple::NodeStore::Backend::getWriteLoad </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>Estimate the number of write operations pending. </p>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1MemoryBackend.html#ab56c3ec0fd054251bfe27125a9092973">ripple::NodeStore::MemoryBackend</a>, <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#adf8b3a8b6f911845a8323cc00c0aeff0">ripple::NodeStore::NuDBBackend</a>, and <a class="el" href="classripple_1_1NodeStore_1_1NullBackend.html#a05d79b53d646319b916a2cb5f664196b">ripple::NodeStore::NullBackend</a>.</p>
</div>
</div>
<a id="a898be5251e9216eb21938e3083c2d1ef" name="a898be5251e9216eb21938e3083c2d1ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a898be5251e9216eb21938e3083c2d1ef">&#9670;&#160;</a></span>setDeletePath()</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::Backend::setDeletePath </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 contents on disk upon destruction. </p>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1MemoryBackend.html#ac0e6ebc55d43139af9a26254ed736609">ripple::NodeStore::MemoryBackend</a>, <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#ae6cf1bca8633f03532a5836b959adc60">ripple::NodeStore::NuDBBackend</a>, and <a class="el" href="classripple_1_1NodeStore_1_1NullBackend.html#a2fea9ffddc47915211a29fac6404fb0e">ripple::NodeStore::NullBackend</a>.</p>
</div>
</div>
<a id="afea5371bd4d7824d96f28700fa831f33" name="afea5371bd4d7824d96f28700fa831f33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afea5371bd4d7824d96f28700fa831f33">&#9670;&#160;</a></span>verify()</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::Backend::verify </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>Perform consistency checks on database. </p>
<p>This method is implemented only by <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html">NuDBBackend</a>. It is not yet called anywhere, but it might be a good idea to one day call it at startup to avert a crash. </p>
<p>Reimplemented in <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#ab012b4ff123427bc35a5d4ac4c6269c0">ripple::NodeStore::NuDBBackend</a>.</p>
<p class="definition">Definition at line <a class="el" href="Backend_8h_source.html#l00136">136</a> of file <a class="el" href="Backend_8h_source.html">Backend.h</a>.</p>
</div>
</div>
<a id="a915130d326c2e63209accb8af09cf8b4" name="a915130d326c2e63209accb8af09cf8b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a915130d326c2e63209accb8af09cf8b4">&#9670;&#160;</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">virtual int ripple::NodeStore::Backend::fdRequired </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>Returns the number of file descriptors the backend expects to need. </p>
<p>Implemented in <a class="el" href="classripple_1_1NodeStore_1_1MemoryBackend.html#ad11105242d588bfd1c07bf7d3d729790">ripple::NodeStore::MemoryBackend</a>, <a class="el" href="classripple_1_1NodeStore_1_1NuDBBackend.html#a80ceb104dfe540399ddb1fe8d43111ac">ripple::NodeStore::NuDBBackend</a>, and <a class="el" href="classripple_1_1NodeStore_1_1NullBackend.html#a13cce6549b2f525223a86a053d257e50">ripple::NodeStore::NullBackend</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>