Files
rippled/LedgerReplay__test_8cpp_source.html
2025-11-10 09:36:27 -08:00

2108 lines
429 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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: LedgerReplay_test.cpp Source File</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>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
<!-- 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="dir_120ed4da3e3217b1e7fc0b4f48568e79.html">test</a></li><li class="navelem"><a class="el" href="dir_7ab758b8a77751d62709b12ccae53e10.html">app</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">LedgerReplay_test.cpp</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#include &lt;test/jtx.h&gt;</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#include &lt;test/jtx/envconfig.h&gt;</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#include &lt;xrpld/app/ledger/BuildLedger.h&gt;</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include &lt;xrpld/app/ledger/LedgerMaster.h&gt;</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include &lt;xrpld/app/ledger/LedgerReplay.h&gt;</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include &lt;xrpld/app/ledger/LedgerReplayTask.h&gt;</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &lt;xrpld/app/ledger/LedgerReplayer.h&gt;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &lt;xrpld/app/ledger/detail/LedgerDeltaAcquire.h&gt;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &lt;xrpld/app/ledger/detail/LedgerReplayMsgHandler.h&gt;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &lt;xrpld/app/ledger/detail/SkipListAcquire.h&gt;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &lt;xrpld/overlay/PeerSet.h&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &lt;xrpld/overlay/detail/PeerImp.h&gt;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;xrpl/basics/Slice.h&gt;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/chrono.html">chrono</a>&gt;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/thread.html">thread</a>&gt;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceripple.html">ripple</a> {</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="keyword">namespace </span>test {</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="foldopen" id="foldopen00023" data-start="{" data-end="};">
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplay__test.html"> 23</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structripple_1_1test_1_1LedgerReplay__test.html">LedgerReplay_test</a> : <span class="keyword">public</span> <a class="code hl_class" href="classbeast_1_1unit__test_1_1suite.html">beast::unit_test::suite</a></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span>{</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00026" data-start="{" data-end="}">
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplay__test.html#add660c91c07a4d566a12b3183d033a69"> 26</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplay__test.html#add660c91c07a4d566a12b3183d033a69">run</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Replay ledger&quot;</span>);</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">using namespace </span>jtx;</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// Build a ledger normally</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">auto</span> <span class="keyword">const</span> alice = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a>(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">auto</span> <span class="keyword">const</span> bob = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a>(<span class="stringliteral">&quot;bob&quot;</span>);</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env(*<span class="keyword">this</span>);</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#ae2349266cb09d1f1c3de06606ebdf9e2">fund</a>(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(100000), alice, bob);</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#a69095691c9bcfab1f3d69c645f2dbe33">close</a>();</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <a class="code hl_class" href="classripple_1_1LedgerMaster.html">LedgerMaster</a>&amp; <a class="code hl_enumvalue" href="namespaceripple.html#ad5143ceada01141772ae4aab984f94bda7fa2267e9b1bf739a70bb1860ab2a99c">ledgerMaster</a> = env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#acd48f8ab02c37b1a30cedf4dec7cc96c">app</a>().<a class="code hl_function" href="classripple_1_1Application.html#aa303fb1c72786fc008ef52079dee4fe3">getLedgerMaster</a>();</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">auto</span> <span class="keyword">const</span> lastClosed = <a class="code hl_enumvalue" href="namespaceripple.html#ad5143ceada01141772ae4aab984f94bda7fa2267e9b1bf739a70bb1860ab2a99c">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">getClosedLedger</a>();</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">auto</span> <span class="keyword">const</span> lastClosedParent =</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <a class="code hl_enumvalue" href="namespaceripple.html#ad5143ceada01141772ae4aab984f94bda7fa2267e9b1bf739a70bb1860ab2a99c">ledgerMaster</a>.getLedgerByHash(lastClosed-&gt;info().parentHash);</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">auto</span> <span class="keyword">const</span> replayed = <a class="code hl_function" href="namespaceripple.html#aa07252133d75f88c31a9970df1c37e90">buildLedger</a>(</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <a class="code hl_class" href="classripple_1_1LedgerReplay.html">LedgerReplay</a>(lastClosedParent, lastClosed),</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <a class="code hl_enumvalue" href="namespaceripple.html#ad2487abbcc1a5d6064b72144b461df6eaf77cbea9706ce2ee7fdf5a85efbf70c5">tapNONE</a>,</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#acd48f8ab02c37b1a30cedf4dec7cc96c">app</a>(),</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> env.<a class="code hl_variable" href="classripple_1_1test_1_1jtx_1_1Env.html#acfdfa1e283de8fb2dad0216cd1711307">journal</a>);</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> BEAST_EXPECT(replayed-&gt;info().hash == lastClosed-&gt;info().hash);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> }</div>
</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span>};</div>
</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
<div class="foldopen" id="foldopen00055" data-start="{" data-end="};">
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0a"> 55</a></span><span class="keyword">enum class</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0a">InboundLedgersBehavior</a> {</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa0c6ad70beb3a7e76c3fc7adab7c46acc">Good</a>,</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa6a6decd76984eed63a0c173f9f574487">DropAll</a>,</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span>};</div>
</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="foldopen" id="foldopen00065" data-start="{" data-end="};">
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html"> 65</a></span><span class="keyword">class </span><a class="code hl_class" href="classripple_1_1test_1_1MagicInboundLedgers.html">MagicInboundLedgers</a> : <span class="keyword">public</span> <a class="code hl_class" href="classripple_1_1InboundLedgers.html">InboundLedgers</a></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span>{</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00068" data-start="{" data-end="}">
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#a9701b8cb01c56429bdd9ff13031d445b"> 68</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#a9701b8cb01c56429bdd9ff13031d445b">MagicInboundLedgers</a>(</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <a class="code hl_class" href="classripple_1_1LedgerMaster.html">LedgerMaster</a>&amp; <a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#accaf15f353482bd8bf530e814d4323f3">ledgerSource</a>,</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <a class="code hl_class" href="classripple_1_1LedgerMaster.html">LedgerMaster</a>&amp; <a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#a2832e03e8024e529d172241404b707b6">ledgerSink</a>,</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0a">InboundLedgersBehavior</a> <a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#afb8d9471a9ae0de7b80649dc1009941a">bhvr</a>)</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> : <a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#accaf15f353482bd8bf530e814d4323f3">ledgerSource</a>(<a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#accaf15f353482bd8bf530e814d4323f3">ledgerSource</a>), <a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#a2832e03e8024e529d172241404b707b6">ledgerSink</a>(<a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#a2832e03e8024e529d172241404b707b6">ledgerSink</a>), <a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#afb8d9471a9ae0de7b80649dc1009941a">bhvr</a>(<a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#afb8d9471a9ae0de7b80649dc1009941a">bhvr</a>)</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> {</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> }</div>
</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#a554adb6009c94720ea6a0b4f2c3b09ba"> 75</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#a554adb6009c94720ea6a0b4f2c3b09ba">~MagicInboundLedgers</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">virtual</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger const&gt;</a></div>
<div class="foldopen" id="foldopen00078" data-start="{" data-end="}">
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#aea192ed7c43895d59e801625db5e7521"> 78</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#aea192ed7c43895d59e801625db5e7521">acquire</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; hash, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>, <a class="code hl_enumeration" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7">InboundLedger::Reason</a>)<span class="keyword"></span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="keyword"> override</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#afb8d9471a9ae0de7b80649dc1009941a">bhvr</a> == <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa6a6decd76984eed63a0c173f9f574487">InboundLedgersBehavior::DropAll</a>)</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> l = <a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#accaf15f353482bd8bf530e814d4323f3">ledgerSource</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#ae766ee72c3e4825d6c59be59f64c73c4">getLedgerByHash</a>(hash); l)</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> {</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#a2832e03e8024e529d172241404b707b6">ledgerSink</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#adbb16e4fb8acf01bd535684e45d20051">storeLedger</a>(l);</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">return</span> l;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> }</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> }</div>
</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00093" data-start="{" data-end="}">
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#a08b979d6bf0f113b252cb1573214842c"> 93</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#a08b979d6bf0f113b252cb1573214842c">acquireAsync</a>(</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; hash,</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>,</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <a class="code hl_enumeration" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7">InboundLedger::Reason</a> reason)<span class="keyword"> override</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> }</div>
</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">virtual</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;InboundLedger&gt;</a></div>
<div class="foldopen" id="foldopen00101" data-start="{" data-end="}">
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#a4d45327225ec164ac3a96d9abb259e33"> 101</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#a4d45327225ec164ac3a96d9abb259e33">find</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">LedgerHash</a> <span class="keyword">const</span>&amp; hash)<span class="keyword"> override</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> }</div>
</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> </div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00107" data-start="{" data-end="}">
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#a32ad5902ac5e1149893eb38b3cf1ab2e"> 107</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#a32ad5902ac5e1149893eb38b3cf1ab2e">gotLedgerData</a>(</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <a class="code hl_class" href="classripple_1_1base__uint.html">LedgerHash</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="namespaceripple_1_1test.html#a0bd41ec0e7d28cae7397e33711e22ff5">ledgerHash</a>,</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Peer&gt;</a>,</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;protocol::TMLedgerData&gt;</a>)<span class="keyword"> override</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> }</div>
</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00116" data-start="{" data-end="}">
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#ab40a62e766af5c40dbc03f571f22083c"> 116</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#ab40a62e766af5c40dbc03f571f22083c">gotStaleData</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;protocol::TMLedgerData&gt;</a> packet)<span class="keyword"> override</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> }</div>
</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00121" data-start="{" data-end="}">
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#a8b5dec1e1d8d856f4406c59b63c6174c"> 121</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#a8b5dec1e1d8d856f4406c59b63c6174c">logFailure</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; h, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>)<span class="keyword"> override</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> }</div>
</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00126" data-start="{" data-end="}">
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#aa284042ad6d4bea239c65803884f2b54"> 126</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#aa284042ad6d4bea239c65803884f2b54">isFailure</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; h)<span class="keyword"> override</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> }</div>
</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00132" data-start="{" data-end="}">
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#a2a0e7fb5a536af0345a8907127699add"> 132</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#a2a0e7fb5a536af0345a8907127699add">clearFailures</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> }</div>
</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a></div>
<div class="foldopen" id="foldopen00137" data-start="{" data-end="}">
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#a5cc0f2ed06a80fc9d04d346edf0caa4c"> 137</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#a5cc0f2ed06a80fc9d04d346edf0caa4c">getInfo</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> }</div>
</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keyword">virtual</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div>
<div class="foldopen" id="foldopen00143" data-start="{" data-end="}">
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#ad121c705b23993a932db17e2e4a21ae1"> 143</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#ad121c705b23993a932db17e2e4a21ae1">fetchRate</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> }</div>
</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> </div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00149" data-start="{" data-end="}">
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#a13db828e982bb41618dea15a8b01e003"> 149</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#a13db828e982bb41618dea15a8b01e003">onLedgerFetched</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> }</div>
</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00154" data-start="{" data-end="}">
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#ad721f621115df060fa2f9882dd8891d7"> 154</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#ad721f621115df060fa2f9882dd8891d7">gotFetchPack</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> }</div>
</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00158" data-start="{" data-end="}">
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#a3b9573297de275d86c441ac4cc5b2d49"> 158</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#a3b9573297de275d86c441ac4cc5b2d49">sweep</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> }</div>
</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00163" data-start="{" data-end="}">
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#a624ebbf034f8c0d13e795ee4b22c33a5"> 163</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#a624ebbf034f8c0d13e795ee4b22c33a5">stop</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> }</div>
</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span></div>
<div class="foldopen" id="foldopen00168" data-start="{" data-end="}">
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#a76b767a94cdcc71676302a7958daf57c"> 168</a></span> <a class="code hl_function" href="classripple_1_1test_1_1MagicInboundLedgers.html#a76b767a94cdcc71676302a7958daf57c">cacheSize</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> }</div>
</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#accaf15f353482bd8bf530e814d4323f3"> 173</a></span> <a class="code hl_class" href="classripple_1_1LedgerMaster.html">LedgerMaster</a>&amp; <a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#accaf15f353482bd8bf530e814d4323f3">ledgerSource</a>;</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#a2832e03e8024e529d172241404b707b6"> 174</a></span> <a class="code hl_class" href="classripple_1_1LedgerMaster.html">LedgerMaster</a>&amp; <a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#a2832e03e8024e529d172241404b707b6">ledgerSink</a>;</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1MagicInboundLedgers.html#afb8d9471a9ae0de7b80649dc1009941a"> 175</a></span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0a">InboundLedgersBehavior</a> <a class="code hl_variable" href="classripple_1_1test_1_1MagicInboundLedgers.html#afb8d9471a9ae0de7b80649dc1009941a">bhvr</a>;</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span>};</div>
</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> </div>
<div class="foldopen" id="foldopen00178" data-start="{" data-end="};">
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"><a class="line" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3e"> 178</a></span><span class="keyword">enum class</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3e">PeerFeature</a> {</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ead26b2afca64340e74d57ba14421d17dc">LedgerReplayEnabled</a>,</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1None.html">None</a>,</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span>};</div>
</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
<div class="foldopen" id="foldopen00188" data-start="{" data-end="};">
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html"> 188</a></span><span class="keyword">class </span><a class="code hl_class" href="classripple_1_1test_1_1TestPeer.html">TestPeer</a> : <span class="keyword">public</span> <a class="code hl_class" href="classripple_1_1Peer.html">Peer</a></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span>{</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00191" data-start="{" data-end="}">
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a3b4e4157bd2e5e17221a01e06d520070"> 191</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a3b4e4157bd2e5e17221a01e06d520070">TestPeer</a>(<span class="keywordtype">bool</span> enableLedgerReplay)</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> : <a class="code hl_variable" href="classripple_1_1test_1_1TestPeer.html#a69752edc130b66cf2ec1fb93043882ee">ledgerReplayEnabled_</a>(enableLedgerReplay)</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> , <a class="code hl_variable" href="classripple_1_1test_1_1TestPeer.html#a099b75d566f77ae2d292d7c3830b061a">nodePublicKey_</a>(<a class="code hl_function" href="namespaceripple.html#a701ede864bf93a008a22a2a7fee9bfb3">derivePublicKey</a>(<a class="code hl_enumeration" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4dde">KeyType</a>::<a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea8183aa2c95dc1385c8f58bf1917fcb0b">ed25519</a>, <a class="code hl_function" href="namespaceripple.html#a962f446a4782087cfa554c9c926681f8">randomSecretKey</a>()))</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> {</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> }</div>
</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> </div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00198" data-start="{" data-end="}">
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a49a0c65115d326e7fbd38be43a800f8d"> 198</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a49a0c65115d326e7fbd38be43a800f8d">send</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Message&gt;</a> <span class="keyword">const</span>&amp; m)<span class="keyword"> override</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> }</div>
</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <a class="code hl_class" href="classbeast_1_1IP_1_1Endpoint.html">beast::IP::Endpoint</a></div>
<div class="foldopen" id="foldopen00202" data-start="{" data-end="}">
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a31b518b004fd1fa0d597036180f21a5b"> 202</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a31b518b004fd1fa0d597036180f21a5b">getRemoteAddress</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> }</div>
</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00207" data-start="{" data-end="}">
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a479a3a2fe0d73accb0cbeecad0b47f57"> 207</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a479a3a2fe0d73accb0cbeecad0b47f57">charge</a>(<a class="code hl_class" href="classripple_1_1Resource_1_1Charge.html">Resource::Charge</a> <span class="keyword">const</span>&amp; <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; context = {})</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="keyword">override</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> {</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> }</div>
</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <a class="code hl_typedef" href="classripple_1_1Peer.html#a56cc3cdd9c73921f23cb43a2bfa696a1">id_t</a></div>
<div class="foldopen" id="foldopen00212" data-start="{" data-end="}">
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a71506ecf36760b766e81a453df84e91a"> 212</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a71506ecf36760b766e81a453df84e91a">id</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="keywordflow">return</span> 1234;</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> }</div>
</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00217" data-start="{" data-end="}">
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a088d1200aef40cbe192d1af3521ecbf8"> 217</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a088d1200aef40cbe192d1af3521ecbf8">cluster</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> }</div>
</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00222" data-start="{" data-end="}">
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a9c0bccd0f4de860c3bffc56679d40906"> 222</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a9c0bccd0f4de860c3bffc56679d40906">isHighLatency</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> }</div>
</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen00227" data-start="{" data-end="}">
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a4314928c05d1c7643c057d3cd664b6ab"> 227</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a4314928c05d1c7643c057d3cd664b6ab">getScore</a>(<span class="keywordtype">bool</span>)<span class="keyword"> const override</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> }</div>
</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <a class="code hl_class" href="classripple_1_1PublicKey.html">PublicKey</a> <span class="keyword">const</span>&amp;</div>
<div class="foldopen" id="foldopen00232" data-start="{" data-end="}">
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a44ec15c3a47813d8b5af4d4233c3d3c6"> 232</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a44ec15c3a47813d8b5af4d4233c3d3c6">getNodePublic</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classripple_1_1test_1_1TestPeer.html#a099b75d566f77ae2d292d7c3830b061a">nodePublicKey_</a>;</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> }</div>
</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a></div>
<div class="foldopen" id="foldopen00237" data-start="{" data-end="}">
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a48ba2e4da830701d38b324e9c43c4176"> 237</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a48ba2e4da830701d38b324e9c43c4176">json</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> }</div>
</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00242" data-start="{" data-end="}">
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#af7b4733583f33b9d1df1a6dca0348e94"> 242</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#af7b4733583f33b9d1df1a6dca0348e94">supportsFeature</a>(<a class="code hl_enumeration" href="namespaceripple.html#a3b423ad1ba6341f945c08c13fe141150">ProtocolFeature</a> f)<span class="keyword"> const override</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <span class="keywordflow">if</span> (f == <a class="code hl_enumvalue" href="namespaceripple.html#a3b423ad1ba6341f945c08c13fe141150a955e673a299bbf8322d01b7b5e88be4e">ProtocolFeature::LedgerReplay</a> &amp;&amp; <a class="code hl_variable" href="classripple_1_1test_1_1TestPeer.html#a69752edc130b66cf2ec1fb93043882ee">ledgerReplayEnabled_</a>)</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> }</div>
</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;std::size_t&gt;</a></div>
<div class="foldopen" id="foldopen00249" data-start="{" data-end="}">
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a182e6ba88b051ea652e2182fbc39a606"> 249</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a182e6ba88b051ea652e2182fbc39a606">publisherListSequence</a>(<a class="code hl_class" href="classripple_1_1PublicKey.html">PublicKey</a> <span class="keyword">const</span>&amp;)<span class="keyword"> const override</span></div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> }</div>
</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00254" data-start="{" data-end="}">
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a07d59279bad263057859ce449fd1616b"> 254</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a07d59279bad263057859ce449fd1616b">setPublisherListSequence</a>(<a class="code hl_class" href="classripple_1_1PublicKey.html">PublicKey</a> <span class="keyword">const</span>&amp;, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> <span class="keyword">const</span>)<span class="keyword"> override</span></div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> }</div>
</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp;</div>
<div class="foldopen" id="foldopen00258" data-start="{" data-end="}">
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#aabfefb22e3bea0903b66ce925099959c"> 258</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#aabfefb22e3bea0903b66ce925099959c">getClosedLedgerHash</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <span class="keyword">static</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> hash{};</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="keywordflow">return</span> hash;</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> }</div>
</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00264" data-start="{" data-end="}">
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a021a8599de198786f1dc71901cdf1e1f"> 264</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a021a8599de198786f1dc71901cdf1e1f">hasLedger</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; hash, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>)<span class="keyword"> const override</span></div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> }</div>
</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00269" data-start="{" data-end="}">
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a638f128c9c0f62f23d22bd41e2f97eaa"> 269</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a638f128c9c0f62f23d22bd41e2f97eaa">ledgerRange</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&amp; minSeq, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&amp; maxSeq)<span class="keyword"> const override</span></div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> }</div>
</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00273" data-start="{" data-end="}">
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#aa6226f36aadeba23415ab0acc8be6670"> 273</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#aa6226f36aadeba23415ab0acc8be6670">hasTxSet</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; hash)<span class="keyword"> const override</span></div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> }</div>
</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00278" data-start="{" data-end="}">
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a8332ea46a4f78f11378b128d729e72cd"> 278</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a8332ea46a4f78f11378b128d729e72cd">cycleStatus</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> }</div>
</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00282" data-start="{" data-end="}">
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#aeab3b4b097662cd5f9ec0bfc2041bb10"> 282</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#aeab3b4b097662cd5f9ec0bfc2041bb10">hasRange</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> uMin, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> uMax)<span class="keyword"> override</span></div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> }</div>
</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00287" data-start="{" data-end="}">
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#ae6b951a8134eac2f989056efb31bb7e2"> 287</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#ae6b951a8134eac2f989056efb31bb7e2">compressionEnabled</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> }</div>
</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00292" data-start="{" data-end="}">
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#af9564cc1d134445c828262c31371d115"> 292</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#af9564cc1d134445c828262c31371d115">sendTxQueue</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> }</div>
</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00296" data-start="{" data-end="}">
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a6ce12ac767a2eead01aad09431ebd0d1"> 296</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a6ce12ac767a2eead01aad09431ebd0d1">addTxQueue</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp;)<span class="keyword"> override</span></div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> }</div>
</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00300" data-start="{" data-end="}">
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a2bdfda592c88f24d3d6c26433d092b0c"> 300</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a2bdfda592c88f24d3d6c26433d092b0c">removeTxQueue</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp;)<span class="keyword"> override</span></div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> }</div>
</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00304" data-start="{" data-end="}">
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a86cd77871fad7677f30757f903357ae2"> 304</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#a86cd77871fad7677f30757f903357ae2">txReduceRelayEnabled</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> }</div>
</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> </div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp;</div>
<div class="foldopen" id="foldopen00310" data-start="{" data-end="}">
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#aabda65d6b4e488cb3ee441b86649af96"> 310</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeer.html#aabda65d6b4e488cb3ee441b86649af96">fingerprint</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classripple_1_1test_1_1TestPeer.html#a62da3a1578b6172c24cc1b28bd1aab0b">fingerprint_</a>;</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> }</div>
</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> </div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a62da3a1578b6172c24cc1b28bd1aab0b"> 315</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <a class="code hl_variable" href="classripple_1_1test_1_1TestPeer.html#a62da3a1578b6172c24cc1b28bd1aab0b">fingerprint_</a>;</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a69752edc130b66cf2ec1fb93043882ee"> 316</a></span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classripple_1_1test_1_1TestPeer.html#a69752edc130b66cf2ec1fb93043882ee">ledgerReplayEnabled_</a>;</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeer.html#a099b75d566f77ae2d292d7c3830b061a"> 317</a></span> <a class="code hl_class" href="classripple_1_1PublicKey.html">PublicKey</a> <a class="code hl_variable" href="classripple_1_1test_1_1TestPeer.html#a099b75d566f77ae2d292d7c3830b061a">nodePublicKey_</a>;</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span>};</div>
</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> </div>
<div class="foldopen" id="foldopen00320" data-start="{" data-end="};">
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"><a class="line" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1"> 320</a></span><span class="keyword">enum class</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1">PeerSetBehavior</a> {</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa0c6ad70beb3a7e76c3fc7adab7c46acc">Good</a>,</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1ad10d06eac1b72b6b66d7e8bcd74474b6">Drop50</a>,</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa6a6decd76984eed63a0c173f9f574487">DropAll</a>,</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a1c680e775b81946aa93a83b6ad8e87d7">DropSkipListReply</a>,</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a0cf51aa72b773c64178a944bf85ef503">DropLedgerDeltaReply</a>,</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a7020426cfb0a204051be4b3053d2acc8">Repeat</a>,</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span>};</div>
</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> </div>
<div class="foldopen" id="foldopen00335" data-start="{" data-end="};">
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1TestPeerSet.html"> 335</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structripple_1_1test_1_1TestPeerSet.html">TestPeerSet</a> : <span class="keyword">public</span> <a class="code hl_class" href="classripple_1_1PeerSet.html">PeerSet</a></div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span>{</div>
<div class="foldopen" id="foldopen00337" data-start="{" data-end="}">
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1TestPeerSet.html#a6a72d6274a497c5c6b7a2b5d59519d85"> 337</a></span> <a class="code hl_function" href="structripple_1_1test_1_1TestPeerSet.html#a6a72d6274a497c5c6b7a2b5d59519d85">TestPeerSet</a>(</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <a class="code hl_class" href="classripple_1_1LedgerReplayMsgHandler.html">LedgerReplayMsgHandler</a>&amp; me,</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> <a class="code hl_class" href="classripple_1_1LedgerReplayMsgHandler.html">LedgerReplayMsgHandler</a>&amp; other,</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1">PeerSetBehavior</a> bhvr,</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <span class="keywordtype">bool</span> enableLedgerReplay)</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> : <a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#af1310036749ef7c1dde3ade149e9c281">local</a>(me)</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> , <a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#a5c3a351bb9f2eefa2a86787961cceacb">remote</a>(other)</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> , <a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#af8c75a40184be023eec9d78417a8c7df">dummyPeer</a>(<a class="code hl_namespace" href="namespacestd.html">std</a>::make_shared&lt;<a class="code hl_class" href="classripple_1_1test_1_1TestPeer.html">TestPeer</a>&gt;(enableLedgerReplay))</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> , <a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#a799f6f0f5bef6d61cccd769ecd2eb026">behavior</a>(bhvr)</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> {</div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> }</div>
</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> </div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00350" data-start="{" data-end="}">
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1TestPeerSet.html#a24a2832c1d285a0c81fb5411792645b8"> 350</a></span> <a class="code hl_function" href="structripple_1_1test_1_1TestPeerSet.html#a24a2832c1d285a0c81fb5411792645b8">addPeers</a>(</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> limit,</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a>&lt;<span class="keywordtype">bool</span>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Peer&gt;</a> <span class="keyword">const</span>&amp;)&gt; hasItem,</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a>&lt;<span class="keywordtype">void</span>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Peer&gt;</a> <span class="keyword">const</span>&amp;)&gt; onPeerAdded)<span class="keyword"> override</span></div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> hasItem(<a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#af8c75a40184be023eec9d78417a8c7df">dummyPeer</a>);</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> onPeerAdded(<a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#af8c75a40184be023eec9d78417a8c7df">dummyPeer</a>);</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> }</div>
</div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> </div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00360" data-start="{" data-end="}">
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1TestPeerSet.html#a7cd356ffd4275c4238124677dbe992d3"> 360</a></span> <a class="code hl_function" href="structripple_1_1test_1_1TestPeerSet.html#a7cd356ffd4275c4238124677dbe992d3">sendRequest</a>(</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> ::google::protobuf::Message <span class="keyword">const</span>&amp; msg,</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> protocol::MessageType type,</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Peer&gt;</a> <span class="keyword">const</span>&amp; peer)<span class="keyword"> override</span></div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keywordtype">int</span> dropRate = 0;</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#a799f6f0f5bef6d61cccd769ecd2eb026">behavior</a> == <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1ad10d06eac1b72b6b66d7e8bcd74474b6">PeerSetBehavior::Drop50</a>)</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> dropRate = 50;</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#a799f6f0f5bef6d61cccd769ecd2eb026">behavior</a> == <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a6a6decd76984eed63a0c173f9f574487">PeerSetBehavior::DropAll</a>)</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> dropRate = 100;</div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> </div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> <span class="keywordflow">if</span> ((rand() % 100 + 1) &lt;= dropRate)</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> </div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <span class="keywordflow">switch</span> (type)</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> {</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> <span class="keywordflow">case</span> protocol::mtPROOF_PATH_REQ: {</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#a799f6f0f5bef6d61cccd769ecd2eb026">behavior</a> == <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a1c680e775b81946aa93a83b6ad8e87d7">PeerSetBehavior::DropSkipListReply</a>)</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <span class="keyword">auto</span> request = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMProofPathRequest&gt;</a>(</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> <span class="keyword">dynamic_cast&lt;</span>protocol::TMProofPathRequest const&amp;<span class="keyword">&gt;</span>(msg));</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> <span class="keyword">auto</span> reply = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMProofPathResponse&gt;</a>(</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> <a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#a5c3a351bb9f2eefa2a86787961cceacb">remote</a>.<a class="code hl_function" href="classripple_1_1LedgerReplayMsgHandler.html#ae8fdb0da6b5df8ecf07772ef86ce364b">processProofPathRequest</a>(request));</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> <a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#af1310036749ef7c1dde3ade149e9c281">local</a>.<a class="code hl_function" href="classripple_1_1LedgerReplayMsgHandler.html#a6a320c690d5b3c0c34b86659b9137d37">processProofPathResponse</a>(reply);</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#a799f6f0f5bef6d61cccd769ecd2eb026">behavior</a> == <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a7020426cfb0a204051be4b3053d2acc8">PeerSetBehavior::Repeat</a>)</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> <a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#af1310036749ef7c1dde3ade149e9c281">local</a>.<a class="code hl_function" href="classripple_1_1LedgerReplayMsgHandler.html#a6a320c690d5b3c0c34b86659b9137d37">processProofPathResponse</a>(reply);</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> }</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> <span class="keywordflow">case</span> protocol::mtREPLAY_DELTA_REQ: {</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#a799f6f0f5bef6d61cccd769ecd2eb026">behavior</a> == <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a0cf51aa72b773c64178a944bf85ef503">PeerSetBehavior::DropLedgerDeltaReply</a>)</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> <span class="keyword">auto</span> request = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMReplayDeltaRequest&gt;</a>(</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> <span class="keyword">dynamic_cast&lt;</span>protocol::TMReplayDeltaRequest const&amp;<span class="keyword">&gt;</span>(msg));</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> <span class="keyword">auto</span> reply = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMReplayDeltaResponse&gt;</a>(</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#a5c3a351bb9f2eefa2a86787961cceacb">remote</a>.<a class="code hl_function" href="classripple_1_1LedgerReplayMsgHandler.html#a3cbd5e0d38896e7564a8d7ed5e1d8152">processReplayDeltaRequest</a>(request));</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> <a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#af1310036749ef7c1dde3ade149e9c281">local</a>.<a class="code hl_function" href="classripple_1_1LedgerReplayMsgHandler.html#ab6699613bbd3d92c9068738cf9b5de07">processReplayDeltaResponse</a>(reply);</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#a799f6f0f5bef6d61cccd769ecd2eb026">behavior</a> == <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a7020426cfb0a204051be4b3053d2acc8">PeerSetBehavior::Repeat</a>)</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> <a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#af1310036749ef7c1dde3ade149e9c281">local</a>.<a class="code hl_function" href="classripple_1_1LedgerReplayMsgHandler.html#ab6699613bbd3d92c9068738cf9b5de07">processReplayDeltaResponse</a>(reply);</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> }</div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> }</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> }</div>
</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> </div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/set.html">std::set&lt;Peer::id_t&gt;</a> <span class="keyword">const</span>&amp;</div>
<div class="foldopen" id="foldopen00406" data-start="{" data-end="}">
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1TestPeerSet.html#ae2219852ebf7c6a76cbe930b76780811"> 406</a></span> <a class="code hl_function" href="structripple_1_1test_1_1TestPeerSet.html#ae2219852ebf7c6a76cbe930b76780811">getPeerIds</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> <span class="keyword">static</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/set.html">std::set&lt;Peer::id_t&gt;</a> emptyPeers;</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> <span class="keywordflow">return</span> emptyPeers;</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> }</div>
</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> </div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1TestPeerSet.html#af1310036749ef7c1dde3ade149e9c281"> 412</a></span> <a class="code hl_class" href="classripple_1_1LedgerReplayMsgHandler.html">LedgerReplayMsgHandler</a>&amp; <a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#af1310036749ef7c1dde3ade149e9c281">local</a>;</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1TestPeerSet.html#a5c3a351bb9f2eefa2a86787961cceacb"> 413</a></span> <a class="code hl_class" href="classripple_1_1LedgerReplayMsgHandler.html">LedgerReplayMsgHandler</a>&amp; <a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#a5c3a351bb9f2eefa2a86787961cceacb">remote</a>;</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1TestPeerSet.html#af8c75a40184be023eec9d78417a8c7df"> 414</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;TestPeer&gt;</a> <a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#af8c75a40184be023eec9d78417a8c7df">dummyPeer</a>;</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1TestPeerSet.html#a799f6f0f5bef6d61cccd769ecd2eb026"> 415</a></span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1">PeerSetBehavior</a> <a class="code hl_variable" href="structripple_1_1test_1_1TestPeerSet.html#a799f6f0f5bef6d61cccd769ecd2eb026">behavior</a>;</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span>};</div>
</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> </div>
<div class="foldopen" id="foldopen00421" data-start="{" data-end="};">
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeerSetBuilder.html"> 421</a></span><span class="keyword">class </span><a class="code hl_class" href="classripple_1_1test_1_1TestPeerSetBuilder.html">TestPeerSetBuilder</a> : <span class="keyword">public</span> <a class="code hl_class" href="classripple_1_1PeerSetBuilder.html">PeerSetBuilder</a></div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span>{</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00424" data-start="{" data-end="}">
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeerSetBuilder.html#acb43c49d60b31a842a9d799aac5346bf"> 424</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeerSetBuilder.html#acb43c49d60b31a842a9d799aac5346bf">TestPeerSetBuilder</a>(</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> <a class="code hl_class" href="classripple_1_1LedgerReplayMsgHandler.html">LedgerReplayMsgHandler</a>&amp; me,</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> <a class="code hl_class" href="classripple_1_1LedgerReplayMsgHandler.html">LedgerReplayMsgHandler</a>&amp; other,</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1">PeerSetBehavior</a> bhvr,</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3e">PeerFeature</a> peerFeature)</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> : <a class="code hl_variable" href="classripple_1_1test_1_1TestPeerSetBuilder.html#a6686c411e2ed6370b44ccaf511cec3e9">local</a>(me)</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> , <a class="code hl_variable" href="classripple_1_1test_1_1TestPeerSetBuilder.html#ac4915c4e114f34356c1dbbef1faef49c">remote</a>(other)</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> , <a class="code hl_variable" href="classripple_1_1test_1_1TestPeerSetBuilder.html#a28a513b938b38d0de9f1ca2d89a7a028">behavior</a>(bhvr)</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> , <a class="code hl_variable" href="classripple_1_1test_1_1TestPeerSetBuilder.html#a00e5264bd04a91e5cf6af1c151568e3f">enableLedgerReplay</a>(peerFeature == <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3e">PeerFeature</a>::<a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ead26b2afca64340e74d57ba14421d17dc">LedgerReplayEnabled</a>)</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> {</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> }</div>
</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> </div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;PeerSet&gt;</a></div>
<div class="foldopen" id="foldopen00437" data-start="{" data-end="}">
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeerSetBuilder.html#aa79f4c1971bcc3071933ceafe97c72ba"> 437</a></span> <a class="code hl_function" href="classripple_1_1test_1_1TestPeerSetBuilder.html#aa79f4c1971bcc3071933ceafe97c72ba">build</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> <span class="keywordflow">return</span> <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_unique&lt;TestPeerSet&gt;</a>(</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <a class="code hl_variable" href="classripple_1_1test_1_1TestPeerSetBuilder.html#a6686c411e2ed6370b44ccaf511cec3e9">local</a>, <a class="code hl_variable" href="classripple_1_1test_1_1TestPeerSetBuilder.html#ac4915c4e114f34356c1dbbef1faef49c">remote</a>, <a class="code hl_variable" href="classripple_1_1test_1_1TestPeerSetBuilder.html#a28a513b938b38d0de9f1ca2d89a7a028">behavior</a>, <a class="code hl_variable" href="classripple_1_1test_1_1TestPeerSetBuilder.html#a00e5264bd04a91e5cf6af1c151568e3f">enableLedgerReplay</a>);</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> }</div>
</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> </div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeerSetBuilder.html#a6686c411e2ed6370b44ccaf511cec3e9"> 444</a></span> <a class="code hl_class" href="classripple_1_1LedgerReplayMsgHandler.html">LedgerReplayMsgHandler</a>&amp; <a class="code hl_variable" href="classripple_1_1test_1_1TestPeerSetBuilder.html#a6686c411e2ed6370b44ccaf511cec3e9">local</a>;</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeerSetBuilder.html#ac4915c4e114f34356c1dbbef1faef49c"> 445</a></span> <a class="code hl_class" href="classripple_1_1LedgerReplayMsgHandler.html">LedgerReplayMsgHandler</a>&amp; <a class="code hl_variable" href="classripple_1_1test_1_1TestPeerSetBuilder.html#ac4915c4e114f34356c1dbbef1faef49c">remote</a>;</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeerSetBuilder.html#a28a513b938b38d0de9f1ca2d89a7a028"> 446</a></span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1">PeerSetBehavior</a> <a class="code hl_variable" href="classripple_1_1test_1_1TestPeerSetBuilder.html#a28a513b938b38d0de9f1ca2d89a7a028">behavior</a>;</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TestPeerSetBuilder.html#a00e5264bd04a91e5cf6af1c151568e3f"> 447</a></span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classripple_1_1test_1_1TestPeerSetBuilder.html#a00e5264bd04a91e5cf6af1c151568e3f">enableLedgerReplay</a>;</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span>};</div>
</div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> </div>
<div class="foldopen" id="foldopen00454" data-start="{" data-end="};">
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer.html"> 454</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structripple_1_1test_1_1LedgerServer.html">LedgerServer</a></div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span>{</div>
<div class="foldopen" id="foldopen00456" data-start="{" data-end="};">
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html"> 456</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html">Parameter</a></div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> {</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#a947fbed427c671d15ed304f91bf11a69"> 458</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#a947fbed427c671d15ed304f91bf11a69">initLedgers</a>;</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#ac89bc3a7ddbafabdb29a3fd68f7bc2de"> 459</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#ac89bc3a7ddbafabdb29a3fd68f7bc2de">initAccounts</a> = 10;</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#a3bd21cf955ad336652eb8db52daa0374"> 460</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#a3bd21cf955ad336652eb8db52daa0374">initAmount</a> = 1&#39;000&#39;000;</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#adbbed62a46f1a4a84a915ade1f310be2"> 461</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#adbbed62a46f1a4a84a915ade1f310be2">numTxPerLedger</a> = 10;</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#ae24872442b2dee7b6bfca3f5ef47a027"> 462</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#ae24872442b2dee7b6bfca3f5ef47a027">txAmount</a> = 10;</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> };</div>
</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> </div>
<div class="foldopen" id="foldopen00465" data-start="{" data-end="}">
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer.html#abff2f2828e099d0f90dfc681651da211"> 465</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerServer.html#abff2f2828e099d0f90dfc681651da211">LedgerServer</a>(<a class="code hl_class" href="classbeast_1_1unit__test_1_1suite.html">beast::unit_test::suite</a>&amp; suite, <a class="code hl_struct" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html">Parameter</a> <span class="keyword">const</span>&amp; p)</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> : <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a1bff2a2006f1201bd5011983447fd70a">env</a>(suite)</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> , <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#aff3c327d9717f5c25e38398d25611505">app</a>(<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a1bff2a2006f1201bd5011983447fd70a">env</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#aff3c327d9717f5c25e38398d25611505">app</a>())</div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> , <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>(<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a1bff2a2006f1201bd5011983447fd70a">env</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#aff3c327d9717f5c25e38398d25611505">app</a>().getLedgerMaster())</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> , <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a61f9b82d3c39b758b5541ad15cb1ba01">msgHandler</a>(<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a1bff2a2006f1201bd5011983447fd70a">env</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#aff3c327d9717f5c25e38398d25611505">app</a>(), <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a1bff2a2006f1201bd5011983447fd70a">env</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#aff3c327d9717f5c25e38398d25611505">app</a>().getLedgerReplayer())</div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> , <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a26da34be0f0ac39fb41c6d546a304873">param</a>(p)</div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> {</div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> assert(<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a26da34be0f0ac39fb41c6d546a304873">param</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#a947fbed427c671d15ed304f91bf11a69">initLedgers</a> &gt; 0);</div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerServer.html#a3261f40eb9a4a7739130ec465ed91bba">createAccounts</a>(<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a26da34be0f0ac39fb41c6d546a304873">param</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#ac89bc3a7ddbafabdb29a3fd68f7bc2de">initAccounts</a>);</div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerServer.html#ab9907fe3f5816162ad3a6c30fdf37f27">createLedgerHistory</a>();</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#aff3c327d9717f5c25e38398d25611505">app</a>.<a class="code hl_function" href="classripple_1_1Application.html#ad096c64f86e5573a450cf0338c79c086">logs</a>().<a class="code hl_function" href="classripple_1_1Logs.html#a5dc4fb3cb9c2b3c42fd54bef18d06c83">threshold</a>(<a class="code hl_enumvalue" href="namespacebeast_1_1severities.html#a069a8a312b9123b77f6aa31733ca73beab6ef7006e42e82dcc97478e4e362f883">beast::severities::kWarning</a>);</div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> }</div>
</div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> </div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00482" data-start="{" data-end="}">
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer.html#a3261f40eb9a4a7739130ec465ed91bba"> 482</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerServer.html#a3261f40eb9a4a7739130ec465ed91bba">createAccounts</a>(<span class="keywordtype">int</span> newAccounts)</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> {</div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> <span class="keyword">auto</span> fundedAccounts = <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a86a1876cfb0bbc6259f6f82e455e5857">accounts</a>.size();</div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; newAccounts; ++i)</div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> {</div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a86a1876cfb0bbc6259f6f82e455e5857">accounts</a>.emplace_back(</div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> <span class="stringliteral">&quot;alice_&quot;</span> + <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/string/basic_string/to_string.html">std::to_string</a>(fundedAccounts + i));</div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a1bff2a2006f1201bd5011983447fd70a">env</a>.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#ae2349266cb09d1f1c3de06606ebdf9e2">fund</a>(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">jtx::XRP</a>(<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a26da34be0f0ac39fb41c6d546a304873">param</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#a3bd21cf955ad336652eb8db52daa0374">initAmount</a>), <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a86a1876cfb0bbc6259f6f82e455e5857">accounts</a>.back());</div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> }</div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a1bff2a2006f1201bd5011983447fd70a">env</a>.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#a69095691c9bcfab1f3d69c645f2dbe33">close</a>();</div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> }</div>
</div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> </div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00498" data-start="{" data-end="}">
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer.html#a2e1385f78f784b361d58f32487ccaaef"> 498</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerServer.html#a2e1385f78f784b361d58f32487ccaaef">sendPayments</a>(<span class="keywordtype">int</span> newTxes)</div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> {</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> <span class="keywordtype">int</span> fundedAccounts = <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a86a1876cfb0bbc6259f6f82e455e5857">accounts</a>.size();</div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> assert(fundedAccounts &gt;= newTxes);</div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/unordered_set.html">std::unordered_set&lt;int&gt;</a> senders;</div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> </div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> <span class="comment">// somewhat random but reproducible</span></div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> <span class="keywordtype">int</span> r = <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">getClosedLedger</a>()-&gt;seq() * 7;</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> <span class="keywordtype">int</span> fromIdx = 0;</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> <span class="keywordtype">int</span> toIdx = 0;</div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> <span class="keyword">auto</span> updateIdx = [&amp;]() {</div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> assert(fundedAccounts &gt; senders.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/size.html">size</a>());</div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> fromIdx = (fromIdx + r) % fundedAccounts;</div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> <span class="keywordflow">while</span> (senders.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/count.html">count</a>(fromIdx) != 0)</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> fromIdx = (fromIdx + 1) % fundedAccounts;</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> senders.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/insert.html">insert</a>(fromIdx);</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> toIdx = (toIdx + r * 2) % fundedAccounts;</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> <span class="keywordflow">if</span> (toIdx == fromIdx)</div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> toIdx = (toIdx + 1) % fundedAccounts;</div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> };</div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> </div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; newTxes; ++i)</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> {</div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> updateIdx();</div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a1bff2a2006f1201bd5011983447fd70a">env</a>.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#ad829b507ce6a9044610448cbbc35bd97">apply</a>(</div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a66b99468a4160bccaa9959a444b40d40">pay</a>(<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a86a1876cfb0bbc6259f6f82e455e5857">accounts</a>[fromIdx],</div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a86a1876cfb0bbc6259f6f82e455e5857">accounts</a>[toIdx],</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">jtx::drops</a>(<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">getClosedLedger</a>()-&gt;fees().base) +</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">jtx::XRP</a>(<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a26da34be0f0ac39fb41c6d546a304873">param</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#ae24872442b2dee7b6bfca3f5ef47a027">txAmount</a>)),</div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span> <a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1seq.html">jtx::seq</a>(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#a34d36a371e1f4873695f3eecd5ccc82b">jtx::autofill</a>),</div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">jtx::fee</a>(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#a34d36a371e1f4873695f3eecd5ccc82b">jtx::autofill</a>),</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1sig.html">jtx::sig</a>(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#a34d36a371e1f4873695f3eecd5ccc82b">jtx::autofill</a>));</div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> }</div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a1bff2a2006f1201bd5011983447fd70a">env</a>.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#a69095691c9bcfab1f3d69c645f2dbe33">close</a>();</div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> }</div>
</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> </div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00538" data-start="{" data-end="}">
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer.html#ab9907fe3f5816162ad3a6c30fdf37f27"> 538</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerServer.html#ab9907fe3f5816162ad3a6c30fdf37f27">createLedgerHistory</a>()</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> {</div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a26da34be0f0ac39fb41c6d546a304873">param</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#a947fbed427c671d15ed304f91bf11a69">initLedgers</a> - 1; ++i)</div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> {</div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerServer.html#a2e1385f78f784b361d58f32487ccaaef">sendPayments</a>(<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a26da34be0f0ac39fb41c6d546a304873">param</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#adbbed62a46f1a4a84a915ade1f310be2">numTxPerLedger</a>);</div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> }</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> }</div>
</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> </div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer.html#a1bff2a2006f1201bd5011983447fd70a"> 546</a></span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">jtx::Env</a> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a1bff2a2006f1201bd5011983447fd70a">env</a>;</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer.html#aff3c327d9717f5c25e38398d25611505"> 547</a></span> <a class="code hl_class" href="classripple_1_1Application.html">Application</a>&amp; <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#aff3c327d9717f5c25e38398d25611505">app</a>;</div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7"> 548</a></span> <a class="code hl_class" href="classripple_1_1LedgerMaster.html">LedgerMaster</a>&amp; <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>;</div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer.html#a61f9b82d3c39b758b5541ad15cb1ba01"> 549</a></span> <a class="code hl_class" href="classripple_1_1LedgerReplayMsgHandler.html">LedgerReplayMsgHandler</a> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a61f9b82d3c39b758b5541ad15cb1ba01">msgHandler</a>;</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer.html#a26da34be0f0ac39fb41c6d546a304873"> 550</a></span> <a class="code hl_struct" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html">Parameter</a> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a26da34be0f0ac39fb41c6d546a304873">param</a>;</div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerServer.html#a86a1876cfb0bbc6259f6f82e455e5857"> 551</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;jtx::Account&gt;</a> <a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a86a1876cfb0bbc6259f6f82e455e5857">accounts</a>;</div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span>};</div>
</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> </div>
<div class="foldopen" id="foldopen00554" data-start="{" data-end="};">
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"><a class="line" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1f"> 554</a></span><span class="keyword">enum class</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1f">TaskStatus</a> {</div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca">Failed</a>,</div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">Completed</a>,</div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa71b56450c5e1ce9ce5f10422f47beb06">NotDone</a>,</div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"> 558</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fac30e98851cafc795dbe00917b7c4ccf8">NotExist</a>,</div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"> 559</span>};</div>
</div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span> </div>
<div class="foldopen" id="foldopen00568" data-start="{" data-end="};">
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html"> 568</a></span><span class="keyword">class </span><a class="code hl_class" href="classripple_1_1test_1_1LedgerReplayClient.html">LedgerReplayClient</a></div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span>{</div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00571" data-start="{" data-end="}">
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#aadb938dc9624da72d3cdabc7cf8c998e"> 571</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#aadb938dc9624da72d3cdabc7cf8c998e">LedgerReplayClient</a>(</div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span> <a class="code hl_class" href="classbeast_1_1unit__test_1_1suite.html">beast::unit_test::suite</a>&amp; suite,</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> <a class="code hl_struct" href="structripple_1_1test_1_1LedgerServer.html">LedgerServer</a>&amp; server,</div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1">PeerSetBehavior</a> behavior = <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a0c6ad70beb3a7e76c3fc7adab7c46acc">PeerSetBehavior::Good</a>,</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0a">InboundLedgersBehavior</a> inboundBhvr = <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa0c6ad70beb3a7e76c3fc7adab7c46acc">InboundLedgersBehavior::Good</a>,</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3e">PeerFeature</a> peerFeature = <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ead26b2afca64340e74d57ba14421d17dc">PeerFeature::LedgerReplayEnabled</a>)</div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> : <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#af329e3e7df56437bbac7a893f599b5be">env</a>(suite, jtx::<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a7a4caa0465c555c5c59ce7c0d0d48d78">envconfig</a>(), nullptr, <a class="code hl_namespace" href="namespacebeast.html">beast</a>::severities::<a class="code hl_enumvalue" href="namespacebeast_1_1severities.html#a069a8a312b9123b77f6aa31733ca73beae13a45640877c138fc59c94443ece6f0">kDisabled</a>)</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> , <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a59c4fbdbb3b8da098a1d7e383a0eb77c">app</a>(<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#af329e3e7df56437bbac7a893f599b5be">env</a>.<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a59c4fbdbb3b8da098a1d7e383a0eb77c">app</a>())</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> , <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a3cfdfe289ee6550afa6208e9d7b156df">ledgerMaster</a>(<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#af329e3e7df56437bbac7a893f599b5be">env</a>.<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a59c4fbdbb3b8da098a1d7e383a0eb77c">app</a>().getLedgerMaster())</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> , <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a2fd55a364cc77413544b6901d17c8de0">inboundLedgers</a>(</div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span> server.<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a59c4fbdbb3b8da098a1d7e383a0eb77c">app</a>.getLedgerMaster(),</div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a3cfdfe289ee6550afa6208e9d7b156df">ledgerMaster</a>,</div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> inboundBhvr)</div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> , <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a5473dd2f3e5ec26fef3706e39b19fd59">serverMsgHandler</a>(server.<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a59c4fbdbb3b8da098a1d7e383a0eb77c">app</a>, server.<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a59c4fbdbb3b8da098a1d7e383a0eb77c">app</a>.getLedgerReplayer())</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> , <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a3b807716f400ad71b763fde18e0e15d0">clientMsgHandler</a>(<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#af329e3e7df56437bbac7a893f599b5be">env</a>.<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a59c4fbdbb3b8da098a1d7e383a0eb77c">app</a>(), <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>)</div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> , <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>(</div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#af329e3e7df56437bbac7a893f599b5be">env</a>.<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a59c4fbdbb3b8da098a1d7e383a0eb77c">app</a>(),</div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a2fd55a364cc77413544b6901d17c8de0">inboundLedgers</a>,</div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span> <a class="code hl_namespace" href="namespacestd.html">std</a>::make_unique&lt;<a class="code hl_class" href="classripple_1_1test_1_1TestPeerSetBuilder.html">TestPeerSetBuilder</a>&gt;(</div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a3b807716f400ad71b763fde18e0e15d0">clientMsgHandler</a>,</div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a5473dd2f3e5ec26fef3706e39b19fd59">serverMsgHandler</a>,</div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span> behavior,</div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span> peerFeature))</div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> {</div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span> }</div>
</div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> </div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00598" data-start="{" data-end="}">
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#ae05278d8cf1ae82458e19c0c483b6f49"> 598</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#ae05278d8cf1ae82458e19c0c483b6f49">addLedger</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger const&gt;</a> <span class="keyword">const</span>&amp; l)</div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> {</div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a3cfdfe289ee6550afa6208e9d7b156df">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#adbb16e4fb8acf01bd535684e45d20051">storeLedger</a>(l);</div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> }</div>
</div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> </div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00604" data-start="{" data-end="}">
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a716f0341fb3ff3c701bcf81ee085605c"> 604</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a716f0341fb3ff3c701bcf81ee085605c">haveLedgers</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; finishLedgerHash, <span class="keywordtype">int</span> totalReplay)</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> {</div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> hash = finishLedgerHash;</div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> <span class="keywordtype">int</span> i = 0;</div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> <span class="keywordflow">for</span> (; i &lt; totalReplay; ++i)</div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span> {</div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> <span class="keyword">auto</span> <span class="keyword">const</span> l = <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a3cfdfe289ee6550afa6208e9d7b156df">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#ae766ee72c3e4825d6c59be59f64c73c4">getLedgerByHash</a>(hash);</div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span> <span class="keywordflow">if</span> (!l)</div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span> hash = l-&gt;info().parentHash;</div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span> }</div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"> 615</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span> }</div>
</div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span> </div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00619" data-start="{" data-end="}">
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a0c45b977245b8718a74af7c8e8ac64e1"> 619</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a0c45b977245b8718a74af7c8e8ac64e1">waitForLedgers</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; finishLedgerHash, <span class="keywordtype">int</span> totalReplay)</div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> {</div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> <span class="keywordtype">int</span> totalRound = 100;</div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; totalRound; ++i)</div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span> {</div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a716f0341fb3ff3c701bcf81ee085605c">haveLedgers</a>(finishLedgerHash, totalReplay))</div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span> <span class="keywordflow">if</span> (i &lt; totalRound - 1)</div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/thread/sleep_for.html">std::this_thread::sleep_for</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::milliseconds</a>(100));</div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span> }</div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> }</div>
</div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span> </div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00633" data-start="{" data-end="}">
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a70e43267263d0831d09b12ff57b0de92"> 633</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a70e43267263d0831d09b12ff57b0de92">waitForDone</a>()</div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> {</div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> <span class="keywordtype">int</span> totalRound = 100;</div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; totalRound; ++i)</div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> {</div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> <span class="keywordtype">bool</span> allDone = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> {</div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/unique_lock.html">std::unique_lock&lt;std::mutex&gt;</a> lock(<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#ac0bcab237e804acef639e21822204a3e">mtx_</a>);</div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; t : <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#a1b3a65f4362211b322e949f6b5f2b9f1">tasks_</a>)</div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span> {</div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span> <span class="keywordflow">if</span> (!t-&gt;finished())</div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span> {</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span> allDone = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"> 646</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span> }</div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span> }</div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span> }</div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> <span class="keywordflow">if</span> (allDone)</div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span> <span class="keywordflow">if</span> (i &lt; totalRound - 1)</div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/thread/sleep_for.html">std::this_thread::sleep_for</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::milliseconds</a>(100));</div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> }</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> }</div>
</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> </div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::shared_ptr&lt;LedgerReplayTask&gt;</a>&gt;</div>
<div class="foldopen" id="foldopen00659" data-start="{" data-end="}">
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a6ba1ce43c51d3d9d46571d362d3c92c4"> 659</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a6ba1ce43c51d3d9d46571d362d3c92c4">getTasks</a>()</div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> {</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/unique_lock.html">std::unique_lock&lt;std::mutex&gt;</a> lock(<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#ac0bcab237e804acef639e21822204a3e">mtx_</a>);</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#a1b3a65f4362211b322e949f6b5f2b9f1">tasks_</a>;</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> }</div>
</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> </div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;LedgerReplayTask&gt;</a></div>
<div class="foldopen" id="foldopen00666" data-start="{" data-end="}">
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a43df7b002c221ea7ffb8e3defc7b3a67"> 666</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a43df7b002c221ea7ffb8e3defc7b3a67">findTask</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; hash, <span class="keywordtype">int</span> totalReplay)</div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span> {</div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/unique_lock.html">std::unique_lock&lt;std::mutex&gt;</a> lock(<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#ac0bcab237e804acef639e21822204a3e">mtx_</a>);</div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> <span class="keyword">auto</span> i = <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/algorithm/find.html">std::find_if</a>(</div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#a1b3a65f4362211b322e949f6b5f2b9f1">tasks_</a>.begin(), <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#a1b3a65f4362211b322e949f6b5f2b9f1">tasks_</a>.end(), [&amp;](<span class="keyword">auto</span> <span class="keyword">const</span>&amp; t) {</div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span> return t-&gt;parameter_.finishHash_ == hash &amp;&amp;</div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> t-&gt;parameter_.totalLedgers_ == totalReplay;</div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span> });</div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"> 674</span> <span class="keywordflow">if</span> (i == <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#a1b3a65f4362211b322e949f6b5f2b9f1">tasks_</a>.end())</div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> <span class="keywordflow">return</span> *i;</div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span> }</div>
</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> </div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div>
<div class="foldopen" id="foldopen00680" data-start="{" data-end="}">
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a566db0f6d52bb7951fcb5919b77feffb"> 680</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a566db0f6d52bb7951fcb5919b77feffb">countDeltas</a>()</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> {</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/unique_lock.html">std::unique_lock&lt;std::mutex&gt;</a> lock(<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#ac0bcab237e804acef639e21822204a3e">mtx_</a>);</div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#ad379e998b9ed9b7639191b52a04cee9f">deltas_</a>.size();</div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> }</div>
</div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> </div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div>
<div class="foldopen" id="foldopen00687" data-start="{" data-end="}">
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a9dac1636623a9feb03cb6a631c411f3f"> 687</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a9dac1636623a9feb03cb6a631c411f3f">countSkipLists</a>()</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> {</div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/unique_lock.html">std::unique_lock&lt;std::mutex&gt;</a> lock(<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#ac0bcab237e804acef639e21822204a3e">mtx_</a>);</div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#a8773a97fe87b7f61f2c90f1c89f982fc">skipLists_</a>.size();</div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"> 691</span> }</div>
</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span> </div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00694" data-start="{" data-end="}">
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a56298334026de896c3768c2560270c0b"> 694</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a56298334026de896c3768c2560270c0b">countsAsExpected</a>(</div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> tasks,</div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno"> 696</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> skipLists,</div>
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"> 697</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> deltas)</div>
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"> 698</span> {</div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"> 699</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/unique_lock.html">std::unique_lock&lt;std::mutex&gt;</a> lock(<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#ac0bcab237e804acef639e21822204a3e">mtx_</a>);</div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno"> 700</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#a1b3a65f4362211b322e949f6b5f2b9f1">tasks_</a>.size() == tasks &amp;&amp;</div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno"> 701</span> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#a8773a97fe87b7f61f2c90f1c89f982fc">skipLists_</a>.size() == skipLists &amp;&amp;</div>
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno"> 702</span> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#ad379e998b9ed9b7639191b52a04cee9f">deltas_</a>.size() == deltas;</div>
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno"> 703</span> }</div>
</div>
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"> 704</span> </div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"> 705</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;SkipListAcquire&gt;</a></div>
<div class="foldopen" id="foldopen00706" data-start="{" data-end="}">
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#af01fbb67f5ecce91ff3c064903fea47c"> 706</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#af01fbb67f5ecce91ff3c064903fea47c">findSkipListAcquire</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; hash)</div>
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno"> 707</span> {</div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"> 708</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/unique_lock.html">std::unique_lock&lt;std::mutex&gt;</a> lock(<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#ac0bcab237e804acef639e21822204a3e">mtx_</a>);</div>
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"> 709</span> <span class="keyword">auto</span> i = <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#a8773a97fe87b7f61f2c90f1c89f982fc">skipLists_</a>.find(hash);</div>
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno"> 710</span> <span class="keywordflow">if</span> (i == <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#a8773a97fe87b7f61f2c90f1c89f982fc">skipLists_</a>.end())</div>
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno"> 711</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno"> 712</span> <span class="keywordflow">return</span> i-&gt;second.lock();</div>
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno"> 713</span> }</div>
</div>
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno"> 714</span> </div>
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno"> 715</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;LedgerDeltaAcquire&gt;</a></div>
<div class="foldopen" id="foldopen00716" data-start="{" data-end="}">
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a6f406956a244c8d6682ec2a3d1b68364"> 716</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a6f406956a244c8d6682ec2a3d1b68364">findLedgerDeltaAcquire</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; hash)</div>
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno"> 717</span> {</div>
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno"> 718</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/unique_lock.html">std::unique_lock&lt;std::mutex&gt;</a> lock(<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#ac0bcab237e804acef639e21822204a3e">mtx_</a>);</div>
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno"> 719</span> <span class="keyword">auto</span> i = <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#ad379e998b9ed9b7639191b52a04cee9f">deltas_</a>.find(hash);</div>
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno"> 720</span> <span class="keywordflow">if</span> (i == <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>.<a class="code hl_variable" href="classripple_1_1LedgerReplayer.html#ad379e998b9ed9b7639191b52a04cee9f">deltas_</a>.end())</div>
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"> 721</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno"> 722</span> <span class="keywordflow">return</span> i-&gt;second.lock();</div>
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno"> 723</span> }</div>
</div>
<div class="line"><a id="l00724" name="l00724"></a><span class="lineno"> 724</span> </div>
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno"> 725</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00726" name="l00726"></a><span class="lineno"> 726</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1f">TaskStatus</a></div>
<div class="foldopen" id="foldopen00727" data-start="{" data-end="}">
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#acc4cd2323c54c10a2cfc61b505b4efac"> 727</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#acc4cd2323c54c10a2cfc61b505b4efac">taskStatus</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;T&gt;</a> <span class="keyword">const</span>&amp; t)</div>
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"> 728</span> {</div>
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno"> 729</span> <span class="keywordflow">if</span> (t-&gt;failed_)</div>
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno"> 730</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca">TaskStatus::Failed</a>;</div>
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno"> 731</span> <span class="keywordflow">if</span> (t-&gt;complete_)</div>
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno"> 732</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>;</div>
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"> 733</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa71b56450c5e1ce9ce5f10422f47beb06">TaskStatus::NotDone</a>;</div>
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno"> 734</span> }</div>
</div>
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno"> 735</span> </div>
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno"> 736</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00737" data-start="{" data-end="}">
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a61e8d17eca1027a5143bdf419f64a43f"> 737</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a61e8d17eca1027a5143bdf419f64a43f">asExpected</a>(</div>
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno"> 738</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;LedgerReplayTask&gt;</a> <span class="keyword">const</span>&amp; task,</div>
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno"> 739</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1f">TaskStatus</a> taskExpect,</div>
<div class="line"><a id="l00740" name="l00740"></a><span class="lineno"> 740</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1f">TaskStatus</a> skiplistExpect,</div>
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno"> 741</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;TaskStatus&gt;</a> <span class="keyword">const</span>&amp; deltaExpects)</div>
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno"> 742</span> {</div>
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno"> 743</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#acc4cd2323c54c10a2cfc61b505b4efac">taskStatus</a>(task) == taskExpect)</div>
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno"> 744</span> {</div>
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno"> 745</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#acc4cd2323c54c10a2cfc61b505b4efac">taskStatus</a>(task-&gt;skipListAcquirer_) == skiplistExpect)</div>
<div class="line"><a id="l00746" name="l00746"></a><span class="lineno"> 746</span> {</div>
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno"> 747</span> <span class="keywordflow">if</span> (task-&gt;deltas_.size() == deltaExpects.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>())</div>
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno"> 748</span> {</div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno"> 749</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; deltaExpects.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>(); ++i)</div>
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"> 750</span> {</div>
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno"> 751</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#acc4cd2323c54c10a2cfc61b505b4efac">taskStatus</a>(task-&gt;deltas_[i]) != deltaExpects[i])</div>
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno"> 752</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno"> 753</span> }</div>
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno"> 754</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno"> 755</span> }</div>
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"> 756</span> }</div>
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno"> 757</span> }</div>
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno"> 758</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno"> 759</span> }</div>
</div>
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno"> 760</span> </div>
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno"> 761</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00762" data-start="{" data-end="}">
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a2da8f3d27e2da922434b87af9ad76abc"> 762</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a2da8f3d27e2da922434b87af9ad76abc">asExpected</a>(</div>
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"> 763</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; hash,</div>
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno"> 764</span> <span class="keywordtype">int</span> totalReplay,</div>
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno"> 765</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1f">TaskStatus</a> taskExpect,</div>
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno"> 766</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1f">TaskStatus</a> skiplistExpect,</div>
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno"> 767</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;TaskStatus&gt;</a> <span class="keyword">const</span>&amp; deltaExpects)</div>
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno"> 768</span> {</div>
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno"> 769</span> <span class="keyword">auto</span> t = <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a43df7b002c221ea7ffb8e3defc7b3a67">findTask</a>(hash, totalReplay);</div>
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno"> 770</span> <span class="keywordflow">if</span> (!t)</div>
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno"> 771</span> {</div>
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno"> 772</span> <span class="keywordflow">if</span> (taskExpect == <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fac30e98851cafc795dbe00917b7c4ccf8">TaskStatus::NotExist</a>)</div>
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno"> 773</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno"> 774</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno"> 775</span> }</div>
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno"> 776</span> </div>
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno"> 777</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a61e8d17eca1027a5143bdf419f64a43f">asExpected</a>(t, taskExpect, skiplistExpect, deltaExpects);</div>
<div class="line"><a id="l00778" name="l00778"></a><span class="lineno"> 778</span> }</div>
</div>
<div class="line"><a id="l00779" name="l00779"></a><span class="lineno"> 779</span> </div>
<div class="line"><a id="l00780" name="l00780"></a><span class="lineno"> 780</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00781" data-start="{" data-end="}">
<div class="line"><a id="l00781" name="l00781"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#abfc051eb861037f706dc4a27e217a65c"> 781</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#abfc051eb861037f706dc4a27e217a65c">checkStatus</a>(</div>
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno"> 782</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; hash,</div>
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno"> 783</span> <span class="keywordtype">int</span> totalReplay,</div>
<div class="line"><a id="l00784" name="l00784"></a><span class="lineno"> 784</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1f">TaskStatus</a> taskExpect,</div>
<div class="line"><a id="l00785" name="l00785"></a><span class="lineno"> 785</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1f">TaskStatus</a> skiplistExpect,</div>
<div class="line"><a id="l00786" name="l00786"></a><span class="lineno"> 786</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;TaskStatus&gt;</a> <span class="keyword">const</span>&amp; deltaExpects)</div>
<div class="line"><a id="l00787" name="l00787"></a><span class="lineno"> 787</span> {</div>
<div class="line"><a id="l00788" name="l00788"></a><span class="lineno"> 788</span> <span class="keyword">auto</span> t = <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a43df7b002c221ea7ffb8e3defc7b3a67">findTask</a>(hash, totalReplay);</div>
<div class="line"><a id="l00789" name="l00789"></a><span class="lineno"> 789</span> <span class="keywordflow">if</span> (!t)</div>
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno"> 790</span> {</div>
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno"> 791</span> <span class="keywordflow">if</span> (taskExpect == <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fac30e98851cafc795dbe00917b7c4ccf8">TaskStatus::NotExist</a>)</div>
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno"> 792</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00793" name="l00793"></a><span class="lineno"> 793</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00794" name="l00794"></a><span class="lineno"> 794</span> }</div>
<div class="line"><a id="l00795" name="l00795"></a><span class="lineno"> 795</span> </div>
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno"> 796</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a61e8d17eca1027a5143bdf419f64a43f">asExpected</a>(t, taskExpect, skiplistExpect, deltaExpects);</div>
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno"> 797</span> }</div>
</div>
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno"> 798</span> </div>
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno"> 799</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00800" data-start="{" data-end="}">
<div class="line"><a id="l00800" name="l00800"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a2f9a7365f9ee783ad89399974c1dd47e"> 800</a></span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a2f9a7365f9ee783ad89399974c1dd47e">waitAndCheckStatus</a>(</div>
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno"> 801</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; hash,</div>
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno"> 802</span> <span class="keywordtype">int</span> totalReplay,</div>
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno"> 803</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1f">TaskStatus</a> taskExpect,</div>
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno"> 804</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1f">TaskStatus</a> skiplistExpect,</div>
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno"> 805</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;TaskStatus&gt;</a> <span class="keyword">const</span>&amp; deltaExpects)</div>
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno"> 806</span> {</div>
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno"> 807</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#a70e43267263d0831d09b12ff57b0de92">waitForDone</a>())</div>
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno"> 808</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"> 809</span> </div>
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno"> 810</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classripple_1_1test_1_1LedgerReplayClient.html#abfc051eb861037f706dc4a27e217a65c">checkStatus</a>(</div>
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno"> 811</span> hash, totalReplay, taskExpect, skiplistExpect, deltaExpects);</div>
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno"> 812</span> }</div>
</div>
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno"> 813</span> </div>
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#af329e3e7df56437bbac7a893f599b5be"> 814</a></span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">jtx::Env</a> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#af329e3e7df56437bbac7a893f599b5be">env</a>;</div>
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a59c4fbdbb3b8da098a1d7e383a0eb77c"> 815</a></span> <a class="code hl_class" href="classripple_1_1Application.html">Application</a>&amp; <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a59c4fbdbb3b8da098a1d7e383a0eb77c">app</a>;</div>
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a3cfdfe289ee6550afa6208e9d7b156df"> 816</a></span> <a class="code hl_class" href="classripple_1_1LedgerMaster.html">LedgerMaster</a>&amp; <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a3cfdfe289ee6550afa6208e9d7b156df">ledgerMaster</a>;</div>
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a2fd55a364cc77413544b6901d17c8de0"> 817</a></span> <a class="code hl_class" href="classripple_1_1test_1_1MagicInboundLedgers.html">MagicInboundLedgers</a> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a2fd55a364cc77413544b6901d17c8de0">inboundLedgers</a>;</div>
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a5473dd2f3e5ec26fef3706e39b19fd59"> 818</a></span> <a class="code hl_class" href="classripple_1_1LedgerReplayMsgHandler.html">LedgerReplayMsgHandler</a> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a5473dd2f3e5ec26fef3706e39b19fd59">serverMsgHandler</a>;</div>
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#a3b807716f400ad71b763fde18e0e15d0"> 819</a></span> <a class="code hl_class" href="classripple_1_1LedgerReplayMsgHandler.html">LedgerReplayMsgHandler</a> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a3b807716f400ad71b763fde18e0e15d0">clientMsgHandler</a>;</div>
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422"> 820</a></span> <a class="code hl_class" href="classripple_1_1LedgerReplayer.html">LedgerReplayer</a> <a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">replayer</a>;</div>
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno"> 821</span>};</div>
</div>
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno"> 822</span> </div>
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno"> 823</span><span class="keyword">using namespace </span><a class="code hl_namespace" href="namespacebeast_1_1severities.html">beast::severities</a>;</div>
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno"> 824</span><span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00825" data-start="{" data-end="}">
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno"><a class="line" href="namespaceripple_1_1test.html#ad11ad14933c7bbfef5f57a948be1c307"> 825</a></span><a class="code hl_function" href="namespaceripple_1_1test.html#ad11ad14933c7bbfef5f57a948be1c307">logAll</a>(</div>
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno"> 826</span> <a class="code hl_struct" href="structripple_1_1test_1_1LedgerServer.html">LedgerServer</a>&amp; server,</div>
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno"> 827</span> <a class="code hl_class" href="classripple_1_1test_1_1LedgerReplayClient.html">LedgerReplayClient</a>&amp; client,</div>
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno"> 828</span> <a class="code hl_enumeration" href="namespacebeast_1_1severities.html#a069a8a312b9123b77f6aa31733ca73be">beast::severities::Severity</a> level = Severity::kTrace)</div>
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno"> 829</span>{</div>
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno"> 830</span> server.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#aff3c327d9717f5c25e38398d25611505">app</a>.<a class="code hl_function" href="classripple_1_1Application.html#ad096c64f86e5573a450cf0338c79c086">logs</a>().<a class="code hl_function" href="classripple_1_1Logs.html#a5dc4fb3cb9c2b3c42fd54bef18d06c83">threshold</a>(level);</div>
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno"> 831</span> client.<a class="code hl_variable" href="classripple_1_1test_1_1LedgerReplayClient.html#a59c4fbdbb3b8da098a1d7e383a0eb77c">app</a>.<a class="code hl_function" href="classripple_1_1Application.html#ad096c64f86e5573a450cf0338c79c086">logs</a>().<a class="code hl_function" href="classripple_1_1Logs.html#a5dc4fb3cb9c2b3c42fd54bef18d06c83">threshold</a>(level);</div>
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno"> 832</span>}</div>
</div>
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"> 833</span><span class="comment">// logAll(net.server, net.client);</span></div>
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno"> 834</span> </div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno"> 835</span><span class="comment">/*</span></div>
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno"> 836</span><span class="comment"> * Create a LedgerServer and a LedgerReplayClient</span></div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno"> 837</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00838" data-start="{" data-end="};">
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1NetworkOfTwo.html"> 838</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structripple_1_1test_1_1NetworkOfTwo.html">NetworkOfTwo</a></div>
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno"> 839</span>{</div>
<div class="foldopen" id="foldopen00840" data-start="{" data-end="}">
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1NetworkOfTwo.html#a1f19f202787d74ae8baf38f6df253453"> 840</a></span> <a class="code hl_function" href="structripple_1_1test_1_1NetworkOfTwo.html#a1f19f202787d74ae8baf38f6df253453">NetworkOfTwo</a>(</div>
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno"> 841</span> <a class="code hl_class" href="classbeast_1_1unit__test_1_1suite.html">beast::unit_test::suite</a>&amp; suite,</div>
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno"> 842</span> <a class="code hl_struct" href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html">LedgerServer::Parameter</a> <span class="keyword">const</span>&amp; param,</div>
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno"> 843</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1">PeerSetBehavior</a> behavior = <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a0c6ad70beb3a7e76c3fc7adab7c46acc">PeerSetBehavior::Good</a>,</div>
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno"> 844</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0a">InboundLedgersBehavior</a> inboundBhvr = <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa0c6ad70beb3a7e76c3fc7adab7c46acc">InboundLedgersBehavior::Good</a>,</div>
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno"> 845</span> <a class="code hl_enumeration" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3e">PeerFeature</a> peerFeature = <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ead26b2afca64340e74d57ba14421d17dc">PeerFeature::LedgerReplayEnabled</a>)</div>
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno"> 846</span> : <a class="code hl_variable" href="structripple_1_1test_1_1NetworkOfTwo.html#a28825451941ccd2dcc9d097e6d07b0e5">server</a>(suite, param)</div>
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno"> 847</span> , <a class="code hl_variable" href="structripple_1_1test_1_1NetworkOfTwo.html#aa9c855eaca5a1d5c02fc592216a8c186">client</a>(suite, <a class="code hl_variable" href="structripple_1_1test_1_1NetworkOfTwo.html#a28825451941ccd2dcc9d097e6d07b0e5">server</a>, behavior, inboundBhvr, peerFeature)</div>
<div class="line"><a id="l00848" name="l00848"></a><span class="lineno"> 848</span> {</div>
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno"> 849</span> <span class="comment">// logAll(server, client);</span></div>
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno"> 850</span> }</div>
</div>
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1NetworkOfTwo.html#a28825451941ccd2dcc9d097e6d07b0e5"> 851</a></span> <a class="code hl_struct" href="structripple_1_1test_1_1LedgerServer.html">LedgerServer</a> <a class="code hl_variable" href="structripple_1_1test_1_1NetworkOfTwo.html#a28825451941ccd2dcc9d097e6d07b0e5">server</a>;</div>
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1NetworkOfTwo.html#aa9c855eaca5a1d5c02fc592216a8c186"> 852</a></span> <a class="code hl_class" href="classripple_1_1test_1_1LedgerReplayClient.html">LedgerReplayClient</a> <a class="code hl_variable" href="structripple_1_1test_1_1NetworkOfTwo.html#aa9c855eaca5a1d5c02fc592216a8c186">client</a>;</div>
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno"> 853</span>};</div>
</div>
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"> 854</span> </div>
<div class="foldopen" id="foldopen00880" data-start="{" data-end="};">
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayer__test.html"> 880</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structripple_1_1test_1_1LedgerReplayer__test.html">LedgerReplayer_test</a> : <span class="keyword">public</span> <a class="code hl_class" href="classbeast_1_1unit__test_1_1suite.html">beast::unit_test::suite</a></div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno"> 881</span>{</div>
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"> 882</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00883" data-start="{" data-end="}">
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayer__test.html#a1f6d416bc654487012e5badf4aed903d"> 883</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#a1f6d416bc654487012e5badf4aed903d">testProofPath</a>()</div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno"> 884</span> {</div>
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno"> 885</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;ProofPath&quot;</span>);</div>
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno"> 886</span> <a class="code hl_struct" href="structripple_1_1test_1_1LedgerServer.html">LedgerServer</a> server(*<span class="keyword">this</span>, {1});</div>
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno"> 887</span> <span class="keyword">auto</span> <span class="keyword">const</span> l = server.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">getClosedLedger</a>();</div>
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno"> 888</span> </div>
<div class="line"><a id="l00889" name="l00889"></a><span class="lineno"> 889</span> {</div>
<div class="line"><a id="l00890" name="l00890"></a><span class="lineno"> 890</span> <span class="comment">// request, missing key</span></div>
<div class="line"><a id="l00891" name="l00891"></a><span class="lineno"> 891</span> <span class="keyword">auto</span> request = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMProofPathRequest&gt;</a>();</div>
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno"> 892</span> request-&gt;set_ledgerhash(</div>
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"> 893</span> l-&gt;info().hash.data(), l-&gt;info().hash.size());</div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno"> 894</span> request-&gt;set_type(protocol::TMLedgerMapType::lmACCOUNT_STATE);</div>
<div class="line"><a id="l00895" name="l00895"></a><span class="lineno"> 895</span> <span class="keyword">auto</span> reply = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMProofPathResponse&gt;</a>(</div>
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno"> 896</span> server.msgHandler.processProofPathRequest(request));</div>
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno"> 897</span> BEAST_EXPECT(reply-&gt;has_error());</div>
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno"> 898</span> BEAST_EXPECT(!server.msgHandler.processProofPathResponse(reply));</div>
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno"> 899</span> }</div>
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno"> 900</span> {</div>
<div class="line"><a id="l00901" name="l00901"></a><span class="lineno"> 901</span> <span class="comment">// request, wrong hash</span></div>
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno"> 902</span> <span class="keyword">auto</span> request = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMProofPathRequest&gt;</a>();</div>
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno"> 903</span> request-&gt;set_type(protocol::TMLedgerMapType::lmACCOUNT_STATE);</div>
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno"> 904</span> request-&gt;set_key(</div>
<div class="line"><a id="l00905" name="l00905"></a><span class="lineno"> 905</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#acda2d89a44551845c5be38291e5c9e8b">keylet::skip</a>().key.data(), <a class="code hl_function" href="namespaceripple_1_1keylet.html#acda2d89a44551845c5be38291e5c9e8b">keylet::skip</a>().<a class="code hl_variable" href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">key</a>.<a class="code hl_function" href="classripple_1_1base__uint.html#a64d93405f8d7ba89f0a406b32015758f">size</a>());</div>
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno"> 906</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> hash(1234567);</div>
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno"> 907</span> request-&gt;set_ledgerhash(hash.<a class="code hl_function" href="classripple_1_1base__uint.html#a5342507fe2fb5ac55d578e7e98863f70">data</a>(), hash.<a class="code hl_function" href="classripple_1_1base__uint.html#a64d93405f8d7ba89f0a406b32015758f">size</a>());</div>
<div class="line"><a id="l00908" name="l00908"></a><span class="lineno"> 908</span> <span class="keyword">auto</span> reply = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMProofPathResponse&gt;</a>(</div>
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno"> 909</span> server.msgHandler.processProofPathRequest(request));</div>
<div class="line"><a id="l00910" name="l00910"></a><span class="lineno"> 910</span> BEAST_EXPECT(reply-&gt;has_error());</div>
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno"> 911</span> }</div>
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno"> 912</span> </div>
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno"> 913</span> {</div>
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno"> 914</span> <span class="comment">// good request</span></div>
<div class="line"><a id="l00915" name="l00915"></a><span class="lineno"> 915</span> <span class="keyword">auto</span> request = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMProofPathRequest&gt;</a>();</div>
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno"> 916</span> request-&gt;set_ledgerhash(</div>
<div class="line"><a id="l00917" name="l00917"></a><span class="lineno"> 917</span> l-&gt;info().hash.data(), l-&gt;info().hash.size());</div>
<div class="line"><a id="l00918" name="l00918"></a><span class="lineno"> 918</span> request-&gt;set_type(protocol::TMLedgerMapType::lmACCOUNT_STATE);</div>
<div class="line"><a id="l00919" name="l00919"></a><span class="lineno"> 919</span> request-&gt;set_key(</div>
<div class="line"><a id="l00920" name="l00920"></a><span class="lineno"> 920</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#acda2d89a44551845c5be38291e5c9e8b">keylet::skip</a>().key.data(), <a class="code hl_function" href="namespaceripple_1_1keylet.html#acda2d89a44551845c5be38291e5c9e8b">keylet::skip</a>().<a class="code hl_variable" href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">key</a>.<a class="code hl_function" href="classripple_1_1base__uint.html#a64d93405f8d7ba89f0a406b32015758f">size</a>());</div>
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno"> 921</span> <span class="comment">// generate response</span></div>
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno"> 922</span> <span class="keyword">auto</span> reply = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMProofPathResponse&gt;</a>(</div>
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno"> 923</span> server.msgHandler.processProofPathRequest(request));</div>
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno"> 924</span> BEAST_EXPECT(!reply-&gt;has_error());</div>
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno"> 925</span> BEAST_EXPECT(server.msgHandler.processProofPathResponse(reply));</div>
<div class="line"><a id="l00926" name="l00926"></a><span class="lineno"> 926</span> </div>
<div class="line"><a id="l00927" name="l00927"></a><span class="lineno"> 927</span> {</div>
<div class="line"><a id="l00928" name="l00928"></a><span class="lineno"> 928</span> <span class="comment">// bad reply</span></div>
<div class="line"><a id="l00929" name="l00929"></a><span class="lineno"> 929</span> <span class="comment">// bad header</span></div>
<div class="line"><a id="l00930" name="l00930"></a><span class="lineno"> 930</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> r(reply-&gt;ledgerheader());</div>
<div class="line"><a id="l00931" name="l00931"></a><span class="lineno"> 931</span> r.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/string/basic_string/back.html">back</a>()--;</div>
<div class="line"><a id="l00932" name="l00932"></a><span class="lineno"> 932</span> reply-&gt;set_ledgerheader(r);</div>
<div class="line"><a id="l00933" name="l00933"></a><span class="lineno"> 933</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00934" name="l00934"></a><span class="lineno"> 934</span> !server.msgHandler.processProofPathResponse(reply));</div>
<div class="line"><a id="l00935" name="l00935"></a><span class="lineno"> 935</span> r.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/string/basic_string/back.html">back</a>()++;</div>
<div class="line"><a id="l00936" name="l00936"></a><span class="lineno"> 936</span> reply-&gt;set_ledgerheader(r);</div>
<div class="line"><a id="l00937" name="l00937"></a><span class="lineno"> 937</span> BEAST_EXPECT(server.msgHandler.processProofPathResponse(reply));</div>
<div class="line"><a id="l00938" name="l00938"></a><span class="lineno"> 938</span> <span class="comment">// bad proof path</span></div>
<div class="line"><a id="l00939" name="l00939"></a><span class="lineno"> 939</span> reply-&gt;mutable_path()-&gt;RemoveLast();</div>
<div class="line"><a id="l00940" name="l00940"></a><span class="lineno"> 940</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00941" name="l00941"></a><span class="lineno"> 941</span> !server.msgHandler.processProofPathResponse(reply));</div>
<div class="line"><a id="l00942" name="l00942"></a><span class="lineno"> 942</span> }</div>
<div class="line"><a id="l00943" name="l00943"></a><span class="lineno"> 943</span> }</div>
<div class="line"><a id="l00944" name="l00944"></a><span class="lineno"> 944</span> }</div>
</div>
<div class="line"><a id="l00945" name="l00945"></a><span class="lineno"> 945</span> </div>
<div class="line"><a id="l00946" name="l00946"></a><span class="lineno"> 946</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00947" data-start="{" data-end="}">
<div class="line"><a id="l00947" name="l00947"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayer__test.html#adc7d93c421443d75ebb9bf71dea72421"> 947</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#adc7d93c421443d75ebb9bf71dea72421">testReplayDelta</a>()</div>
<div class="line"><a id="l00948" name="l00948"></a><span class="lineno"> 948</span> {</div>
<div class="line"><a id="l00949" name="l00949"></a><span class="lineno"> 949</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;ReplayDelta&quot;</span>);</div>
<div class="line"><a id="l00950" name="l00950"></a><span class="lineno"> 950</span> <a class="code hl_struct" href="structripple_1_1test_1_1LedgerServer.html">LedgerServer</a> server(*<span class="keyword">this</span>, {1});</div>
<div class="line"><a id="l00951" name="l00951"></a><span class="lineno"> 951</span> <span class="keyword">auto</span> <span class="keyword">const</span> l = server.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">getClosedLedger</a>();</div>
<div class="line"><a id="l00952" name="l00952"></a><span class="lineno"> 952</span> </div>
<div class="line"><a id="l00953" name="l00953"></a><span class="lineno"> 953</span> {</div>
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno"> 954</span> <span class="comment">// request, missing hash</span></div>
<div class="line"><a id="l00955" name="l00955"></a><span class="lineno"> 955</span> <span class="keyword">auto</span> request = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMReplayDeltaRequest&gt;</a>();</div>
<div class="line"><a id="l00956" name="l00956"></a><span class="lineno"> 956</span> <span class="keyword">auto</span> reply = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMReplayDeltaResponse&gt;</a>(</div>
<div class="line"><a id="l00957" name="l00957"></a><span class="lineno"> 957</span> server.msgHandler.processReplayDeltaRequest(request));</div>
<div class="line"><a id="l00958" name="l00958"></a><span class="lineno"> 958</span> BEAST_EXPECT(reply-&gt;has_error());</div>
<div class="line"><a id="l00959" name="l00959"></a><span class="lineno"> 959</span> BEAST_EXPECT(!server.msgHandler.processReplayDeltaResponse(reply));</div>
<div class="line"><a id="l00960" name="l00960"></a><span class="lineno"> 960</span> <span class="comment">// request, wrong hash</span></div>
<div class="line"><a id="l00961" name="l00961"></a><span class="lineno"> 961</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> hash(1234567);</div>
<div class="line"><a id="l00962" name="l00962"></a><span class="lineno"> 962</span> request-&gt;set_ledgerhash(hash.<a class="code hl_function" href="classripple_1_1base__uint.html#a5342507fe2fb5ac55d578e7e98863f70">data</a>(), hash.<a class="code hl_function" href="classripple_1_1base__uint.html#a64d93405f8d7ba89f0a406b32015758f">size</a>());</div>
<div class="line"><a id="l00963" name="l00963"></a><span class="lineno"> 963</span> reply = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMReplayDeltaResponse&gt;</a>(</div>
<div class="line"><a id="l00964" name="l00964"></a><span class="lineno"> 964</span> server.msgHandler.processReplayDeltaRequest(request));</div>
<div class="line"><a id="l00965" name="l00965"></a><span class="lineno"> 965</span> BEAST_EXPECT(reply-&gt;has_error());</div>
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno"> 966</span> BEAST_EXPECT(!server.msgHandler.processReplayDeltaResponse(reply));</div>
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno"> 967</span> }</div>
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno"> 968</span> </div>
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno"> 969</span> {</div>
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno"> 970</span> <span class="comment">// good request</span></div>
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno"> 971</span> <span class="keyword">auto</span> request = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMReplayDeltaRequest&gt;</a>();</div>
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno"> 972</span> request-&gt;set_ledgerhash(</div>
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno"> 973</span> l-&gt;info().hash.data(), l-&gt;info().hash.size());</div>
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno"> 974</span> <span class="keyword">auto</span> reply = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_shared&lt;protocol::TMReplayDeltaResponse&gt;</a>(</div>
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno"> 975</span> server.msgHandler.processReplayDeltaRequest(request));</div>
<div class="line"><a id="l00976" name="l00976"></a><span class="lineno"> 976</span> BEAST_EXPECT(!reply-&gt;has_error());</div>
<div class="line"><a id="l00977" name="l00977"></a><span class="lineno"> 977</span> BEAST_EXPECT(server.msgHandler.processReplayDeltaResponse(reply));</div>
<div class="line"><a id="l00978" name="l00978"></a><span class="lineno"> 978</span> </div>
<div class="line"><a id="l00979" name="l00979"></a><span class="lineno"> 979</span> {</div>
<div class="line"><a id="l00980" name="l00980"></a><span class="lineno"> 980</span> <span class="comment">// bad reply</span></div>
<div class="line"><a id="l00981" name="l00981"></a><span class="lineno"> 981</span> <span class="comment">// bad header</span></div>
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno"> 982</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> r(reply-&gt;ledgerheader());</div>
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno"> 983</span> r.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/string/basic_string/back.html">back</a>()--;</div>
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno"> 984</span> reply-&gt;set_ledgerheader(r);</div>
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno"> 985</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno"> 986</span> !server.msgHandler.processReplayDeltaResponse(reply));</div>
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno"> 987</span> r.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/string/basic_string/back.html">back</a>()++;</div>
<div class="line"><a id="l00988" name="l00988"></a><span class="lineno"> 988</span> reply-&gt;set_ledgerheader(r);</div>
<div class="line"><a id="l00989" name="l00989"></a><span class="lineno"> 989</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00990" name="l00990"></a><span class="lineno"> 990</span> server.msgHandler.processReplayDeltaResponse(reply));</div>
<div class="line"><a id="l00991" name="l00991"></a><span class="lineno"> 991</span> <span class="comment">// bad txns</span></div>
<div class="line"><a id="l00992" name="l00992"></a><span class="lineno"> 992</span> reply-&gt;mutable_transaction()-&gt;RemoveLast();</div>
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno"> 993</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno"> 994</span> !server.msgHandler.processReplayDeltaResponse(reply));</div>
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno"> 995</span> }</div>
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno"> 996</span> }</div>
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno"> 997</span> }</div>
</div>
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno"> 998</span> </div>
<div class="line"><a id="l00999" name="l00999"></a><span class="lineno"> 999</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01000" data-start="{" data-end="}">
<div class="line"><a id="l01000" name="l01000"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayer__test.html#a976920f91a1a2e816c8d54906a646be1"> 1000</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#a976920f91a1a2e816c8d54906a646be1">testTaskParameter</a>()</div>
<div class="line"><a id="l01001" name="l01001"></a><span class="lineno"> 1001</span> {</div>
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"> 1002</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;TaskParameter&quot;</span>);</div>
<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"> 1003</span> </div>
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"> 1004</span> <span class="keyword">auto</span> makeSkipList = [](<span class="keywordtype">int</span> count) -&gt; <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a> <span class="keyword">const</span> {</div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a> sList;</div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; count; ++i)</div>
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span> sList.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/emplace_back.html">emplace_back</a>(i);</div>
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span> <span class="keywordflow">return</span> sList;</div>
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span> };</div>
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span> </div>
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span> <a class="code hl_class" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html">LedgerReplayTask::TaskParameter</a> tp10(</div>
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, <a class="code hl_typedef" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>(10), 10);</div>
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span> BEAST_EXPECT(!tp10.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3557c08b8e2f259f7be5b673e66f33c1">update</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a>(777), 5, makeSkipList(10)));</div>
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span> BEAST_EXPECT(!tp10.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3557c08b8e2f259f7be5b673e66f33c1">update</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a>(10), 5, makeSkipList(8)));</div>
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span> BEAST_EXPECT(tp10.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3557c08b8e2f259f7be5b673e66f33c1">update</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a>(10), 10, makeSkipList(10)));</div>
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"> 1016</span> </div>
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span> <span class="comment">// can merge to self</span></div>
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span> BEAST_EXPECT(tp10.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3c2b56668a4a6a767dd2763a52553bd6">canMergeInto</a>(tp10));</div>
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span> </div>
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"> 1020</span> <span class="comment">// smaller task</span></div>
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"> 1021</span> <a class="code hl_class" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html">LedgerReplayTask::TaskParameter</a> tp9(</div>
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, <a class="code hl_typedef" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>(9), 9);</div>
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"> 1023</span> </div>
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"> 1024</span> BEAST_EXPECT(tp9.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3c2b56668a4a6a767dd2763a52553bd6">canMergeInto</a>(tp10));</div>
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"> 1025</span> BEAST_EXPECT(!tp10.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3c2b56668a4a6a767dd2763a52553bd6">canMergeInto</a>(tp9));</div>
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"> 1026</span> </div>
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"> 1027</span> tp9.<a class="code hl_variable" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a7c5fe6c97805e13d469ea5a0add7dbd8">totalLedgers_</a>++;</div>
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span> BEAST_EXPECT(!tp9.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3c2b56668a4a6a767dd2763a52553bd6">canMergeInto</a>(tp10));</div>
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span> tp9.<a class="code hl_variable" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a7c5fe6c97805e13d469ea5a0add7dbd8">totalLedgers_</a>--;</div>
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span> BEAST_EXPECT(tp9.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3c2b56668a4a6a767dd2763a52553bd6">canMergeInto</a>(tp10));</div>
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span> </div>
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span> tp9.<a class="code hl_variable" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a7c016f2337d19332dd3bffd606b55931">reason_</a> = <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7a6ea28b46407abd2931a73c789ecdd944">InboundLedger::Reason::CONSENSUS</a>;</div>
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span> BEAST_EXPECT(!tp9.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3c2b56668a4a6a767dd2763a52553bd6">canMergeInto</a>(tp10));</div>
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span> tp9.<a class="code hl_variable" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a7c016f2337d19332dd3bffd606b55931">reason_</a> = <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>;</div>
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span> BEAST_EXPECT(tp9.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3c2b56668a4a6a767dd2763a52553bd6">canMergeInto</a>(tp10));</div>
<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"> 1036</span> </div>
<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"> 1037</span> tp9.<a class="code hl_variable" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a2923e3a3d4fbc1254441247e9db86bd6">finishHash_</a> = <a class="code hl_typedef" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>(1234);</div>
<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"> 1038</span> BEAST_EXPECT(!tp9.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3c2b56668a4a6a767dd2763a52553bd6">canMergeInto</a>(tp10));</div>
<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"> 1039</span> tp9.<a class="code hl_variable" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a2923e3a3d4fbc1254441247e9db86bd6">finishHash_</a> = <a class="code hl_typedef" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>(9);</div>
<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"> 1040</span> BEAST_EXPECT(tp9.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3c2b56668a4a6a767dd2763a52553bd6">canMergeInto</a>(tp10));</div>
<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"> 1041</span> </div>
<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"> 1042</span> <span class="comment">// larger task</span></div>
<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"> 1043</span> <a class="code hl_class" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html">LedgerReplayTask::TaskParameter</a> tp20(</div>
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, <a class="code hl_typedef" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>(20), 20);</div>
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span> BEAST_EXPECT(tp20.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3557c08b8e2f259f7be5b673e66f33c1">update</a>(<a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a>(20), 20, makeSkipList(20)));</div>
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span> BEAST_EXPECT(tp10.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3c2b56668a4a6a767dd2763a52553bd6">canMergeInto</a>(tp20));</div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span> BEAST_EXPECT(tp9.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3c2b56668a4a6a767dd2763a52553bd6">canMergeInto</a>(tp20));</div>
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span> BEAST_EXPECT(!tp20.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3c2b56668a4a6a767dd2763a52553bd6">canMergeInto</a>(tp10));</div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span> BEAST_EXPECT(!tp20.<a class="code hl_function" href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3c2b56668a4a6a767dd2763a52553bd6">canMergeInto</a>(tp9));</div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span> }</div>
</div>
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span> </div>
<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"> 1052</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01053" data-start="{" data-end="}">
<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayer__test.html#ab87606b129bb39f7118a2401b981ce69"> 1053</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#ab87606b129bb39f7118a2401b981ce69">testConfig</a>()</div>
<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"> 1054</span> {</div>
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;config test&quot;</span>);</div>
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</span> {</div>
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span> <a class="code hl_class" href="classripple_1_1Config.html">Config</a> c;</div>
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span> BEAST_EXPECT(c.<a class="code hl_variable" href="classripple_1_1Config.html#a7174b4395af72d89dc078e64d31c769c">LEDGER_REPLAY</a> == <span class="keyword">false</span>);</div>
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"> 1059</span> }</div>
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span> </div>
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span> {</div>
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"> 1062</span> <a class="code hl_class" href="classripple_1_1Config.html">Config</a> c;</div>
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"> 1063</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> toLoad(R<span class="stringliteral">&quot;rippleConfig(</span></div>
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"> 1064</span><span class="stringliteral">[ledger_replay]</span></div>
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"> 1065</span><span class="stringliteral">1</span></div>
<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span><span class="stringliteral">)rippleConfig&quot;);</span></div>
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span><span class="stringliteral"> c.<a class="code hl_function" href="classripple_1_1Config.html#acec216c5b37b6d4ac971e1ff62142963">loadFromString</a>(toLoad);</span></div>
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span><span class="stringliteral"> BEAST_EXPECT(c.<a class="code hl_variable" href="classripple_1_1Config.html#a7174b4395af72d89dc078e64d31c769c">LEDGER_REPLAY</a> == </span><span class="keyword">true</span>);</div>
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span> }</div>
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span> </div>
<div class="line"><a id="l01071" name="l01071"></a><span class="lineno"> 1071</span> {</div>
<div class="line"><a id="l01072" name="l01072"></a><span class="lineno"> 1072</span> <a class="code hl_class" href="classripple_1_1Config.html">Config</a> c;</div>
<div class="line"><a id="l01073" name="l01073"></a><span class="lineno"> 1073</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> toLoad = (R<span class="stringliteral">&quot;rippleConfig(</span></div>
<div class="line"><a id="l01074" name="l01074"></a><span class="lineno"> 1074</span><span class="stringliteral">[ledger_replay]</span></div>
<div class="line"><a id="l01075" name="l01075"></a><span class="lineno"> 1075</span><span class="stringliteral">0</span></div>
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"> 1076</span><span class="stringliteral">)rippleConfig&quot;);</span></div>
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span><span class="stringliteral"> c.<a class="code hl_function" href="classripple_1_1Config.html#acec216c5b37b6d4ac971e1ff62142963">loadFromString</a>(toLoad);</span></div>
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"> 1078</span><span class="stringliteral"> BEAST_EXPECT(c.<a class="code hl_variable" href="classripple_1_1Config.html#a7174b4395af72d89dc078e64d31c769c">LEDGER_REPLAY</a> == </span><span class="keyword">false</span>);</div>
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span> }</div>
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"> 1080</span> }</div>
</div>
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"> 1081</span> </div>
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"> 1082</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01083" data-start="{" data-end="}">
<div class="line"><a id="l01083" name="l01083"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayer__test.html#af548fd09fe85d089adee2806eab92988"> 1083</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#af548fd09fe85d089adee2806eab92988">testHandshake</a>()</div>
<div class="line"><a id="l01084" name="l01084"></a><span class="lineno"> 1084</span> {</div>
<div class="line"><a id="l01085" name="l01085"></a><span class="lineno"> 1085</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;handshake test&quot;</span>);</div>
<div class="line"><a id="l01086" name="l01086"></a><span class="lineno"> 1086</span> <span class="keyword">auto</span> handshake = [&amp;](<span class="keywordtype">bool</span> client, <span class="keywordtype">bool</span> server, <span class="keywordtype">bool</span> expecting) -&gt; <span class="keywordtype">bool</span> {</div>
<div class="line"><a id="l01087" name="l01087"></a><span class="lineno"> 1087</span> <span class="keyword">auto</span> request =</div>
<div class="line"><a id="l01088" name="l01088"></a><span class="lineno"> 1088</span> <a class="code hl_function" href="namespaceripple.html#ac35dc55d3f3c259f344225586a8887b4">ripple::makeRequest</a>(<span class="keyword">true</span>, <span class="keyword">false</span>, client, <span class="keyword">false</span>, <span class="keyword">false</span>);</div>
<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"> 1089</span> <a class="code hl_typedef" href="namespaceripple.html#aa265217edeb8282e636c78b50049f4c0">http_request_type</a> http_request;</div>
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"> 1090</span> http_request.version(request.version());</div>
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"> 1091</span> http_request.base() = request.base();</div>
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span> <span class="keywordtype">bool</span> serverResult =</div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span> <a class="code hl_function" href="namespaceripple.html#ab58cf24607744c98d521c3e97aca2a53">peerFeatureEnabled</a>(http_request, <a class="code hl_variable" href="namespaceripple.html#a59334776ad7699c39ec3683f1fca4b2e">FEATURE_LEDGER_REPLAY</a>, server);</div>
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"> 1094</span> <span class="keywordflow">if</span> (serverResult != expecting)</div>
<div class="line"><a id="l01095" name="l01095"></a><span class="lineno"> 1095</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l01096" name="l01096"></a><span class="lineno"> 1096</span> </div>
<div class="line"><a id="l01097" name="l01097"></a><span class="lineno"> 1097</span> <a class="code hl_typedef" href="namespacebeast_1_1IP.html#adbe597760cb20a7aa3f2ff92f7bed2cc">beast::IP::Address</a> addr =</div>
<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"> 1098</span> boost::asio::ip::make_address(<span class="stringliteral">&quot;172.1.1.100&quot;</span>);</div>
<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"> 1099</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">jtx::Env</a> serverEnv(*<span class="keyword">this</span>);</div>
<div class="line"><a id="l01100" name="l01100"></a><span class="lineno"> 1100</span> serverEnv.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#acd48f8ab02c37b1a30cedf4dec7cc96c">app</a>().<a class="code hl_function" href="classripple_1_1Application.html#a0c48dd5bcaef14e30e9ef5b96b0daa39">config</a>().<a class="code hl_variable" href="classripple_1_1Config.html#a7174b4395af72d89dc078e64d31c769c">LEDGER_REPLAY</a> = server;</div>
<div class="line"><a id="l01101" name="l01101"></a><span class="lineno"> 1101</span> <span class="keyword">auto</span> http_resp = <a class="code hl_function" href="namespaceripple.html#a5590ae6006b178275628bde91fa03129">ripple::makeResponse</a>(</div>
<div class="line"><a id="l01102" name="l01102"></a><span class="lineno"> 1102</span> <span class="keyword">true</span>,</div>
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span> http_request,</div>
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"> 1104</span> addr,</div>
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span> addr,</div>
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a>{1},</div>
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span> 1,</div>
<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span> {1, 0},</div>
<div class="line"><a id="l01109" name="l01109"></a><span class="lineno"> 1109</span> serverEnv.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#acd48f8ab02c37b1a30cedf4dec7cc96c">app</a>());</div>
<div class="line"><a id="l01110" name="l01110"></a><span class="lineno"> 1110</span> <span class="keyword">auto</span> <span class="keyword">const</span> clientResult =</div>
<div class="line"><a id="l01111" name="l01111"></a><span class="lineno"> 1111</span> <a class="code hl_function" href="namespaceripple.html#ab58cf24607744c98d521c3e97aca2a53">peerFeatureEnabled</a>(http_resp, <a class="code hl_variable" href="namespaceripple.html#a59334776ad7699c39ec3683f1fca4b2e">FEATURE_LEDGER_REPLAY</a>, client);</div>
<div class="line"><a id="l01112" name="l01112"></a><span class="lineno"> 1112</span> <span class="keywordflow">if</span> (clientResult != expecting)</div>
<div class="line"><a id="l01113" name="l01113"></a><span class="lineno"> 1113</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l01114" name="l01114"></a><span class="lineno"> 1114</span> </div>
<div class="line"><a id="l01115" name="l01115"></a><span class="lineno"> 1115</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l01116" name="l01116"></a><span class="lineno"> 1116</span> };</div>
<div class="line"><a id="l01117" name="l01117"></a><span class="lineno"> 1117</span> </div>
<div class="line"><a id="l01118" name="l01118"></a><span class="lineno"> 1118</span> BEAST_EXPECT(handshake(<span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>));</div>
<div class="line"><a id="l01119" name="l01119"></a><span class="lineno"> 1119</span> BEAST_EXPECT(handshake(<span class="keyword">false</span>, <span class="keyword">true</span>, <span class="keyword">false</span>));</div>
<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"> 1120</span> BEAST_EXPECT(handshake(<span class="keyword">true</span>, <span class="keyword">false</span>, <span class="keyword">false</span>));</div>
<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"> 1121</span> BEAST_EXPECT(handshake(<span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>));</div>
<div class="line"><a id="l01122" name="l01122"></a><span class="lineno"> 1122</span> }</div>
</div>
<div class="line"><a id="l01123" name="l01123"></a><span class="lineno"> 1123</span> </div>
<div class="line"><a id="l01124" name="l01124"></a><span class="lineno"> 1124</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01125" data-start="{" data-end="}">
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayer__test.html#aea0fc6be2d2f14294990ed7c265d614a"> 1125</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#aea0fc6be2d2f14294990ed7c265d614a">testAllLocal</a>(<span class="keywordtype">int</span> totalReplay)</div>
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"> 1126</span> {</div>
<div class="line"><a id="l01127" name="l01127"></a><span class="lineno"> 1127</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;local node has all the ledgers&quot;</span>);</div>
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"> 1128</span> <span class="keyword">auto</span> psBhvr = <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a6a6decd76984eed63a0c173f9f574487">PeerSetBehavior::DropAll</a>;</div>
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span> <span class="keyword">auto</span> ilBhvr = <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa6a6decd76984eed63a0c173f9f574487">InboundLedgersBehavior::DropAll</a>;</div>
<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"> 1130</span> <span class="keyword">auto</span> peerFeature = <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ea6adf97f83acf6453d4a6a4b1070f3754">PeerFeature::None</a>;</div>
<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"> 1131</span> </div>
<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span> <a class="code hl_struct" href="structripple_1_1test_1_1NetworkOfTwo.html">NetworkOfTwo</a> net(*<span class="keyword">this</span>, {totalReplay + 1}, psBhvr, ilBhvr, peerFeature);</div>
<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span> </div>
<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"> 1134</span> <span class="keyword">auto</span> l = net.<a class="code hl_variable" href="structripple_1_1test_1_1NetworkOfTwo.html#a28825451941ccd2dcc9d097e6d07b0e5">server</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">getClosedLedger</a>();</div>
<div class="line"><a id="l01135" name="l01135"></a><span class="lineno"> 1135</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> finalHash = l-&gt;info().hash;</div>
<div class="line"><a id="l01136" name="l01136"></a><span class="lineno"> 1136</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; totalReplay; ++i)</div>
<div class="line"><a id="l01137" name="l01137"></a><span class="lineno"> 1137</span> {</div>
<div class="line"><a id="l01138" name="l01138"></a><span class="lineno"> 1138</span> BEAST_EXPECT(l);</div>
<div class="line"><a id="l01139" name="l01139"></a><span class="lineno"> 1139</span> <span class="keywordflow">if</span> (l)</div>
<div class="line"><a id="l01140" name="l01140"></a><span class="lineno"> 1140</span> {</div>
<div class="line"><a id="l01141" name="l01141"></a><span class="lineno"> 1141</span> net.client.ledgerMaster.storeLedger(l);</div>
<div class="line"><a id="l01142" name="l01142"></a><span class="lineno"> 1142</span> l = net.server.ledgerMaster.getLedgerByHash(</div>
<div class="line"><a id="l01143" name="l01143"></a><span class="lineno"> 1143</span> l-&gt;info().parentHash);</div>
<div class="line"><a id="l01144" name="l01144"></a><span class="lineno"> 1144</span> }</div>
<div class="line"><a id="l01145" name="l01145"></a><span class="lineno"> 1145</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01146" name="l01146"></a><span class="lineno"> 1146</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01147" name="l01147"></a><span class="lineno"> 1147</span> }</div>
<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"> 1148</span> </div>
<div class="line"><a id="l01149" name="l01149"></a><span class="lineno"> 1149</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01150" name="l01150"></a><span class="lineno"> 1150</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash, totalReplay);</div>
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"> 1151</span> </div>
<div class="line"><a id="l01152" name="l01152"></a><span class="lineno"> 1152</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;TaskStatus&gt;</a> deltaStatuses(</div>
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"> 1153</span> totalReplay - 1, <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>);</div>
<div class="line"><a id="l01154" name="l01154"></a><span class="lineno"> 1154</span> BEAST_EXPECT(net.client.waitAndCheckStatus(</div>
<div class="line"><a id="l01155" name="l01155"></a><span class="lineno"> 1155</span> finalHash,</div>
<div class="line"><a id="l01156" name="l01156"></a><span class="lineno"> 1156</span> totalReplay,</div>
<div class="line"><a id="l01157" name="l01157"></a><span class="lineno"> 1157</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01158" name="l01158"></a><span class="lineno"> 1158</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01159" name="l01159"></a><span class="lineno"> 1159</span> deltaStatuses));</div>
<div class="line"><a id="l01160" name="l01160"></a><span class="lineno"> 1160</span> </div>
<div class="line"><a id="l01161" name="l01161"></a><span class="lineno"> 1161</span> <span class="comment">// sweep</span></div>
<div class="line"><a id="l01162" name="l01162"></a><span class="lineno"> 1162</span> net.client.replayer.sweep();</div>
<div class="line"><a id="l01163" name="l01163"></a><span class="lineno"> 1163</span> BEAST_EXPECT(net.client.countsAsExpected(0, 0, 0));</div>
<div class="line"><a id="l01164" name="l01164"></a><span class="lineno"> 1164</span> }</div>
</div>
<div class="line"><a id="l01165" name="l01165"></a><span class="lineno"> 1165</span> </div>
<div class="line"><a id="l01166" name="l01166"></a><span class="lineno"> 1166</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01167" data-start="{" data-end="}">
<div class="line"><a id="l01167" name="l01167"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayer__test.html#ac313b58a2d0843ab4f8d46ece7fac907"> 1167</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#ac313b58a2d0843ab4f8d46ece7fac907">testAllInboundLedgers</a>(<span class="keywordtype">int</span> totalReplay)</div>
<div class="line"><a id="l01168" name="l01168"></a><span class="lineno"> 1168</span> {</div>
<div class="line"><a id="l01169" name="l01169"></a><span class="lineno"> 1169</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;all the ledgers from InboundLedgers&quot;</span>);</div>
<div class="line"><a id="l01170" name="l01170"></a><span class="lineno"> 1170</span> <a class="code hl_struct" href="structripple_1_1test_1_1NetworkOfTwo.html">NetworkOfTwo</a> net(</div>
<div class="line"><a id="l01171" name="l01171"></a><span class="lineno"> 1171</span> *<span class="keyword">this</span>,</div>
<div class="line"><a id="l01172" name="l01172"></a><span class="lineno"> 1172</span> {totalReplay + 1},</div>
<div class="line"><a id="l01173" name="l01173"></a><span class="lineno"> 1173</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a6a6decd76984eed63a0c173f9f574487">PeerSetBehavior::DropAll</a>,</div>
<div class="line"><a id="l01174" name="l01174"></a><span class="lineno"> 1174</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa0c6ad70beb3a7e76c3fc7adab7c46acc">InboundLedgersBehavior::Good</a>,</div>
<div class="line"><a id="l01175" name="l01175"></a><span class="lineno"> 1175</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ea6adf97f83acf6453d4a6a4b1070f3754">PeerFeature::None</a>);</div>
<div class="line"><a id="l01176" name="l01176"></a><span class="lineno"> 1176</span> </div>
<div class="line"><a id="l01177" name="l01177"></a><span class="lineno"> 1177</span> <span class="keyword">auto</span> l = net.<a class="code hl_variable" href="structripple_1_1test_1_1NetworkOfTwo.html#a28825451941ccd2dcc9d097e6d07b0e5">server</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">getClosedLedger</a>();</div>
<div class="line"><a id="l01178" name="l01178"></a><span class="lineno"> 1178</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> finalHash = l-&gt;info().hash;</div>
<div class="line"><a id="l01179" name="l01179"></a><span class="lineno"> 1179</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"> 1180</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash, totalReplay);</div>
<div class="line"><a id="l01181" name="l01181"></a><span class="lineno"> 1181</span> </div>
<div class="line"><a id="l01182" name="l01182"></a><span class="lineno"> 1182</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;TaskStatus&gt;</a> deltaStatuses(</div>
<div class="line"><a id="l01183" name="l01183"></a><span class="lineno"> 1183</span> totalReplay - 1, <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>);</div>
<div class="line"><a id="l01184" name="l01184"></a><span class="lineno"> 1184</span> BEAST_EXPECT(net.client.waitAndCheckStatus(</div>
<div class="line"><a id="l01185" name="l01185"></a><span class="lineno"> 1185</span> finalHash,</div>
<div class="line"><a id="l01186" name="l01186"></a><span class="lineno"> 1186</span> totalReplay,</div>
<div class="line"><a id="l01187" name="l01187"></a><span class="lineno"> 1187</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01188" name="l01188"></a><span class="lineno"> 1188</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01189" name="l01189"></a><span class="lineno"> 1189</span> deltaStatuses));</div>
<div class="line"><a id="l01190" name="l01190"></a><span class="lineno"> 1190</span> </div>
<div class="line"><a id="l01191" name="l01191"></a><span class="lineno"> 1191</span> <span class="comment">// sweep</span></div>
<div class="line"><a id="l01192" name="l01192"></a><span class="lineno"> 1192</span> net.client.replayer.sweep();</div>
<div class="line"><a id="l01193" name="l01193"></a><span class="lineno"> 1193</span> BEAST_EXPECT(net.client.countsAsExpected(0, 0, 0));</div>
<div class="line"><a id="l01194" name="l01194"></a><span class="lineno"> 1194</span> }</div>
</div>
<div class="line"><a id="l01195" name="l01195"></a><span class="lineno"> 1195</span> </div>
<div class="line"><a id="l01196" name="l01196"></a><span class="lineno"> 1196</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01197" data-start="{" data-end="}">
<div class="line"><a id="l01197" name="l01197"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayer__test.html#ae8bbc2e5217f94c203c1289743e2fbad"> 1197</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#ae8bbc2e5217f94c203c1289743e2fbad">testPeerSetBehavior</a>(<a class="code hl_enumeration" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1">PeerSetBehavior</a> peerSetBehavior, <span class="keywordtype">int</span> totalReplay = 4)</div>
<div class="line"><a id="l01198" name="l01198"></a><span class="lineno"> 1198</span> {</div>
<div class="line"><a id="l01199" name="l01199"></a><span class="lineno"> 1199</span> <span class="keywordflow">switch</span> (peerSetBehavior)</div>
<div class="line"><a id="l01200" name="l01200"></a><span class="lineno"> 1200</span> {</div>
<div class="line"><a id="l01201" name="l01201"></a><span class="lineno"> 1201</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a0c6ad70beb3a7e76c3fc7adab7c46acc">PeerSetBehavior::Good</a>:</div>
<div class="line"><a id="l01202" name="l01202"></a><span class="lineno"> 1202</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;good network&quot;</span>);</div>
<div class="line"><a id="l01203" name="l01203"></a><span class="lineno"> 1203</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01204" name="l01204"></a><span class="lineno"> 1204</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1ad10d06eac1b72b6b66d7e8bcd74474b6">PeerSetBehavior::Drop50</a>:</div>
<div class="line"><a id="l01205" name="l01205"></a><span class="lineno"> 1205</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;network drops 50% messages&quot;</span>);</div>
<div class="line"><a id="l01206" name="l01206"></a><span class="lineno"> 1206</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01207" name="l01207"></a><span class="lineno"> 1207</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a7020426cfb0a204051be4b3053d2acc8">PeerSetBehavior::Repeat</a>:</div>
<div class="line"><a id="l01208" name="l01208"></a><span class="lineno"> 1208</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;network repeats all messages&quot;</span>);</div>
<div class="line"><a id="l01209" name="l01209"></a><span class="lineno"> 1209</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01210" name="l01210"></a><span class="lineno"> 1210</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l01211" name="l01211"></a><span class="lineno"> 1211</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01212" name="l01212"></a><span class="lineno"> 1212</span> }</div>
<div class="line"><a id="l01213" name="l01213"></a><span class="lineno"> 1213</span> </div>
<div class="line"><a id="l01214" name="l01214"></a><span class="lineno"> 1214</span> <a class="code hl_struct" href="structripple_1_1test_1_1NetworkOfTwo.html">NetworkOfTwo</a> net(</div>
<div class="line"><a id="l01215" name="l01215"></a><span class="lineno"> 1215</span> *<span class="keyword">this</span>,</div>
<div class="line"><a id="l01216" name="l01216"></a><span class="lineno"> 1216</span> {totalReplay + 1},</div>
<div class="line"><a id="l01217" name="l01217"></a><span class="lineno"> 1217</span> peerSetBehavior,</div>
<div class="line"><a id="l01218" name="l01218"></a><span class="lineno"> 1218</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa6a6decd76984eed63a0c173f9f574487">InboundLedgersBehavior::DropAll</a>,</div>
<div class="line"><a id="l01219" name="l01219"></a><span class="lineno"> 1219</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ead26b2afca64340e74d57ba14421d17dc">PeerFeature::LedgerReplayEnabled</a>);</div>
<div class="line"><a id="l01220" name="l01220"></a><span class="lineno"> 1220</span> </div>
<div class="line"><a id="l01221" name="l01221"></a><span class="lineno"> 1221</span> <span class="comment">// feed client with start ledger since InboundLedgers drops all</span></div>
<div class="line"><a id="l01222" name="l01222"></a><span class="lineno"> 1222</span> <span class="keyword">auto</span> l = net.<a class="code hl_variable" href="structripple_1_1test_1_1NetworkOfTwo.html#a28825451941ccd2dcc9d097e6d07b0e5">server</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">getClosedLedger</a>();</div>
<div class="line"><a id="l01223" name="l01223"></a><span class="lineno"> 1223</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> finalHash = l-&gt;info().hash;</div>
<div class="line"><a id="l01224" name="l01224"></a><span class="lineno"> 1224</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; totalReplay - 1; ++i)</div>
<div class="line"><a id="l01225" name="l01225"></a><span class="lineno"> 1225</span> {</div>
<div class="line"><a id="l01226" name="l01226"></a><span class="lineno"> 1226</span> l = net.server.ledgerMaster.getLedgerByHash(l-&gt;info().parentHash);</div>
<div class="line"><a id="l01227" name="l01227"></a><span class="lineno"> 1227</span> }</div>
<div class="line"><a id="l01228" name="l01228"></a><span class="lineno"> 1228</span> net.client.ledgerMaster.storeLedger(l);</div>
<div class="line"><a id="l01229" name="l01229"></a><span class="lineno"> 1229</span> </div>
<div class="line"><a id="l01230" name="l01230"></a><span class="lineno"> 1230</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01231" name="l01231"></a><span class="lineno"> 1231</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash, totalReplay);</div>
<div class="line"><a id="l01232" name="l01232"></a><span class="lineno"> 1232</span> </div>
<div class="line"><a id="l01233" name="l01233"></a><span class="lineno"> 1233</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;TaskStatus&gt;</a> deltaStatuses(</div>
<div class="line"><a id="l01234" name="l01234"></a><span class="lineno"> 1234</span> totalReplay - 1, <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>);</div>
<div class="line"><a id="l01235" name="l01235"></a><span class="lineno"> 1235</span> BEAST_EXPECT(net.client.waitAndCheckStatus(</div>
<div class="line"><a id="l01236" name="l01236"></a><span class="lineno"> 1236</span> finalHash,</div>
<div class="line"><a id="l01237" name="l01237"></a><span class="lineno"> 1237</span> totalReplay,</div>
<div class="line"><a id="l01238" name="l01238"></a><span class="lineno"> 1238</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01239" name="l01239"></a><span class="lineno"> 1239</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01240" name="l01240"></a><span class="lineno"> 1240</span> deltaStatuses));</div>
<div class="line"><a id="l01241" name="l01241"></a><span class="lineno"> 1241</span> BEAST_EXPECT(net.client.waitForLedgers(finalHash, totalReplay));</div>
<div class="line"><a id="l01242" name="l01242"></a><span class="lineno"> 1242</span> </div>
<div class="line"><a id="l01243" name="l01243"></a><span class="lineno"> 1243</span> <span class="comment">// sweep</span></div>
<div class="line"><a id="l01244" name="l01244"></a><span class="lineno"> 1244</span> net.client.replayer.sweep();</div>
<div class="line"><a id="l01245" name="l01245"></a><span class="lineno"> 1245</span> BEAST_EXPECT(net.client.countsAsExpected(0, 0, 0));</div>
<div class="line"><a id="l01246" name="l01246"></a><span class="lineno"> 1246</span> }</div>
</div>
<div class="line"><a id="l01247" name="l01247"></a><span class="lineno"> 1247</span> </div>
<div class="line"><a id="l01248" name="l01248"></a><span class="lineno"> 1248</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01249" data-start="{" data-end="}">
<div class="line"><a id="l01249" name="l01249"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayer__test.html#a49d59f193c06056e710a3f6e32772941"> 1249</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#a49d59f193c06056e710a3f6e32772941">testStop</a>()</div>
<div class="line"><a id="l01250" name="l01250"></a><span class="lineno"> 1250</span> {</div>
<div class="line"><a id="l01251" name="l01251"></a><span class="lineno"> 1251</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;stop before timeout&quot;</span>);</div>
<div class="line"><a id="l01252" name="l01252"></a><span class="lineno"> 1252</span> <span class="keywordtype">int</span> totalReplay = 3;</div>
<div class="line"><a id="l01253" name="l01253"></a><span class="lineno"> 1253</span> <a class="code hl_struct" href="structripple_1_1test_1_1NetworkOfTwo.html">NetworkOfTwo</a> net(</div>
<div class="line"><a id="l01254" name="l01254"></a><span class="lineno"> 1254</span> *<span class="keyword">this</span>,</div>
<div class="line"><a id="l01255" name="l01255"></a><span class="lineno"> 1255</span> {totalReplay + 1},</div>
<div class="line"><a id="l01256" name="l01256"></a><span class="lineno"> 1256</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a6a6decd76984eed63a0c173f9f574487">PeerSetBehavior::DropAll</a>,</div>
<div class="line"><a id="l01257" name="l01257"></a><span class="lineno"> 1257</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa0c6ad70beb3a7e76c3fc7adab7c46acc">InboundLedgersBehavior::Good</a>,</div>
<div class="line"><a id="l01258" name="l01258"></a><span class="lineno"> 1258</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ead26b2afca64340e74d57ba14421d17dc">PeerFeature::LedgerReplayEnabled</a>);</div>
<div class="line"><a id="l01259" name="l01259"></a><span class="lineno"> 1259</span> </div>
<div class="line"><a id="l01260" name="l01260"></a><span class="lineno"> 1260</span> <span class="keyword">auto</span> l = net.<a class="code hl_variable" href="structripple_1_1test_1_1NetworkOfTwo.html#a28825451941ccd2dcc9d097e6d07b0e5">server</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">getClosedLedger</a>();</div>
<div class="line"><a id="l01261" name="l01261"></a><span class="lineno"> 1261</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> finalHash = l-&gt;info().hash;</div>
<div class="line"><a id="l01262" name="l01262"></a><span class="lineno"> 1262</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01263" name="l01263"></a><span class="lineno"> 1263</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash, totalReplay);</div>
<div class="line"><a id="l01264" name="l01264"></a><span class="lineno"> 1264</span> </div>
<div class="line"><a id="l01265" name="l01265"></a><span class="lineno"> 1265</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;TaskStatus&gt;</a> deltaStatuses;</div>
<div class="line"><a id="l01266" name="l01266"></a><span class="lineno"> 1266</span> BEAST_EXPECT(net.client.checkStatus(</div>
<div class="line"><a id="l01267" name="l01267"></a><span class="lineno"> 1267</span> finalHash,</div>
<div class="line"><a id="l01268" name="l01268"></a><span class="lineno"> 1268</span> totalReplay,</div>
<div class="line"><a id="l01269" name="l01269"></a><span class="lineno"> 1269</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa71b56450c5e1ce9ce5f10422f47beb06">TaskStatus::NotDone</a>,</div>
<div class="line"><a id="l01270" name="l01270"></a><span class="lineno"> 1270</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa71b56450c5e1ce9ce5f10422f47beb06">TaskStatus::NotDone</a>,</div>
<div class="line"><a id="l01271" name="l01271"></a><span class="lineno"> 1271</span> deltaStatuses));</div>
<div class="line"><a id="l01272" name="l01272"></a><span class="lineno"> 1272</span> </div>
<div class="line"><a id="l01273" name="l01273"></a><span class="lineno"> 1273</span> BEAST_EXPECT(net.client.countsAsExpected(1, 1, 0));</div>
<div class="line"><a id="l01274" name="l01274"></a><span class="lineno"> 1274</span> net.client.replayer.stop();</div>
<div class="line"><a id="l01275" name="l01275"></a><span class="lineno"> 1275</span> BEAST_EXPECT(net.client.countsAsExpected(0, 0, 0));</div>
<div class="line"><a id="l01276" name="l01276"></a><span class="lineno"> 1276</span> }</div>
</div>
<div class="line"><a id="l01277" name="l01277"></a><span class="lineno"> 1277</span> </div>
<div class="line"><a id="l01278" name="l01278"></a><span class="lineno"> 1278</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01279" data-start="{" data-end="}">
<div class="line"><a id="l01279" name="l01279"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayer__test.html#ac9e7760a63ff21271107c20f9f690341"> 1279</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#ac9e7760a63ff21271107c20f9f690341">testSkipListBadReply</a>()</div>
<div class="line"><a id="l01280" name="l01280"></a><span class="lineno"> 1280</span> {</div>
<div class="line"><a id="l01281" name="l01281"></a><span class="lineno"> 1281</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;SkipListAcquire bad reply&quot;</span>);</div>
<div class="line"><a id="l01282" name="l01282"></a><span class="lineno"> 1282</span> <span class="keywordtype">int</span> totalReplay = 3;</div>
<div class="line"><a id="l01283" name="l01283"></a><span class="lineno"> 1283</span> <a class="code hl_struct" href="structripple_1_1test_1_1NetworkOfTwo.html">NetworkOfTwo</a> net(</div>
<div class="line"><a id="l01284" name="l01284"></a><span class="lineno"> 1284</span> *<span class="keyword">this</span>,</div>
<div class="line"><a id="l01285" name="l01285"></a><span class="lineno"> 1285</span> {totalReplay + 1 + 1},</div>
<div class="line"><a id="l01286" name="l01286"></a><span class="lineno"> 1286</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a6a6decd76984eed63a0c173f9f574487">PeerSetBehavior::DropAll</a>,</div>
<div class="line"><a id="l01287" name="l01287"></a><span class="lineno"> 1287</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa6a6decd76984eed63a0c173f9f574487">InboundLedgersBehavior::DropAll</a>,</div>
<div class="line"><a id="l01288" name="l01288"></a><span class="lineno"> 1288</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ead26b2afca64340e74d57ba14421d17dc">PeerFeature::LedgerReplayEnabled</a>);</div>
<div class="line"><a id="l01289" name="l01289"></a><span class="lineno"> 1289</span> </div>
<div class="line"><a id="l01290" name="l01290"></a><span class="lineno"> 1290</span> <span class="keyword">auto</span> l = net.<a class="code hl_variable" href="structripple_1_1test_1_1NetworkOfTwo.html#a28825451941ccd2dcc9d097e6d07b0e5">server</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">getClosedLedger</a>();</div>
<div class="line"><a id="l01291" name="l01291"></a><span class="lineno"> 1291</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> finalHash = l-&gt;info().hash;</div>
<div class="line"><a id="l01292" name="l01292"></a><span class="lineno"> 1292</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01293" name="l01293"></a><span class="lineno"> 1293</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash, totalReplay);</div>
<div class="line"><a id="l01294" name="l01294"></a><span class="lineno"> 1294</span> </div>
<div class="line"><a id="l01295" name="l01295"></a><span class="lineno"> 1295</span> <span class="keyword">auto</span> skipList = net.client.findSkipListAcquire(finalHash);</div>
<div class="line"><a id="l01296" name="l01296"></a><span class="lineno"> 1296</span> </div>
<div class="line"><a id="l01297" name="l01297"></a><span class="lineno"> 1297</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint8_t</a> payload[55] = {</div>
<div class="line"><a id="l01298" name="l01298"></a><span class="lineno"> 1298</span> 0x6A, 0x09, 0xE6, 0x67, 0xF3, 0xBC, 0xC9, 0x08, 0xB2};</div>
<div class="line"><a id="l01299" name="l01299"></a><span class="lineno"> 1299</span> <span class="keyword">auto</span> item =</div>
<div class="line"><a id="l01300" name="l01300"></a><span class="lineno"> 1300</span> <a class="code hl_function" href="namespaceripple.html#aa96b512548a1ae9fcd7493c52f19ce0f">make_shamapitem</a>(<a class="code hl_typedef" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>(12345), <a class="code hl_class" href="classripple_1_1Slice.html">Slice</a>(payload, <span class="keyword">sizeof</span>(payload)));</div>
<div class="line"><a id="l01301" name="l01301"></a><span class="lineno"> 1301</span> skipList-&gt;processData(l-&gt;seq(), item);</div>
<div class="line"><a id="l01302" name="l01302"></a><span class="lineno"> 1302</span> </div>
<div class="line"><a id="l01303" name="l01303"></a><span class="lineno"> 1303</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;TaskStatus&gt;</a> deltaStatuses;</div>
<div class="line"><a id="l01304" name="l01304"></a><span class="lineno"> 1304</span> BEAST_EXPECT(net.client.waitAndCheckStatus(</div>
<div class="line"><a id="l01305" name="l01305"></a><span class="lineno"> 1305</span> finalHash,</div>
<div class="line"><a id="l01306" name="l01306"></a><span class="lineno"> 1306</span> totalReplay,</div>
<div class="line"><a id="l01307" name="l01307"></a><span class="lineno"> 1307</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca">TaskStatus::Failed</a>,</div>
<div class="line"><a id="l01308" name="l01308"></a><span class="lineno"> 1308</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca">TaskStatus::Failed</a>,</div>
<div class="line"><a id="l01309" name="l01309"></a><span class="lineno"> 1309</span> deltaStatuses));</div>
<div class="line"><a id="l01310" name="l01310"></a><span class="lineno"> 1310</span> </div>
<div class="line"><a id="l01311" name="l01311"></a><span class="lineno"> 1311</span> <span class="comment">// add another task</span></div>
<div class="line"><a id="l01312" name="l01312"></a><span class="lineno"> 1312</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01313" name="l01313"></a><span class="lineno"> 1313</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash, totalReplay + 1);</div>
<div class="line"><a id="l01314" name="l01314"></a><span class="lineno"> 1314</span> BEAST_EXPECT(net.client.waitAndCheckStatus(</div>
<div class="line"><a id="l01315" name="l01315"></a><span class="lineno"> 1315</span> finalHash,</div>
<div class="line"><a id="l01316" name="l01316"></a><span class="lineno"> 1316</span> totalReplay,</div>
<div class="line"><a id="l01317" name="l01317"></a><span class="lineno"> 1317</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca">TaskStatus::Failed</a>,</div>
<div class="line"><a id="l01318" name="l01318"></a><span class="lineno"> 1318</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca">TaskStatus::Failed</a>,</div>
<div class="line"><a id="l01319" name="l01319"></a><span class="lineno"> 1319</span> deltaStatuses));</div>
<div class="line"><a id="l01320" name="l01320"></a><span class="lineno"> 1320</span> BEAST_EXPECT(net.client.countsAsExpected(2, 1, 0));</div>
<div class="line"><a id="l01321" name="l01321"></a><span class="lineno"> 1321</span> }</div>
</div>
<div class="line"><a id="l01322" name="l01322"></a><span class="lineno"> 1322</span> </div>
<div class="line"><a id="l01323" name="l01323"></a><span class="lineno"> 1323</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01324" data-start="{" data-end="}">
<div class="line"><a id="l01324" name="l01324"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayer__test.html#a39f6d06844ba0d954784172036b1f760"> 1324</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#a39f6d06844ba0d954784172036b1f760">testLedgerDeltaBadReply</a>()</div>
<div class="line"><a id="l01325" name="l01325"></a><span class="lineno"> 1325</span> {</div>
<div class="line"><a id="l01326" name="l01326"></a><span class="lineno"> 1326</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;LedgerDeltaAcquire bad reply&quot;</span>);</div>
<div class="line"><a id="l01327" name="l01327"></a><span class="lineno"> 1327</span> <span class="keywordtype">int</span> totalReplay = 3;</div>
<div class="line"><a id="l01328" name="l01328"></a><span class="lineno"> 1328</span> <a class="code hl_struct" href="structripple_1_1test_1_1NetworkOfTwo.html">NetworkOfTwo</a> net(</div>
<div class="line"><a id="l01329" name="l01329"></a><span class="lineno"> 1329</span> *<span class="keyword">this</span>,</div>
<div class="line"><a id="l01330" name="l01330"></a><span class="lineno"> 1330</span> {totalReplay + 1},</div>
<div class="line"><a id="l01331" name="l01331"></a><span class="lineno"> 1331</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a0cf51aa72b773c64178a944bf85ef503">PeerSetBehavior::DropLedgerDeltaReply</a>,</div>
<div class="line"><a id="l01332" name="l01332"></a><span class="lineno"> 1332</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa6a6decd76984eed63a0c173f9f574487">InboundLedgersBehavior::DropAll</a>,</div>
<div class="line"><a id="l01333" name="l01333"></a><span class="lineno"> 1333</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ead26b2afca64340e74d57ba14421d17dc">PeerFeature::LedgerReplayEnabled</a>);</div>
<div class="line"><a id="l01334" name="l01334"></a><span class="lineno"> 1334</span> </div>
<div class="line"><a id="l01335" name="l01335"></a><span class="lineno"> 1335</span> <span class="keyword">auto</span> l = net.<a class="code hl_variable" href="structripple_1_1test_1_1NetworkOfTwo.html#a28825451941ccd2dcc9d097e6d07b0e5">server</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">getClosedLedger</a>();</div>
<div class="line"><a id="l01336" name="l01336"></a><span class="lineno"> 1336</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> finalHash = l-&gt;info().hash;</div>
<div class="line"><a id="l01337" name="l01337"></a><span class="lineno"> 1337</span> net.client.ledgerMaster.storeLedger(l);</div>
<div class="line"><a id="l01338" name="l01338"></a><span class="lineno"> 1338</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01339" name="l01339"></a><span class="lineno"> 1339</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash, totalReplay);</div>
<div class="line"><a id="l01340" name="l01340"></a><span class="lineno"> 1340</span> </div>
<div class="line"><a id="l01341" name="l01341"></a><span class="lineno"> 1341</span> <span class="keyword">auto</span> delta = net.client.findLedgerDeltaAcquire(l-&gt;info().parentHash);</div>
<div class="line"><a id="l01342" name="l01342"></a><span class="lineno"> 1342</span> delta-&gt;processData(</div>
<div class="line"><a id="l01343" name="l01343"></a><span class="lineno"> 1343</span> l-&gt;info(), <span class="comment">// wrong ledger info</span></div>
<div class="line"><a id="l01344" name="l01344"></a><span class="lineno"> 1344</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/map.html">std::map</a>&lt;<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;STTx const&gt;</a>&gt;());</div>
<div class="line"><a id="l01345" name="l01345"></a><span class="lineno"> 1345</span> BEAST_EXPECT(net.client.taskStatus(delta) == <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca">TaskStatus::Failed</a>);</div>
<div class="line"><a id="l01346" name="l01346"></a><span class="lineno"> 1346</span> BEAST_EXPECT(</div>
<div class="line"><a id="l01347" name="l01347"></a><span class="lineno"> 1347</span> net.client.taskStatus(net.client.findTask(</div>
<div class="line"><a id="l01348" name="l01348"></a><span class="lineno"> 1348</span> finalHash, totalReplay)) == <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca">TaskStatus::Failed</a>);</div>
<div class="line"><a id="l01349" name="l01349"></a><span class="lineno"> 1349</span> </div>
<div class="line"><a id="l01350" name="l01350"></a><span class="lineno"> 1350</span> <span class="comment">// add another task</span></div>
<div class="line"><a id="l01351" name="l01351"></a><span class="lineno"> 1351</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01352" name="l01352"></a><span class="lineno"> 1352</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash, totalReplay + 1);</div>
<div class="line"><a id="l01353" name="l01353"></a><span class="lineno"> 1353</span> BEAST_EXPECT(</div>
<div class="line"><a id="l01354" name="l01354"></a><span class="lineno"> 1354</span> net.client.taskStatus(net.client.findTask(</div>
<div class="line"><a id="l01355" name="l01355"></a><span class="lineno"> 1355</span> finalHash, totalReplay + 1)) == <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca">TaskStatus::Failed</a>);</div>
<div class="line"><a id="l01356" name="l01356"></a><span class="lineno"> 1356</span> }</div>
</div>
<div class="line"><a id="l01357" name="l01357"></a><span class="lineno"> 1357</span> </div>
<div class="line"><a id="l01358" name="l01358"></a><span class="lineno"> 1358</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01359" data-start="{" data-end="}">
<div class="line"><a id="l01359" name="l01359"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayer__test.html#a3536944873630637ccea5867b445c3b0"> 1359</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#a3536944873630637ccea5867b445c3b0">testLedgerReplayOverlap</a>()</div>
<div class="line"><a id="l01360" name="l01360"></a><span class="lineno"> 1360</span> {</div>
<div class="line"><a id="l01361" name="l01361"></a><span class="lineno"> 1361</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Overlap tasks&quot;</span>);</div>
<div class="line"><a id="l01362" name="l01362"></a><span class="lineno"> 1362</span> <span class="keywordtype">int</span> totalReplay = 5;</div>
<div class="line"><a id="l01363" name="l01363"></a><span class="lineno"> 1363</span> <a class="code hl_struct" href="structripple_1_1test_1_1NetworkOfTwo.html">NetworkOfTwo</a> net(</div>
<div class="line"><a id="l01364" name="l01364"></a><span class="lineno"> 1364</span> *<span class="keyword">this</span>,</div>
<div class="line"><a id="l01365" name="l01365"></a><span class="lineno"> 1365</span> {totalReplay * 3 + 1},</div>
<div class="line"><a id="l01366" name="l01366"></a><span class="lineno"> 1366</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a0c6ad70beb3a7e76c3fc7adab7c46acc">PeerSetBehavior::Good</a>,</div>
<div class="line"><a id="l01367" name="l01367"></a><span class="lineno"> 1367</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa0c6ad70beb3a7e76c3fc7adab7c46acc">InboundLedgersBehavior::Good</a>,</div>
<div class="line"><a id="l01368" name="l01368"></a><span class="lineno"> 1368</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ead26b2afca64340e74d57ba14421d17dc">PeerFeature::LedgerReplayEnabled</a>);</div>
<div class="line"><a id="l01369" name="l01369"></a><span class="lineno"> 1369</span> <span class="keyword">auto</span> l = net.<a class="code hl_variable" href="structripple_1_1test_1_1NetworkOfTwo.html#a28825451941ccd2dcc9d097e6d07b0e5">server</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">getClosedLedger</a>();</div>
<div class="line"><a id="l01370" name="l01370"></a><span class="lineno"> 1370</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> finalHash = l-&gt;info().hash;</div>
<div class="line"><a id="l01371" name="l01371"></a><span class="lineno"> 1371</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01372" name="l01372"></a><span class="lineno"> 1372</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash, totalReplay);</div>
<div class="line"><a id="l01373" name="l01373"></a><span class="lineno"> 1373</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;TaskStatus&gt;</a> deltaStatuses(</div>
<div class="line"><a id="l01374" name="l01374"></a><span class="lineno"> 1374</span> totalReplay - 1, <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>);</div>
<div class="line"><a id="l01375" name="l01375"></a><span class="lineno"> 1375</span> BEAST_EXPECT(net.client.waitAndCheckStatus(</div>
<div class="line"><a id="l01376" name="l01376"></a><span class="lineno"> 1376</span> finalHash,</div>
<div class="line"><a id="l01377" name="l01377"></a><span class="lineno"> 1377</span> totalReplay,</div>
<div class="line"><a id="l01378" name="l01378"></a><span class="lineno"> 1378</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01379" name="l01379"></a><span class="lineno"> 1379</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01380" name="l01380"></a><span class="lineno"> 1380</span> deltaStatuses));</div>
<div class="line"><a id="l01381" name="l01381"></a><span class="lineno"> 1381</span> BEAST_EXPECT(net.client.waitForLedgers(finalHash, totalReplay));</div>
<div class="line"><a id="l01382" name="l01382"></a><span class="lineno"> 1382</span> </div>
<div class="line"><a id="l01383" name="l01383"></a><span class="lineno"> 1383</span> <span class="comment">// same range, same reason</span></div>
<div class="line"><a id="l01384" name="l01384"></a><span class="lineno"> 1384</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01385" name="l01385"></a><span class="lineno"> 1385</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash, totalReplay);</div>
<div class="line"><a id="l01386" name="l01386"></a><span class="lineno"> 1386</span> BEAST_EXPECT(net.client.countsAsExpected(1, 1, totalReplay - 1));</div>
<div class="line"><a id="l01387" name="l01387"></a><span class="lineno"> 1387</span> <span class="comment">// same range, different reason</span></div>
<div class="line"><a id="l01388" name="l01388"></a><span class="lineno"> 1388</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01389" name="l01389"></a><span class="lineno"> 1389</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7a6ea28b46407abd2931a73c789ecdd944">InboundLedger::Reason::CONSENSUS</a>, finalHash, totalReplay);</div>
<div class="line"><a id="l01390" name="l01390"></a><span class="lineno"> 1390</span> BEAST_EXPECT(net.client.countsAsExpected(2, 1, totalReplay - 1));</div>
<div class="line"><a id="l01391" name="l01391"></a><span class="lineno"> 1391</span> </div>
<div class="line"><a id="l01392" name="l01392"></a><span class="lineno"> 1392</span> <span class="comment">// no overlap</span></div>
<div class="line"><a id="l01393" name="l01393"></a><span class="lineno"> 1393</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; totalReplay + 2; ++i)</div>
<div class="line"><a id="l01394" name="l01394"></a><span class="lineno"> 1394</span> {</div>
<div class="line"><a id="l01395" name="l01395"></a><span class="lineno"> 1395</span> l = net.server.ledgerMaster.getLedgerByHash(l-&gt;info().parentHash);</div>
<div class="line"><a id="l01396" name="l01396"></a><span class="lineno"> 1396</span> }</div>
<div class="line"><a id="l01397" name="l01397"></a><span class="lineno"> 1397</span> <span class="keyword">auto</span> finalHash_early = l-&gt;info().hash;</div>
<div class="line"><a id="l01398" name="l01398"></a><span class="lineno"> 1398</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01399" name="l01399"></a><span class="lineno"> 1399</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash_early, totalReplay);</div>
<div class="line"><a id="l01400" name="l01400"></a><span class="lineno"> 1400</span> BEAST_EXPECT(net.client.waitAndCheckStatus(</div>
<div class="line"><a id="l01401" name="l01401"></a><span class="lineno"> 1401</span> finalHash_early,</div>
<div class="line"><a id="l01402" name="l01402"></a><span class="lineno"> 1402</span> totalReplay,</div>
<div class="line"><a id="l01403" name="l01403"></a><span class="lineno"> 1403</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01404" name="l01404"></a><span class="lineno"> 1404</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01405" name="l01405"></a><span class="lineno"> 1405</span> deltaStatuses)); <span class="comment">// deltaStatuses no change</span></div>
<div class="line"><a id="l01406" name="l01406"></a><span class="lineno"> 1406</span> BEAST_EXPECT(net.client.waitForLedgers(finalHash_early, totalReplay));</div>
<div class="line"><a id="l01407" name="l01407"></a><span class="lineno"> 1407</span> BEAST_EXPECT(net.client.countsAsExpected(3, 2, 2 * (totalReplay - 1)));</div>
<div class="line"><a id="l01408" name="l01408"></a><span class="lineno"> 1408</span> </div>
<div class="line"><a id="l01409" name="l01409"></a><span class="lineno"> 1409</span> <span class="comment">// partial overlap</span></div>
<div class="line"><a id="l01410" name="l01410"></a><span class="lineno"> 1410</span> l = net.server.ledgerMaster.getLedgerByHash(l-&gt;info().parentHash);</div>
<div class="line"><a id="l01411" name="l01411"></a><span class="lineno"> 1411</span> <span class="keyword">auto</span> finalHash_moreEarly = l-&gt;info().parentHash;</div>
<div class="line"><a id="l01412" name="l01412"></a><span class="lineno"> 1412</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01413" name="l01413"></a><span class="lineno"> 1413</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash_moreEarly, totalReplay);</div>
<div class="line"><a id="l01414" name="l01414"></a><span class="lineno"> 1414</span> BEAST_EXPECT(net.client.waitAndCheckStatus(</div>
<div class="line"><a id="l01415" name="l01415"></a><span class="lineno"> 1415</span> finalHash_moreEarly,</div>
<div class="line"><a id="l01416" name="l01416"></a><span class="lineno"> 1416</span> totalReplay,</div>
<div class="line"><a id="l01417" name="l01417"></a><span class="lineno"> 1417</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01418" name="l01418"></a><span class="lineno"> 1418</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01419" name="l01419"></a><span class="lineno"> 1419</span> deltaStatuses)); <span class="comment">// deltaStatuses no change</span></div>
<div class="line"><a id="l01420" name="l01420"></a><span class="lineno"> 1420</span> BEAST_EXPECT(</div>
<div class="line"><a id="l01421" name="l01421"></a><span class="lineno"> 1421</span> net.client.waitForLedgers(finalHash_moreEarly, totalReplay));</div>
<div class="line"><a id="l01422" name="l01422"></a><span class="lineno"> 1422</span> BEAST_EXPECT(</div>
<div class="line"><a id="l01423" name="l01423"></a><span class="lineno"> 1423</span> net.client.countsAsExpected(4, 3, 2 * (totalReplay - 1) + 2));</div>
<div class="line"><a id="l01424" name="l01424"></a><span class="lineno"> 1424</span> </div>
<div class="line"><a id="l01425" name="l01425"></a><span class="lineno"> 1425</span> <span class="comment">// cover</span></div>
<div class="line"><a id="l01426" name="l01426"></a><span class="lineno"> 1426</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01427" name="l01427"></a><span class="lineno"> 1427</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash, totalReplay * 3);</div>
<div class="line"><a id="l01428" name="l01428"></a><span class="lineno"> 1428</span> deltaStatuses =</div>
<div class="line"><a id="l01429" name="l01429"></a><span class="lineno"> 1429</span> <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::vector&lt;TaskStatus&gt;</a>(totalReplay * 3 - 1, <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>);</div>
<div class="line"><a id="l01430" name="l01430"></a><span class="lineno"> 1430</span> BEAST_EXPECT(net.client.waitAndCheckStatus(</div>
<div class="line"><a id="l01431" name="l01431"></a><span class="lineno"> 1431</span> finalHash,</div>
<div class="line"><a id="l01432" name="l01432"></a><span class="lineno"> 1432</span> totalReplay * 3,</div>
<div class="line"><a id="l01433" name="l01433"></a><span class="lineno"> 1433</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01434" name="l01434"></a><span class="lineno"> 1434</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01435" name="l01435"></a><span class="lineno"> 1435</span> deltaStatuses)); <span class="comment">// deltaStatuses changed</span></div>
<div class="line"><a id="l01436" name="l01436"></a><span class="lineno"> 1436</span> BEAST_EXPECT(net.client.waitForLedgers(finalHash, totalReplay * 3));</div>
<div class="line"><a id="l01437" name="l01437"></a><span class="lineno"> 1437</span> BEAST_EXPECT(net.client.countsAsExpected(5, 3, totalReplay * 3 - 1));</div>
<div class="line"><a id="l01438" name="l01438"></a><span class="lineno"> 1438</span> </div>
<div class="line"><a id="l01439" name="l01439"></a><span class="lineno"> 1439</span> <span class="comment">// sweep</span></div>
<div class="line"><a id="l01440" name="l01440"></a><span class="lineno"> 1440</span> net.client.replayer.sweep();</div>
<div class="line"><a id="l01441" name="l01441"></a><span class="lineno"> 1441</span> BEAST_EXPECT(net.client.countsAsExpected(0, 0, 0));</div>
<div class="line"><a id="l01442" name="l01442"></a><span class="lineno"> 1442</span> }</div>
</div>
<div class="line"><a id="l01443" name="l01443"></a><span class="lineno"> 1443</span> </div>
<div class="line"><a id="l01444" name="l01444"></a><span class="lineno"> 1444</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01445" data-start="{" data-end="}">
<div class="line"><a id="l01445" name="l01445"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayer__test.html#a3f15f2eefbc57687048ac84e5e077c41"> 1445</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#a3f15f2eefbc57687048ac84e5e077c41">run</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l01446" name="l01446"></a><span class="lineno"> 1446</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l01447" name="l01447"></a><span class="lineno"> 1447</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#a1f6d416bc654487012e5badf4aed903d">testProofPath</a>();</div>
<div class="line"><a id="l01448" name="l01448"></a><span class="lineno"> 1448</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#adc7d93c421443d75ebb9bf71dea72421">testReplayDelta</a>();</div>
<div class="line"><a id="l01449" name="l01449"></a><span class="lineno"> 1449</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#a976920f91a1a2e816c8d54906a646be1">testTaskParameter</a>();</div>
<div class="line"><a id="l01450" name="l01450"></a><span class="lineno"> 1450</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#ab87606b129bb39f7118a2401b981ce69">testConfig</a>();</div>
<div class="line"><a id="l01451" name="l01451"></a><span class="lineno"> 1451</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#af548fd09fe85d089adee2806eab92988">testHandshake</a>();</div>
<div class="line"><a id="l01452" name="l01452"></a><span class="lineno"> 1452</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#aea0fc6be2d2f14294990ed7c265d614a">testAllLocal</a>(1);</div>
<div class="line"><a id="l01453" name="l01453"></a><span class="lineno"> 1453</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#aea0fc6be2d2f14294990ed7c265d614a">testAllLocal</a>(3);</div>
<div class="line"><a id="l01454" name="l01454"></a><span class="lineno"> 1454</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#ac313b58a2d0843ab4f8d46ece7fac907">testAllInboundLedgers</a>(1);</div>
<div class="line"><a id="l01455" name="l01455"></a><span class="lineno"> 1455</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#ac313b58a2d0843ab4f8d46ece7fac907">testAllInboundLedgers</a>(4);</div>
<div class="line"><a id="l01456" name="l01456"></a><span class="lineno"> 1456</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#ae8bbc2e5217f94c203c1289743e2fbad">testPeerSetBehavior</a>(<a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a0c6ad70beb3a7e76c3fc7adab7c46acc">PeerSetBehavior::Good</a>, 1);</div>
<div class="line"><a id="l01457" name="l01457"></a><span class="lineno"> 1457</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#ae8bbc2e5217f94c203c1289743e2fbad">testPeerSetBehavior</a>(<a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a0c6ad70beb3a7e76c3fc7adab7c46acc">PeerSetBehavior::Good</a>);</div>
<div class="line"><a id="l01458" name="l01458"></a><span class="lineno"> 1458</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#ae8bbc2e5217f94c203c1289743e2fbad">testPeerSetBehavior</a>(<a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1ad10d06eac1b72b6b66d7e8bcd74474b6">PeerSetBehavior::Drop50</a>);</div>
<div class="line"><a id="l01459" name="l01459"></a><span class="lineno"> 1459</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#ae8bbc2e5217f94c203c1289743e2fbad">testPeerSetBehavior</a>(<a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a7020426cfb0a204051be4b3053d2acc8">PeerSetBehavior::Repeat</a>);</div>
<div class="line"><a id="l01460" name="l01460"></a><span class="lineno"> 1460</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#a49d59f193c06056e710a3f6e32772941">testStop</a>();</div>
<div class="line"><a id="l01461" name="l01461"></a><span class="lineno"> 1461</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#ac9e7760a63ff21271107c20f9f690341">testSkipListBadReply</a>();</div>
<div class="line"><a id="l01462" name="l01462"></a><span class="lineno"> 1462</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#a39f6d06844ba0d954784172036b1f760">testLedgerDeltaBadReply</a>();</div>
<div class="line"><a id="l01463" name="l01463"></a><span class="lineno"> 1463</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayer__test.html#a3536944873630637ccea5867b445c3b0">testLedgerReplayOverlap</a>();</div>
<div class="line"><a id="l01464" name="l01464"></a><span class="lineno"> 1464</span> }</div>
</div>
<div class="line"><a id="l01465" name="l01465"></a><span class="lineno"> 1465</span>};</div>
</div>
<div class="line"><a id="l01466" name="l01466"></a><span class="lineno"> 1466</span> </div>
<div class="foldopen" id="foldopen01467" data-start="{" data-end="};">
<div class="line"><a id="l01467" name="l01467"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayerTimeout__test.html"> 1467</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structripple_1_1test_1_1LedgerReplayerTimeout__test.html">LedgerReplayerTimeout_test</a> : <span class="keyword">public</span> <a class="code hl_class" href="classbeast_1_1unit__test_1_1suite.html">beast::unit_test::suite</a></div>
<div class="line"><a id="l01468" name="l01468"></a><span class="lineno"> 1468</span>{</div>
<div class="line"><a id="l01469" name="l01469"></a><span class="lineno"> 1469</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01470" data-start="{" data-end="}">
<div class="line"><a id="l01470" name="l01470"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayerTimeout__test.html#a1882b677eaad5d2e1e599883396bdd6a"> 1470</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayerTimeout__test.html#a1882b677eaad5d2e1e599883396bdd6a">testSkipListTimeout</a>()</div>
<div class="line"><a id="l01471" name="l01471"></a><span class="lineno"> 1471</span> {</div>
<div class="line"><a id="l01472" name="l01472"></a><span class="lineno"> 1472</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;SkipListAcquire timeout&quot;</span>);</div>
<div class="line"><a id="l01473" name="l01473"></a><span class="lineno"> 1473</span> <span class="keywordtype">int</span> totalReplay = 3;</div>
<div class="line"><a id="l01474" name="l01474"></a><span class="lineno"> 1474</span> <a class="code hl_struct" href="structripple_1_1test_1_1NetworkOfTwo.html">NetworkOfTwo</a> net(</div>
<div class="line"><a id="l01475" name="l01475"></a><span class="lineno"> 1475</span> *<span class="keyword">this</span>,</div>
<div class="line"><a id="l01476" name="l01476"></a><span class="lineno"> 1476</span> {totalReplay + 1},</div>
<div class="line"><a id="l01477" name="l01477"></a><span class="lineno"> 1477</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a6a6decd76984eed63a0c173f9f574487">PeerSetBehavior::DropAll</a>,</div>
<div class="line"><a id="l01478" name="l01478"></a><span class="lineno"> 1478</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa0c6ad70beb3a7e76c3fc7adab7c46acc">InboundLedgersBehavior::Good</a>,</div>
<div class="line"><a id="l01479" name="l01479"></a><span class="lineno"> 1479</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ead26b2afca64340e74d57ba14421d17dc">PeerFeature::LedgerReplayEnabled</a>);</div>
<div class="line"><a id="l01480" name="l01480"></a><span class="lineno"> 1480</span> </div>
<div class="line"><a id="l01481" name="l01481"></a><span class="lineno"> 1481</span> <span class="keyword">auto</span> l = net.<a class="code hl_variable" href="structripple_1_1test_1_1NetworkOfTwo.html#a28825451941ccd2dcc9d097e6d07b0e5">server</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">getClosedLedger</a>();</div>
<div class="line"><a id="l01482" name="l01482"></a><span class="lineno"> 1482</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> finalHash = l-&gt;info().hash;</div>
<div class="line"><a id="l01483" name="l01483"></a><span class="lineno"> 1483</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01484" name="l01484"></a><span class="lineno"> 1484</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash, totalReplay);</div>
<div class="line"><a id="l01485" name="l01485"></a><span class="lineno"> 1485</span> </div>
<div class="line"><a id="l01486" name="l01486"></a><span class="lineno"> 1486</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;TaskStatus&gt;</a> deltaStatuses;</div>
<div class="line"><a id="l01487" name="l01487"></a><span class="lineno"> 1487</span> BEAST_EXPECT(net.client.waitAndCheckStatus(</div>
<div class="line"><a id="l01488" name="l01488"></a><span class="lineno"> 1488</span> finalHash,</div>
<div class="line"><a id="l01489" name="l01489"></a><span class="lineno"> 1489</span> totalReplay,</div>
<div class="line"><a id="l01490" name="l01490"></a><span class="lineno"> 1490</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca">TaskStatus::Failed</a>,</div>
<div class="line"><a id="l01491" name="l01491"></a><span class="lineno"> 1491</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca">TaskStatus::Failed</a>,</div>
<div class="line"><a id="l01492" name="l01492"></a><span class="lineno"> 1492</span> deltaStatuses));</div>
<div class="line"><a id="l01493" name="l01493"></a><span class="lineno"> 1493</span> </div>
<div class="line"><a id="l01494" name="l01494"></a><span class="lineno"> 1494</span> <span class="comment">// sweep</span></div>
<div class="line"><a id="l01495" name="l01495"></a><span class="lineno"> 1495</span> BEAST_EXPECT(net.client.countsAsExpected(1, 1, 0));</div>
<div class="line"><a id="l01496" name="l01496"></a><span class="lineno"> 1496</span> net.client.replayer.sweep();</div>
<div class="line"><a id="l01497" name="l01497"></a><span class="lineno"> 1497</span> BEAST_EXPECT(net.client.countsAsExpected(0, 0, 0));</div>
<div class="line"><a id="l01498" name="l01498"></a><span class="lineno"> 1498</span> }</div>
</div>
<div class="line"><a id="l01499" name="l01499"></a><span class="lineno"> 1499</span> </div>
<div class="line"><a id="l01500" name="l01500"></a><span class="lineno"> 1500</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01501" data-start="{" data-end="}">
<div class="line"><a id="l01501" name="l01501"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayerTimeout__test.html#ab3757ac0d9a8fbee3d108f8d5d9c9a12"> 1501</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayerTimeout__test.html#ab3757ac0d9a8fbee3d108f8d5d9c9a12">testLedgerDeltaTimeout</a>()</div>
<div class="line"><a id="l01502" name="l01502"></a><span class="lineno"> 1502</span> {</div>
<div class="line"><a id="l01503" name="l01503"></a><span class="lineno"> 1503</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;LedgerDeltaAcquire timeout&quot;</span>);</div>
<div class="line"><a id="l01504" name="l01504"></a><span class="lineno"> 1504</span> <span class="keywordtype">int</span> totalReplay = 3;</div>
<div class="line"><a id="l01505" name="l01505"></a><span class="lineno"> 1505</span> <a class="code hl_struct" href="structripple_1_1test_1_1NetworkOfTwo.html">NetworkOfTwo</a> net(</div>
<div class="line"><a id="l01506" name="l01506"></a><span class="lineno"> 1506</span> *<span class="keyword">this</span>,</div>
<div class="line"><a id="l01507" name="l01507"></a><span class="lineno"> 1507</span> {totalReplay + 1},</div>
<div class="line"><a id="l01508" name="l01508"></a><span class="lineno"> 1508</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a6a6decd76984eed63a0c173f9f574487">PeerSetBehavior::DropAll</a>,</div>
<div class="line"><a id="l01509" name="l01509"></a><span class="lineno"> 1509</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa0c6ad70beb3a7e76c3fc7adab7c46acc">InboundLedgersBehavior::Good</a>,</div>
<div class="line"><a id="l01510" name="l01510"></a><span class="lineno"> 1510</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ead26b2afca64340e74d57ba14421d17dc">PeerFeature::LedgerReplayEnabled</a>);</div>
<div class="line"><a id="l01511" name="l01511"></a><span class="lineno"> 1511</span> </div>
<div class="line"><a id="l01512" name="l01512"></a><span class="lineno"> 1512</span> <span class="keyword">auto</span> l = net.<a class="code hl_variable" href="structripple_1_1test_1_1NetworkOfTwo.html#a28825451941ccd2dcc9d097e6d07b0e5">server</a>.<a class="code hl_variable" href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ledgerMaster</a>.<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">getClosedLedger</a>();</div>
<div class="line"><a id="l01513" name="l01513"></a><span class="lineno"> 1513</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> finalHash = l-&gt;info().hash;</div>
<div class="line"><a id="l01514" name="l01514"></a><span class="lineno"> 1514</span> net.client.ledgerMaster.storeLedger(l);</div>
<div class="line"><a id="l01515" name="l01515"></a><span class="lineno"> 1515</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01516" name="l01516"></a><span class="lineno"> 1516</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finalHash, totalReplay);</div>
<div class="line"><a id="l01517" name="l01517"></a><span class="lineno"> 1517</span> </div>
<div class="line"><a id="l01518" name="l01518"></a><span class="lineno"> 1518</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;TaskStatus&gt;</a> deltaStatuses(</div>
<div class="line"><a id="l01519" name="l01519"></a><span class="lineno"> 1519</span> totalReplay - 1, <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca">TaskStatus::Failed</a>);</div>
<div class="line"><a id="l01520" name="l01520"></a><span class="lineno"> 1520</span> deltaStatuses.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>() = <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>; <span class="comment">// in client ledgerMaster</span></div>
<div class="line"><a id="l01521" name="l01521"></a><span class="lineno"> 1521</span> BEAST_EXPECT(net.client.waitAndCheckStatus(</div>
<div class="line"><a id="l01522" name="l01522"></a><span class="lineno"> 1522</span> finalHash,</div>
<div class="line"><a id="l01523" name="l01523"></a><span class="lineno"> 1523</span> totalReplay,</div>
<div class="line"><a id="l01524" name="l01524"></a><span class="lineno"> 1524</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca">TaskStatus::Failed</a>,</div>
<div class="line"><a id="l01525" name="l01525"></a><span class="lineno"> 1525</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01526" name="l01526"></a><span class="lineno"> 1526</span> deltaStatuses));</div>
<div class="line"><a id="l01527" name="l01527"></a><span class="lineno"> 1527</span> </div>
<div class="line"><a id="l01528" name="l01528"></a><span class="lineno"> 1528</span> <span class="comment">// sweep</span></div>
<div class="line"><a id="l01529" name="l01529"></a><span class="lineno"> 1529</span> BEAST_EXPECT(net.client.countsAsExpected(1, 1, totalReplay - 1));</div>
<div class="line"><a id="l01530" name="l01530"></a><span class="lineno"> 1530</span> net.client.replayer.sweep();</div>
<div class="line"><a id="l01531" name="l01531"></a><span class="lineno"> 1531</span> BEAST_EXPECT(net.client.countsAsExpected(0, 0, 0));</div>
<div class="line"><a id="l01532" name="l01532"></a><span class="lineno"> 1532</span> }</div>
</div>
<div class="line"><a id="l01533" name="l01533"></a><span class="lineno"> 1533</span> </div>
<div class="line"><a id="l01534" name="l01534"></a><span class="lineno"> 1534</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01535" data-start="{" data-end="}">
<div class="line"><a id="l01535" name="l01535"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayerTimeout__test.html#a146e52d5da747209c53624050f937936"> 1535</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayerTimeout__test.html#a146e52d5da747209c53624050f937936">run</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l01536" name="l01536"></a><span class="lineno"> 1536</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l01537" name="l01537"></a><span class="lineno"> 1537</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayerTimeout__test.html#a1882b677eaad5d2e1e599883396bdd6a">testSkipListTimeout</a>();</div>
<div class="line"><a id="l01538" name="l01538"></a><span class="lineno"> 1538</span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayerTimeout__test.html#ab3757ac0d9a8fbee3d108f8d5d9c9a12">testLedgerDeltaTimeout</a>();</div>
<div class="line"><a id="l01539" name="l01539"></a><span class="lineno"> 1539</span> }</div>
</div>
<div class="line"><a id="l01540" name="l01540"></a><span class="lineno"> 1540</span>};</div>
</div>
<div class="line"><a id="l01541" name="l01541"></a><span class="lineno"> 1541</span> </div>
<div class="foldopen" id="foldopen01542" data-start="{" data-end="};">
<div class="line"><a id="l01542" name="l01542"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayerLong__test.html"> 1542</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structripple_1_1test_1_1LedgerReplayerLong__test.html">LedgerReplayerLong_test</a> : <span class="keyword">public</span> <a class="code hl_class" href="classbeast_1_1unit__test_1_1suite.html">beast::unit_test::suite</a></div>
<div class="line"><a id="l01543" name="l01543"></a><span class="lineno"> 1543</span>{</div>
<div class="line"><a id="l01544" name="l01544"></a><span class="lineno"> 1544</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01545" data-start="{" data-end="}">
<div class="line"><a id="l01545" name="l01545"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1LedgerReplayerLong__test.html#a4dadccc506933338ae8bfb99dca568e8"> 1545</a></span> <a class="code hl_function" href="structripple_1_1test_1_1LedgerReplayerLong__test.html#a4dadccc506933338ae8bfb99dca568e8">run</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l01546" name="l01546"></a><span class="lineno"> 1546</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l01547" name="l01547"></a><span class="lineno"> 1547</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Acquire 1000 ledgers&quot;</span>);</div>
<div class="line"><a id="l01548" name="l01548"></a><span class="lineno"> 1548</span> <span class="keywordtype">int</span> totalReplay = 250;</div>
<div class="line"><a id="l01549" name="l01549"></a><span class="lineno"> 1549</span> <span class="keywordtype">int</span> rounds = 4;</div>
<div class="line"><a id="l01550" name="l01550"></a><span class="lineno"> 1550</span> <a class="code hl_struct" href="structripple_1_1test_1_1NetworkOfTwo.html">NetworkOfTwo</a> net(</div>
<div class="line"><a id="l01551" name="l01551"></a><span class="lineno"> 1551</span> *<span class="keyword">this</span>,</div>
<div class="line"><a id="l01552" name="l01552"></a><span class="lineno"> 1552</span> {totalReplay * rounds + 1},</div>
<div class="line"><a id="l01553" name="l01553"></a><span class="lineno"> 1553</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a0c6ad70beb3a7e76c3fc7adab7c46acc">PeerSetBehavior::Good</a>,</div>
<div class="line"><a id="l01554" name="l01554"></a><span class="lineno"> 1554</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa0c6ad70beb3a7e76c3fc7adab7c46acc">InboundLedgersBehavior::Good</a>,</div>
<div class="line"><a id="l01555" name="l01555"></a><span class="lineno"> 1555</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ead26b2afca64340e74d57ba14421d17dc">PeerFeature::LedgerReplayEnabled</a>);</div>
<div class="line"><a id="l01556" name="l01556"></a><span class="lineno"> 1556</span> </div>
<div class="line"><a id="l01557" name="l01557"></a><span class="lineno"> 1557</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a> finishHashes;</div>
<div class="line"><a id="l01558" name="l01558"></a><span class="lineno"> 1558</span> <span class="keyword">auto</span> l = net.server.ledgerMaster.getClosedLedger();</div>
<div class="line"><a id="l01559" name="l01559"></a><span class="lineno"> 1559</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; rounds; ++i)</div>
<div class="line"><a id="l01560" name="l01560"></a><span class="lineno"> 1560</span> {</div>
<div class="line"><a id="l01561" name="l01561"></a><span class="lineno"> 1561</span> finishHashes.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(l-&gt;info().hash);</div>
<div class="line"><a id="l01562" name="l01562"></a><span class="lineno"> 1562</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; totalReplay; ++j)</div>
<div class="line"><a id="l01563" name="l01563"></a><span class="lineno"> 1563</span> {</div>
<div class="line"><a id="l01564" name="l01564"></a><span class="lineno"> 1564</span> l = net.server.ledgerMaster.getLedgerByHash(</div>
<div class="line"><a id="l01565" name="l01565"></a><span class="lineno"> 1565</span> l-&gt;info().parentHash);</div>
<div class="line"><a id="l01566" name="l01566"></a><span class="lineno"> 1566</span> }</div>
<div class="line"><a id="l01567" name="l01567"></a><span class="lineno"> 1567</span> }</div>
<div class="line"><a id="l01568" name="l01568"></a><span class="lineno"> 1568</span> BEAST_EXPECT(finishHashes.size() == rounds);</div>
<div class="line"><a id="l01569" name="l01569"></a><span class="lineno"> 1569</span> </div>
<div class="line"><a id="l01570" name="l01570"></a><span class="lineno"> 1570</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; rounds; ++i)</div>
<div class="line"><a id="l01571" name="l01571"></a><span class="lineno"> 1571</span> {</div>
<div class="line"><a id="l01572" name="l01572"></a><span class="lineno"> 1572</span> net.client.replayer.replay(</div>
<div class="line"><a id="l01573" name="l01573"></a><span class="lineno"> 1573</span> <a class="code hl_enumvalue" href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">InboundLedger::Reason::GENERIC</a>, finishHashes[i], totalReplay);</div>
<div class="line"><a id="l01574" name="l01574"></a><span class="lineno"> 1574</span> }</div>
<div class="line"><a id="l01575" name="l01575"></a><span class="lineno"> 1575</span> </div>
<div class="line"><a id="l01576" name="l01576"></a><span class="lineno"> 1576</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;TaskStatus&gt;</a> deltaStatuses(</div>
<div class="line"><a id="l01577" name="l01577"></a><span class="lineno"> 1577</span> totalReplay - 1, <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>);</div>
<div class="line"><a id="l01578" name="l01578"></a><span class="lineno"> 1578</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; rounds; ++i)</div>
<div class="line"><a id="l01579" name="l01579"></a><span class="lineno"> 1579</span> {</div>
<div class="line"><a id="l01580" name="l01580"></a><span class="lineno"> 1580</span> BEAST_EXPECT(net.client.waitAndCheckStatus(</div>
<div class="line"><a id="l01581" name="l01581"></a><span class="lineno"> 1581</span> finishHashes[i],</div>
<div class="line"><a id="l01582" name="l01582"></a><span class="lineno"> 1582</span> totalReplay,</div>
<div class="line"><a id="l01583" name="l01583"></a><span class="lineno"> 1583</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01584" name="l01584"></a><span class="lineno"> 1584</span> <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">TaskStatus::Completed</a>,</div>
<div class="line"><a id="l01585" name="l01585"></a><span class="lineno"> 1585</span> deltaStatuses));</div>
<div class="line"><a id="l01586" name="l01586"></a><span class="lineno"> 1586</span> }</div>
<div class="line"><a id="l01587" name="l01587"></a><span class="lineno"> 1587</span> </div>
<div class="line"><a id="l01588" name="l01588"></a><span class="lineno"> 1588</span> BEAST_EXPECT(</div>
<div class="line"><a id="l01589" name="l01589"></a><span class="lineno"> 1589</span> net.client.waitForLedgers(finishHashes[0], totalReplay * rounds));</div>
<div class="line"><a id="l01590" name="l01590"></a><span class="lineno"> 1590</span> BEAST_EXPECT(net.client.countsAsExpected(</div>
<div class="line"><a id="l01591" name="l01591"></a><span class="lineno"> 1591</span> rounds, rounds, rounds * (totalReplay - 1)));</div>
<div class="line"><a id="l01592" name="l01592"></a><span class="lineno"> 1592</span> </div>
<div class="line"><a id="l01593" name="l01593"></a><span class="lineno"> 1593</span> <span class="comment">// sweep</span></div>
<div class="line"><a id="l01594" name="l01594"></a><span class="lineno"> 1594</span> net.client.replayer.sweep();</div>
<div class="line"><a id="l01595" name="l01595"></a><span class="lineno"> 1595</span> BEAST_EXPECT(net.client.countsAsExpected(0, 0, 0));</div>
<div class="line"><a id="l01596" name="l01596"></a><span class="lineno"> 1596</span> }</div>
</div>
<div class="line"><a id="l01597" name="l01597"></a><span class="lineno"> 1597</span>};</div>
</div>
<div class="line"><a id="l01598" name="l01598"></a><span class="lineno"> 1598</span> </div>
<div class="line"><a id="l01599" name="l01599"></a><span class="lineno"><a class="line" href="namespaceripple_1_1test.html#aed15c3f51882f01240558c7bad356a1d"> 1599</a></span>BEAST_DEFINE_TESTSUITE(<a class="code hl_class" href="classripple_1_1LedgerReplay.html">LedgerReplay</a>, app, <a class="code hl_namespace" href="namespaceripple.html">ripple</a>);</div>
<div class="line"><a id="l01600" name="l01600"></a><span class="lineno"><a class="line" href="namespaceripple_1_1test.html#a10961f608295c949d6401b85146b5c19"> 1600</a></span>BEAST_DEFINE_TESTSUITE_PRIO(<a class="code hl_class" href="classripple_1_1LedgerReplayer.html">LedgerReplayer</a>, app, <a class="code hl_namespace" href="namespaceripple.html">ripple</a>, 1);</div>
<div class="line"><a id="l01601" name="l01601"></a><span class="lineno"><a class="line" href="namespaceripple_1_1test.html#a4f2935a06e15b34b090de27ca63e78cb"> 1601</a></span>BEAST_DEFINE_TESTSUITE(LedgerReplayerTimeout, app, <a class="code hl_namespace" href="namespaceripple.html">ripple</a>);</div>
<div class="line"><a id="l01602" name="l01602"></a><span class="lineno"><a class="line" href="namespaceripple_1_1test.html#afadda8433e506ed9c47339226e139068"> 1602</a></span>BEAST_DEFINE_TESTSUITE_MANUAL(LedgerReplayerLong, app, <a class="code hl_namespace" href="namespaceripple.html">ripple</a>);</div>
<div class="line"><a id="l01603" name="l01603"></a><span class="lineno"> 1603</span> </div>
<div class="line"><a id="l01604" name="l01604"></a><span class="lineno"> 1604</span>} <span class="comment">// namespace test</span></div>
<div class="line"><a id="l01605" name="l01605"></a><span class="lineno"> 1605</span>} <span class="comment">// namespace ripple</span></div>
<div class="ttc" id="aback_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string/back.html">std::string::back</a></div><div class="ttdeci">T back(T... args)</div></div>
<div class="ttc" id="abasic_string_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div></div>
<div class="ttc" id="achrono_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/chrono.html">chrono</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html"><div class="ttname"><a href="classJson_1_1Value.html">Json::Value</a></div><div class="ttdoc">Represents a JSON value.</div><div class="ttdef"><b>Definition</b> <a href="json__value_8h_source.html#l00130">json_value.h:131</a></div></div>
<div class="ttc" id="aclassbeast_1_1IP_1_1Endpoint_html"><div class="ttname"><a href="classbeast_1_1IP_1_1Endpoint.html">beast::IP::Endpoint</a></div><div class="ttdoc">A version-independent IP address and port combination.</div><div class="ttdef"><b>Definition</b> <a href="IPEndpoint_8h_source.html#l00018">IPEndpoint.h:19</a></div></div>
<div class="ttc" id="aclassbeast_1_1unit__test_1_1suite_html"><div class="ttname"><a href="classbeast_1_1unit__test_1_1suite.html">beast::unit_test::suite</a></div><div class="ttdoc">A testsuite class.</div><div class="ttdef"><b>Definition</b> <a href="suite_8h_source.html#l00051">suite.h:52</a></div></div>
<div class="ttc" id="aclassbeast_1_1unit__test_1_1suite_html_aaa1237d9b85c69d35fe86645cee094b5"><div class="ttname"><a href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">beast::unit_test::suite::testcase</a></div><div class="ttdeci">testcase_t testcase</div><div class="ttdoc">Memberspace for declaring test cases.</div><div class="ttdef"><b>Definition</b> <a href="suite_8h_source.html#l00152">suite.h:152</a></div></div>
<div class="ttc" id="aclassripple_1_1Application_html"><div class="ttname"><a href="classripple_1_1Application.html">ripple::Application</a></div><div class="ttdef"><b>Definition</b> <a href="Application_8h_source.html#l00094">Application.h:95</a></div></div>
<div class="ttc" id="aclassripple_1_1Application_html_a0c48dd5bcaef14e30e9ef5b96b0daa39"><div class="ttname"><a href="classripple_1_1Application.html#a0c48dd5bcaef14e30e9ef5b96b0daa39">ripple::Application::config</a></div><div class="ttdeci">virtual Config &amp; config()=0</div></div>
<div class="ttc" id="aclassripple_1_1Application_html_aa303fb1c72786fc008ef52079dee4fe3"><div class="ttname"><a href="classripple_1_1Application.html#aa303fb1c72786fc008ef52079dee4fe3">ripple::Application::getLedgerMaster</a></div><div class="ttdeci">virtual LedgerMaster &amp; getLedgerMaster()=0</div></div>
<div class="ttc" id="aclassripple_1_1Application_html_ad096c64f86e5573a450cf0338c79c086"><div class="ttname"><a href="classripple_1_1Application.html#ad096c64f86e5573a450cf0338c79c086">ripple::Application::logs</a></div><div class="ttdeci">virtual Logs &amp; logs()=0</div></div>
<div class="ttc" id="aclassripple_1_1Config_html"><div class="ttname"><a href="classripple_1_1Config.html">ripple::Config</a></div><div class="ttdef"><b>Definition</b> <a href="Config_8h_source.html#l00066">Config.h:67</a></div></div>
<div class="ttc" id="aclassripple_1_1Config_html_a7174b4395af72d89dc078e64d31c769c"><div class="ttname"><a href="classripple_1_1Config.html#a7174b4395af72d89dc078e64d31c769c">ripple::Config::LEDGER_REPLAY</a></div><div class="ttdeci">bool LEDGER_REPLAY</div><div class="ttdef"><b>Definition</b> <a href="Config_8h_source.html#l00204">Config.h:204</a></div></div>
<div class="ttc" id="aclassripple_1_1Config_html_acec216c5b37b6d4ac971e1ff62142963"><div class="ttname"><a href="classripple_1_1Config.html#acec216c5b37b6d4ac971e1ff62142963">ripple::Config::loadFromString</a></div><div class="ttdeci">void loadFromString(std::string const &amp;fileContents)</div><div class="ttdoc">Load the config from the contents of the string.</div><div class="ttdef"><b>Definition</b> <a href="Config_8cpp_source.html#l00460">Config.cpp:460</a></div></div>
<div class="ttc" id="aclassripple_1_1InboundLedger_html_a3e8d7f8b5fa089a184dcc9b00b6e0da7"><div class="ttname"><a href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7">ripple::InboundLedger::Reason</a></div><div class="ttdeci">Reason</div><div class="ttdef"><b>Definition</b> <a href="InboundLedger_8h_source.html#l00026">InboundLedger.h:26</a></div></div>
<div class="ttc" id="aclassripple_1_1InboundLedger_html_a3e8d7f8b5fa089a184dcc9b00b6e0da7a6ea28b46407abd2931a73c789ecdd944"><div class="ttname"><a href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7a6ea28b46407abd2931a73c789ecdd944">ripple::InboundLedger::Reason::CONSENSUS</a></div><div class="ttdeci">@ CONSENSUS</div></div>
<div class="ttc" id="aclassripple_1_1InboundLedger_html_a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b"><div class="ttname"><a href="classripple_1_1InboundLedger.html#a3e8d7f8b5fa089a184dcc9b00b6e0da7ac942dc2a9f958acddc67e11472d3ca0b">ripple::InboundLedger::Reason::GENERIC</a></div><div class="ttdeci">@ GENERIC</div></div>
<div class="ttc" id="aclassripple_1_1InboundLedgers_html"><div class="ttname"><a href="classripple_1_1InboundLedgers.html">ripple::InboundLedgers</a></div><div class="ttdoc">Manages the lifetime of inbound ledgers.</div><div class="ttdef"><b>Definition</b> <a href="InboundLedgers_8h_source.html#l00014">InboundLedgers.h:15</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerMaster_html"><div class="ttname"><a href="classripple_1_1LedgerMaster.html">ripple::LedgerMaster</a></div><div class="ttdef"><b>Definition</b> <a href="LedgerMaster_8h_source.html#l00032">LedgerMaster.h:33</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a837b38dc59d5779fe29018cd948aa407"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">ripple::LedgerMaster::getClosedLedger</a></div><div class="ttdeci">std::shared_ptr&lt; Ledger const &gt; getClosedLedger()</div><div class="ttdef"><b>Definition</b> <a href="LedgerMaster_8h_source.html#l00060">LedgerMaster.h:60</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_adbb16e4fb8acf01bd535684e45d20051"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#adbb16e4fb8acf01bd535684e45d20051">ripple::LedgerMaster::storeLedger</a></div><div class="ttdeci">bool storeLedger(std::shared_ptr&lt; Ledger const &gt; ledger)</div><div class="ttdef"><b>Definition</b> <a href="LedgerMaster_8cpp_source.html#l00423">LedgerMaster.cpp:423</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_ae766ee72c3e4825d6c59be59f64c73c4"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#ae766ee72c3e4825d6c59be59f64c73c4">ripple::LedgerMaster::getLedgerByHash</a></div><div class="ttdeci">std::shared_ptr&lt; Ledger const &gt; getLedgerByHash(uint256 const &amp;hash)</div><div class="ttdef"><b>Definition</b> <a href="LedgerMaster_8cpp_source.html#l01725">LedgerMaster.cpp:1725</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayMsgHandler_html"><div class="ttname"><a href="classripple_1_1LedgerReplayMsgHandler.html">ripple::LedgerReplayMsgHandler</a></div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayMsgHandler_8h_source.html#l00011">LedgerReplayMsgHandler.h:12</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayMsgHandler_html_a3cbd5e0d38896e7564a8d7ed5e1d8152"><div class="ttname"><a href="classripple_1_1LedgerReplayMsgHandler.html#a3cbd5e0d38896e7564a8d7ed5e1d8152">ripple::LedgerReplayMsgHandler::processReplayDeltaRequest</a></div><div class="ttdeci">protocol::TMReplayDeltaResponse processReplayDeltaRequest(std::shared_ptr&lt; protocol::TMReplayDeltaRequest &gt; const &amp;msg)</div><div class="ttdoc">Process TMReplayDeltaRequest and return TMReplayDeltaResponse.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayMsgHandler_8cpp_source.html#l00161">LedgerReplayMsgHandler.cpp:161</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayMsgHandler_html_a6a320c690d5b3c0c34b86659b9137d37"><div class="ttname"><a href="classripple_1_1LedgerReplayMsgHandler.html#a6a320c690d5b3c0c34b86659b9137d37">ripple::LedgerReplayMsgHandler::processProofPathResponse</a></div><div class="ttdeci">bool processProofPathResponse(std::shared_ptr&lt; protocol::TMProofPathResponse &gt; const &amp;msg)</div><div class="ttdoc">Process TMProofPathResponse.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayMsgHandler_8cpp_source.html#l00088">LedgerReplayMsgHandler.cpp:88</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayMsgHandler_html_ab6699613bbd3d92c9068738cf9b5de07"><div class="ttname"><a href="classripple_1_1LedgerReplayMsgHandler.html#ab6699613bbd3d92c9068738cf9b5de07">ripple::LedgerReplayMsgHandler::processReplayDeltaResponse</a></div><div class="ttdeci">bool processReplayDeltaResponse(std::shared_ptr&lt; protocol::TMReplayDeltaResponse &gt; const &amp;msg)</div><div class="ttdoc">Process TMReplayDeltaResponse.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayMsgHandler_8cpp_source.html#l00203">LedgerReplayMsgHandler.cpp:203</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayMsgHandler_html_ae8fdb0da6b5df8ecf07772ef86ce364b"><div class="ttname"><a href="classripple_1_1LedgerReplayMsgHandler.html#ae8fdb0da6b5df8ecf07772ef86ce364b">ripple::LedgerReplayMsgHandler::processProofPathRequest</a></div><div class="ttdeci">protocol::TMProofPathResponse processProofPathRequest(std::shared_ptr&lt; protocol::TMProofPathRequest &gt; const &amp;msg)</div><div class="ttdoc">Process TMProofPathRequest and return TMProofPathResponse.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayMsgHandler_8cpp_source.html#l00021">LedgerReplayMsgHandler.cpp:21</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayTask_1_1TaskParameter_html"><div class="ttname"><a href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html">ripple::LedgerReplayTask::TaskParameter</a></div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayTask_8h_source.html#l00026">LedgerReplayTask.h:27</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayTask_1_1TaskParameter_html_a2923e3a3d4fbc1254441247e9db86bd6"><div class="ttname"><a href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a2923e3a3d4fbc1254441247e9db86bd6">ripple::LedgerReplayTask::TaskParameter::finishHash_</a></div><div class="ttdeci">uint256 finishHash_</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayTask_8h_source.html#l00031">LedgerReplayTask.h:31</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayTask_1_1TaskParameter_html_a3557c08b8e2f259f7be5b673e66f33c1"><div class="ttname"><a href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3557c08b8e2f259f7be5b673e66f33c1">ripple::LedgerReplayTask::TaskParameter::update</a></div><div class="ttdeci">bool update(uint256 const &amp;hash, std::uint32_t seq, std::vector&lt; uint256 &gt; const &amp;sList)</div><div class="ttdoc">fill all the fields that was not filled during construction</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayTask_8cpp_source.html#l00022">LedgerReplayTask.cpp:22</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayTask_1_1TaskParameter_html_a3c2b56668a4a6a767dd2763a52553bd6"><div class="ttname"><a href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a3c2b56668a4a6a767dd2763a52553bd6">ripple::LedgerReplayTask::TaskParameter::canMergeInto</a></div><div class="ttdeci">bool canMergeInto(TaskParameter const &amp;existingTask) const</div><div class="ttdoc">check if this task can be merged into an existing task</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayTask_8cpp_source.html#l00043">LedgerReplayTask.cpp:43</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayTask_1_1TaskParameter_html_a7c016f2337d19332dd3bffd606b55931"><div class="ttname"><a href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a7c016f2337d19332dd3bffd606b55931">ripple::LedgerReplayTask::TaskParameter::reason_</a></div><div class="ttdeci">InboundLedger::Reason reason_</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayTask_8h_source.html#l00030">LedgerReplayTask.h:30</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayTask_1_1TaskParameter_html_a7c5fe6c97805e13d469ea5a0add7dbd8"><div class="ttname"><a href="classripple_1_1LedgerReplayTask_1_1TaskParameter.html#a7c5fe6c97805e13d469ea5a0add7dbd8">ripple::LedgerReplayTask::TaskParameter::totalLedgers_</a></div><div class="ttdeci">std::uint32_t totalLedgers_</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayTask_8h_source.html#l00032">LedgerReplayTask.h:32</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplay_html"><div class="ttname"><a href="classripple_1_1LedgerReplay.html">ripple::LedgerReplay</a></div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay_8h_source.html#l00014">LedgerReplay.h:15</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayer_html"><div class="ttname"><a href="classripple_1_1LedgerReplayer.html">ripple::LedgerReplayer</a></div><div class="ttdoc">Manages the lifetime of ledger replay tasks.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayer_8h_source.html#l00053">LedgerReplayer.h:54</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayer_html_a1b3a65f4362211b322e949f6b5f2b9f1"><div class="ttname"><a href="classripple_1_1LedgerReplayer.html#a1b3a65f4362211b322e949f6b5f2b9f1">ripple::LedgerReplayer::tasks_</a></div><div class="ttdeci">std::vector&lt; std::shared_ptr&lt; LedgerReplayTask &gt; &gt; tasks_</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayer_8h_source.html#l00132">LedgerReplayer.h:132</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayer_html_a8773a97fe87b7f61f2c90f1c89f982fc"><div class="ttname"><a href="classripple_1_1LedgerReplayer.html#a8773a97fe87b7f61f2c90f1c89f982fc">ripple::LedgerReplayer::skipLists_</a></div><div class="ttdeci">hash_map&lt; uint256, std::weak_ptr&lt; SkipListAcquire &gt; &gt; skipLists_</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayer_8h_source.html#l00134">LedgerReplayer.h:134</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayer_html_ac0bcab237e804acef639e21822204a3e"><div class="ttname"><a href="classripple_1_1LedgerReplayer.html#ac0bcab237e804acef639e21822204a3e">ripple::LedgerReplayer::mtx_</a></div><div class="ttdeci">std::mutex mtx_</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayer_8h_source.html#l00131">LedgerReplayer.h:131</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerReplayer_html_ad379e998b9ed9b7639191b52a04cee9f"><div class="ttname"><a href="classripple_1_1LedgerReplayer.html#ad379e998b9ed9b7639191b52a04cee9f">ripple::LedgerReplayer::deltas_</a></div><div class="ttdeci">hash_map&lt; uint256, std::weak_ptr&lt; LedgerDeltaAcquire &gt; &gt; deltas_</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplayer_8h_source.html#l00133">LedgerReplayer.h:133</a></div></div>
<div class="ttc" id="aclassripple_1_1Logs_html_a5dc4fb3cb9c2b3c42fd54bef18d06c83"><div class="ttname"><a href="classripple_1_1Logs.html#a5dc4fb3cb9c2b3c42fd54bef18d06c83">ripple::Logs::threshold</a></div><div class="ttdeci">beast::severities::Severity threshold() const</div><div class="ttdef"><b>Definition</b> <a href="Log_8cpp_source.html#l00147">Log.cpp:147</a></div></div>
<div class="ttc" id="aclassripple_1_1PeerSetBuilder_html"><div class="ttname"><a href="classripple_1_1PeerSetBuilder.html">ripple::PeerSetBuilder</a></div><div class="ttdef"><b>Definition</b> <a href="PeerSet_8h_source.html#l00056">PeerSet.h:57</a></div></div>
<div class="ttc" id="aclassripple_1_1PeerSet_html"><div class="ttname"><a href="classripple_1_1PeerSet.html">ripple::PeerSet</a></div><div class="ttdoc">Supports data retrieval by managing a set of peers.</div><div class="ttdef"><b>Definition</b> <a href="PeerSet_8h_source.html#l00020">PeerSet.h:21</a></div></div>
<div class="ttc" id="aclassripple_1_1Peer_html"><div class="ttname"><a href="classripple_1_1Peer.html">ripple::Peer</a></div><div class="ttdoc">Represents a peer connection in the overlay.</div><div class="ttdef"><b>Definition</b> <a href="xrpld_2overlay_2Peer_8h_source.html#l00024">xrpld/overlay/Peer.h:25</a></div></div>
<div class="ttc" id="aclassripple_1_1Peer_html_a56cc3cdd9c73921f23cb43a2bfa696a1"><div class="ttname"><a href="classripple_1_1Peer.html#a56cc3cdd9c73921f23cb43a2bfa696a1">ripple::Peer::id_t</a></div><div class="ttdeci">std::uint32_t id_t</div><div class="ttdoc">Uniquely identifies a peer.</div><div class="ttdef"><b>Definition</b> <a href="xrpld_2overlay_2Peer_8h_source.html#l00034">xrpld/overlay/Peer.h:34</a></div></div>
<div class="ttc" id="aclassripple_1_1PublicKey_html"><div class="ttname"><a href="classripple_1_1PublicKey.html">ripple::PublicKey</a></div><div class="ttdoc">A public key.</div><div class="ttdef"><b>Definition</b> <a href="PublicKey_8h_source.html#l00042">PublicKey.h:43</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Charge_html"><div class="ttname"><a href="classripple_1_1Resource_1_1Charge.html">ripple::Resource::Charge</a></div><div class="ttdoc">A consumption charge.</div><div class="ttdef"><b>Definition</b> <a href="Charge_8h_source.html#l00010">Charge.h:11</a></div></div>
<div class="ttc" id="aclassripple_1_1Slice_html"><div class="ttname"><a href="classripple_1_1Slice.html">ripple::Slice</a></div><div class="ttdoc">An immutable linear range of bytes.</div><div class="ttdef"><b>Definition</b> <a href="Slice_8h_source.html#l00026">Slice.h:27</a></div></div>
<div class="ttc" id="aclassripple_1_1base__uint_html"><div class="ttname"><a href="classripple_1_1base__uint.html">ripple::base_uint&lt; 256 &gt;</a></div></div>
<div class="ttc" id="aclassripple_1_1base__uint_html_a5342507fe2fb5ac55d578e7e98863f70"><div class="ttname"><a href="classripple_1_1base__uint.html#a5342507fe2fb5ac55d578e7e98863f70">ripple::base_uint::data</a></div><div class="ttdeci">pointer data()</div><div class="ttdef"><b>Definition</b> <a href="base__uint_8h_source.html#l00106">base_uint.h:106</a></div></div>
<div class="ttc" id="aclassripple_1_1base__uint_html_a64d93405f8d7ba89f0a406b32015758f"><div class="ttname"><a href="classripple_1_1base__uint.html#a64d93405f8d7ba89f0a406b32015758f">ripple::base_uint::size</a></div><div class="ttdeci">static constexpr std::size_t size()</div><div class="ttdef"><b>Definition</b> <a href="base__uint_8h_source.html#l00507">base_uint.h:507</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html">ripple::test::LedgerReplayClient</a></div><div class="ttdoc">Ledger replay client side.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00568">LedgerReplay_test.cpp:569</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a0c45b977245b8718a74af7c8e8ac64e1"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a0c45b977245b8718a74af7c8e8ac64e1">ripple::test::LedgerReplayClient::waitForLedgers</a></div><div class="ttdeci">bool waitForLedgers(uint256 const &amp;finishLedgerHash, int totalReplay)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00619">LedgerReplay_test.cpp:619</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a2da8f3d27e2da922434b87af9ad76abc"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a2da8f3d27e2da922434b87af9ad76abc">ripple::test::LedgerReplayClient::asExpected</a></div><div class="ttdeci">bool asExpected(uint256 const &amp;hash, int totalReplay, TaskStatus taskExpect, TaskStatus skiplistExpect, std::vector&lt; TaskStatus &gt; const &amp;deltaExpects)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00762">LedgerReplay_test.cpp:762</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a2f9a7365f9ee783ad89399974c1dd47e"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a2f9a7365f9ee783ad89399974c1dd47e">ripple::test::LedgerReplayClient::waitAndCheckStatus</a></div><div class="ttdeci">bool waitAndCheckStatus(uint256 const &amp;hash, int totalReplay, TaskStatus taskExpect, TaskStatus skiplistExpect, std::vector&lt; TaskStatus &gt; const &amp;deltaExpects)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00800">LedgerReplay_test.cpp:800</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a2fd55a364cc77413544b6901d17c8de0"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a2fd55a364cc77413544b6901d17c8de0">ripple::test::LedgerReplayClient::inboundLedgers</a></div><div class="ttdeci">MagicInboundLedgers inboundLedgers</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00817">LedgerReplay_test.cpp:817</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a3b807716f400ad71b763fde18e0e15d0"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a3b807716f400ad71b763fde18e0e15d0">ripple::test::LedgerReplayClient::clientMsgHandler</a></div><div class="ttdeci">LedgerReplayMsgHandler clientMsgHandler</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00819">LedgerReplay_test.cpp:819</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a3cfdfe289ee6550afa6208e9d7b156df"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a3cfdfe289ee6550afa6208e9d7b156df">ripple::test::LedgerReplayClient::ledgerMaster</a></div><div class="ttdeci">LedgerMaster &amp; ledgerMaster</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00816">LedgerReplay_test.cpp:816</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a43df7b002c221ea7ffb8e3defc7b3a67"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a43df7b002c221ea7ffb8e3defc7b3a67">ripple::test::LedgerReplayClient::findTask</a></div><div class="ttdeci">std::shared_ptr&lt; LedgerReplayTask &gt; findTask(uint256 const &amp;hash, int totalReplay)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00666">LedgerReplay_test.cpp:666</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a5473dd2f3e5ec26fef3706e39b19fd59"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a5473dd2f3e5ec26fef3706e39b19fd59">ripple::test::LedgerReplayClient::serverMsgHandler</a></div><div class="ttdeci">LedgerReplayMsgHandler serverMsgHandler</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00818">LedgerReplay_test.cpp:818</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a56298334026de896c3768c2560270c0b"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a56298334026de896c3768c2560270c0b">ripple::test::LedgerReplayClient::countsAsExpected</a></div><div class="ttdeci">bool countsAsExpected(std::size_t tasks, std::size_t skipLists, std::size_t deltas)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00694">LedgerReplay_test.cpp:694</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a566db0f6d52bb7951fcb5919b77feffb"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a566db0f6d52bb7951fcb5919b77feffb">ripple::test::LedgerReplayClient::countDeltas</a></div><div class="ttdeci">std::size_t countDeltas()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00680">LedgerReplay_test.cpp:680</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a59c4fbdbb3b8da098a1d7e383a0eb77c"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a59c4fbdbb3b8da098a1d7e383a0eb77c">ripple::test::LedgerReplayClient::app</a></div><div class="ttdeci">Application &amp; app</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00815">LedgerReplay_test.cpp:815</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a61e8d17eca1027a5143bdf419f64a43f"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a61e8d17eca1027a5143bdf419f64a43f">ripple::test::LedgerReplayClient::asExpected</a></div><div class="ttdeci">bool asExpected(std::shared_ptr&lt; LedgerReplayTask &gt; const &amp;task, TaskStatus taskExpect, TaskStatus skiplistExpect, std::vector&lt; TaskStatus &gt; const &amp;deltaExpects)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00737">LedgerReplay_test.cpp:737</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a6ba1ce43c51d3d9d46571d362d3c92c4"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a6ba1ce43c51d3d9d46571d362d3c92c4">ripple::test::LedgerReplayClient::getTasks</a></div><div class="ttdeci">std::vector&lt; std::shared_ptr&lt; LedgerReplayTask &gt; &gt; getTasks()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00659">LedgerReplay_test.cpp:659</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a6f406956a244c8d6682ec2a3d1b68364"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a6f406956a244c8d6682ec2a3d1b68364">ripple::test::LedgerReplayClient::findLedgerDeltaAcquire</a></div><div class="ttdeci">std::shared_ptr&lt; LedgerDeltaAcquire &gt; findLedgerDeltaAcquire(uint256 const &amp;hash)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00716">LedgerReplay_test.cpp:716</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a70e43267263d0831d09b12ff57b0de92"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a70e43267263d0831d09b12ff57b0de92">ripple::test::LedgerReplayClient::waitForDone</a></div><div class="ttdeci">bool waitForDone()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00633">LedgerReplay_test.cpp:633</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a716f0341fb3ff3c701bcf81ee085605c"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a716f0341fb3ff3c701bcf81ee085605c">ripple::test::LedgerReplayClient::haveLedgers</a></div><div class="ttdeci">bool haveLedgers(uint256 const &amp;finishLedgerHash, int totalReplay)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00604">LedgerReplay_test.cpp:604</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_a9dac1636623a9feb03cb6a631c411f3f"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#a9dac1636623a9feb03cb6a631c411f3f">ripple::test::LedgerReplayClient::countSkipLists</a></div><div class="ttdeci">std::size_t countSkipLists()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00687">LedgerReplay_test.cpp:687</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_aadb938dc9624da72d3cdabc7cf8c998e"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#aadb938dc9624da72d3cdabc7cf8c998e">ripple::test::LedgerReplayClient::LedgerReplayClient</a></div><div class="ttdeci">LedgerReplayClient(beast::unit_test::suite &amp;suite, LedgerServer &amp;server, PeerSetBehavior behavior=PeerSetBehavior::Good, InboundLedgersBehavior inboundBhvr=InboundLedgersBehavior::Good, PeerFeature peerFeature=PeerFeature::LedgerReplayEnabled)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00571">LedgerReplay_test.cpp:571</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_abfc051eb861037f706dc4a27e217a65c"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#abfc051eb861037f706dc4a27e217a65c">ripple::test::LedgerReplayClient::checkStatus</a></div><div class="ttdeci">bool checkStatus(uint256 const &amp;hash, int totalReplay, TaskStatus taskExpect, TaskStatus skiplistExpect, std::vector&lt; TaskStatus &gt; const &amp;deltaExpects)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00781">LedgerReplay_test.cpp:781</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_ac83f18125388adccf84ad0285cd30422"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#ac83f18125388adccf84ad0285cd30422">ripple::test::LedgerReplayClient::replayer</a></div><div class="ttdeci">LedgerReplayer replayer</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00820">LedgerReplay_test.cpp:820</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_acc4cd2323c54c10a2cfc61b505b4efac"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#acc4cd2323c54c10a2cfc61b505b4efac">ripple::test::LedgerReplayClient::taskStatus</a></div><div class="ttdeci">TaskStatus taskStatus(std::shared_ptr&lt; T &gt; const &amp;t)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00727">LedgerReplay_test.cpp:727</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_ae05278d8cf1ae82458e19c0c483b6f49"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#ae05278d8cf1ae82458e19c0c483b6f49">ripple::test::LedgerReplayClient::addLedger</a></div><div class="ttdeci">void addLedger(std::shared_ptr&lt; Ledger const &gt; const &amp;l)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00598">LedgerReplay_test.cpp:598</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_af01fbb67f5ecce91ff3c064903fea47c"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#af01fbb67f5ecce91ff3c064903fea47c">ripple::test::LedgerReplayClient::findSkipListAcquire</a></div><div class="ttdeci">std::shared_ptr&lt; SkipListAcquire &gt; findSkipListAcquire(uint256 const &amp;hash)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00706">LedgerReplay_test.cpp:706</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1LedgerReplayClient_html_af329e3e7df56437bbac7a893f599b5be"><div class="ttname"><a href="classripple_1_1test_1_1LedgerReplayClient.html#af329e3e7df56437bbac7a893f599b5be">ripple::test::LedgerReplayClient::env</a></div><div class="ttdeci">jtx::Env env</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00814">LedgerReplay_test.cpp:814</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html">ripple::test::MagicInboundLedgers</a></div><div class="ttdoc">Simulate a network InboundLedgers.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00065">LedgerReplay_test.cpp:66</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_a08b979d6bf0f113b252cb1573214842c"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#a08b979d6bf0f113b252cb1573214842c">ripple::test::MagicInboundLedgers::acquireAsync</a></div><div class="ttdeci">virtual void acquireAsync(uint256 const &amp;hash, std::uint32_t seq, InboundLedger::Reason reason) override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00093">LedgerReplay_test.cpp:93</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_a13db828e982bb41618dea15a8b01e003"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#a13db828e982bb41618dea15a8b01e003">ripple::test::MagicInboundLedgers::onLedgerFetched</a></div><div class="ttdeci">virtual void onLedgerFetched() override</div><div class="ttdoc">Called when a complete ledger is obtained.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00149">LedgerReplay_test.cpp:149</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_a2832e03e8024e529d172241404b707b6"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#a2832e03e8024e529d172241404b707b6">ripple::test::MagicInboundLedgers::ledgerSink</a></div><div class="ttdeci">LedgerMaster &amp; ledgerSink</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00174">LedgerReplay_test.cpp:174</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_a2a0e7fb5a536af0345a8907127699add"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#a2a0e7fb5a536af0345a8907127699add">ripple::test::MagicInboundLedgers::clearFailures</a></div><div class="ttdeci">virtual void clearFailures() override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00132">LedgerReplay_test.cpp:132</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_a32ad5902ac5e1149893eb38b3cf1ab2e"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#a32ad5902ac5e1149893eb38b3cf1ab2e">ripple::test::MagicInboundLedgers::gotLedgerData</a></div><div class="ttdeci">virtual bool gotLedgerData(LedgerHash const &amp;ledgerHash, std::shared_ptr&lt; Peer &gt;, std::shared_ptr&lt; protocol::TMLedgerData &gt;) override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00107">LedgerReplay_test.cpp:107</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_a3b9573297de275d86c441ac4cc5b2d49"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#a3b9573297de275d86c441ac4cc5b2d49">ripple::test::MagicInboundLedgers::sweep</a></div><div class="ttdeci">virtual void sweep() override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00158">LedgerReplay_test.cpp:158</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_a4d45327225ec164ac3a96d9abb259e33"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#a4d45327225ec164ac3a96d9abb259e33">ripple::test::MagicInboundLedgers::find</a></div><div class="ttdeci">virtual std::shared_ptr&lt; InboundLedger &gt; find(LedgerHash const &amp;hash) override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00101">LedgerReplay_test.cpp:101</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_a554adb6009c94720ea6a0b4f2c3b09ba"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#a554adb6009c94720ea6a0b4f2c3b09ba">ripple::test::MagicInboundLedgers::~MagicInboundLedgers</a></div><div class="ttdeci">virtual ~MagicInboundLedgers()=default</div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_a5cc0f2ed06a80fc9d04d346edf0caa4c"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#a5cc0f2ed06a80fc9d04d346edf0caa4c">ripple::test::MagicInboundLedgers::getInfo</a></div><div class="ttdeci">virtual Json::Value getInfo() override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00137">LedgerReplay_test.cpp:137</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_a624ebbf034f8c0d13e795ee4b22c33a5"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#a624ebbf034f8c0d13e795ee4b22c33a5">ripple::test::MagicInboundLedgers::stop</a></div><div class="ttdeci">virtual void stop() override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00163">LedgerReplay_test.cpp:163</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_a76b767a94cdcc71676302a7958daf57c"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#a76b767a94cdcc71676302a7958daf57c">ripple::test::MagicInboundLedgers::cacheSize</a></div><div class="ttdeci">virtual size_t cacheSize() override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00168">LedgerReplay_test.cpp:168</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_a8b5dec1e1d8d856f4406c59b63c6174c"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#a8b5dec1e1d8d856f4406c59b63c6174c">ripple::test::MagicInboundLedgers::logFailure</a></div><div class="ttdeci">virtual void logFailure(uint256 const &amp;h, std::uint32_t seq) override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00121">LedgerReplay_test.cpp:121</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_a9701b8cb01c56429bdd9ff13031d445b"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#a9701b8cb01c56429bdd9ff13031d445b">ripple::test::MagicInboundLedgers::MagicInboundLedgers</a></div><div class="ttdeci">MagicInboundLedgers(LedgerMaster &amp;ledgerSource, LedgerMaster &amp;ledgerSink, InboundLedgersBehavior bhvr)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00068">LedgerReplay_test.cpp:68</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_aa284042ad6d4bea239c65803884f2b54"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#aa284042ad6d4bea239c65803884f2b54">ripple::test::MagicInboundLedgers::isFailure</a></div><div class="ttdeci">virtual bool isFailure(uint256 const &amp;h) override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00126">LedgerReplay_test.cpp:126</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_ab40a62e766af5c40dbc03f571f22083c"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#ab40a62e766af5c40dbc03f571f22083c">ripple::test::MagicInboundLedgers::gotStaleData</a></div><div class="ttdeci">virtual void gotStaleData(std::shared_ptr&lt; protocol::TMLedgerData &gt; packet) override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00116">LedgerReplay_test.cpp:116</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_accaf15f353482bd8bf530e814d4323f3"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#accaf15f353482bd8bf530e814d4323f3">ripple::test::MagicInboundLedgers::ledgerSource</a></div><div class="ttdeci">LedgerMaster &amp; ledgerSource</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00173">LedgerReplay_test.cpp:173</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_ad121c705b23993a932db17e2e4a21ae1"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#ad121c705b23993a932db17e2e4a21ae1">ripple::test::MagicInboundLedgers::fetchRate</a></div><div class="ttdeci">virtual std::size_t fetchRate() override</div><div class="ttdoc">Returns the rate of historical ledger fetches per minute.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00143">LedgerReplay_test.cpp:143</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_ad721f621115df060fa2f9882dd8891d7"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#ad721f621115df060fa2f9882dd8891d7">ripple::test::MagicInboundLedgers::gotFetchPack</a></div><div class="ttdeci">virtual void gotFetchPack() override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00154">LedgerReplay_test.cpp:154</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_aea192ed7c43895d59e801625db5e7521"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#aea192ed7c43895d59e801625db5e7521">ripple::test::MagicInboundLedgers::acquire</a></div><div class="ttdeci">virtual std::shared_ptr&lt; Ledger const &gt; acquire(uint256 const &amp;hash, std::uint32_t seq, InboundLedger::Reason) override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00078">LedgerReplay_test.cpp:78</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1MagicInboundLedgers_html_afb8d9471a9ae0de7b80649dc1009941a"><div class="ttname"><a href="classripple_1_1test_1_1MagicInboundLedgers.html#afb8d9471a9ae0de7b80649dc1009941a">ripple::test::MagicInboundLedgers::bhvr</a></div><div class="ttdeci">InboundLedgersBehavior bhvr</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00175">LedgerReplay_test.cpp:175</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeerSetBuilder_html"><div class="ttname"><a href="classripple_1_1test_1_1TestPeerSetBuilder.html">ripple::test::TestPeerSetBuilder</a></div><div class="ttdoc">Build the TestPeerSet.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00421">LedgerReplay_test.cpp:422</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeerSetBuilder_html_a00e5264bd04a91e5cf6af1c151568e3f"><div class="ttname"><a href="classripple_1_1test_1_1TestPeerSetBuilder.html#a00e5264bd04a91e5cf6af1c151568e3f">ripple::test::TestPeerSetBuilder::enableLedgerReplay</a></div><div class="ttdeci">bool enableLedgerReplay</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00447">LedgerReplay_test.cpp:447</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeerSetBuilder_html_a28a513b938b38d0de9f1ca2d89a7a028"><div class="ttname"><a href="classripple_1_1test_1_1TestPeerSetBuilder.html#a28a513b938b38d0de9f1ca2d89a7a028">ripple::test::TestPeerSetBuilder::behavior</a></div><div class="ttdeci">PeerSetBehavior behavior</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00446">LedgerReplay_test.cpp:446</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeerSetBuilder_html_a6686c411e2ed6370b44ccaf511cec3e9"><div class="ttname"><a href="classripple_1_1test_1_1TestPeerSetBuilder.html#a6686c411e2ed6370b44ccaf511cec3e9">ripple::test::TestPeerSetBuilder::local</a></div><div class="ttdeci">LedgerReplayMsgHandler &amp; local</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00444">LedgerReplay_test.cpp:444</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeerSetBuilder_html_aa79f4c1971bcc3071933ceafe97c72ba"><div class="ttname"><a href="classripple_1_1test_1_1TestPeerSetBuilder.html#aa79f4c1971bcc3071933ceafe97c72ba">ripple::test::TestPeerSetBuilder::build</a></div><div class="ttdeci">std::unique_ptr&lt; PeerSet &gt; build() override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00437">LedgerReplay_test.cpp:437</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeerSetBuilder_html_ac4915c4e114f34356c1dbbef1faef49c"><div class="ttname"><a href="classripple_1_1test_1_1TestPeerSetBuilder.html#ac4915c4e114f34356c1dbbef1faef49c">ripple::test::TestPeerSetBuilder::remote</a></div><div class="ttdeci">LedgerReplayMsgHandler &amp; remote</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00445">LedgerReplay_test.cpp:445</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeerSetBuilder_html_acb43c49d60b31a842a9d799aac5346bf"><div class="ttname"><a href="classripple_1_1test_1_1TestPeerSetBuilder.html#acb43c49d60b31a842a9d799aac5346bf">ripple::test::TestPeerSetBuilder::TestPeerSetBuilder</a></div><div class="ttdeci">TestPeerSetBuilder(LedgerReplayMsgHandler &amp;me, LedgerReplayMsgHandler &amp;other, PeerSetBehavior bhvr, PeerFeature peerFeature)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00424">LedgerReplay_test.cpp:424</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html">ripple::test::TestPeer</a></div><div class="ttdoc">Simulate a network peer.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00188">LedgerReplay_test.cpp:189</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a021a8599de198786f1dc71901cdf1e1f"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a021a8599de198786f1dc71901cdf1e1f">ripple::test::TestPeer::hasLedger</a></div><div class="ttdeci">bool hasLedger(uint256 const &amp;hash, std::uint32_t seq) const override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00264">LedgerReplay_test.cpp:264</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a07d59279bad263057859ce449fd1616b"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a07d59279bad263057859ce449fd1616b">ripple::test::TestPeer::setPublisherListSequence</a></div><div class="ttdeci">void setPublisherListSequence(PublicKey const &amp;, std::size_t const) override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00254">LedgerReplay_test.cpp:254</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a088d1200aef40cbe192d1af3521ecbf8"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a088d1200aef40cbe192d1af3521ecbf8">ripple::test::TestPeer::cluster</a></div><div class="ttdeci">bool cluster() const override</div><div class="ttdoc">Returns true if this connection is a member of the cluster.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00217">LedgerReplay_test.cpp:217</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a099b75d566f77ae2d292d7c3830b061a"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a099b75d566f77ae2d292d7c3830b061a">ripple::test::TestPeer::nodePublicKey_</a></div><div class="ttdeci">PublicKey nodePublicKey_</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00317">LedgerReplay_test.cpp:317</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a182e6ba88b051ea652e2182fbc39a606"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a182e6ba88b051ea652e2182fbc39a606">ripple::test::TestPeer::publisherListSequence</a></div><div class="ttdeci">std::optional&lt; std::size_t &gt; publisherListSequence(PublicKey const &amp;) const override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00249">LedgerReplay_test.cpp:249</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a2bdfda592c88f24d3d6c26433d092b0c"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a2bdfda592c88f24d3d6c26433d092b0c">ripple::test::TestPeer::removeTxQueue</a></div><div class="ttdeci">void removeTxQueue(uint256 const &amp;) override</div><div class="ttdoc">Remove hash from the transactions' hashes queue.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00300">LedgerReplay_test.cpp:300</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a31b518b004fd1fa0d597036180f21a5b"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a31b518b004fd1fa0d597036180f21a5b">ripple::test::TestPeer::getRemoteAddress</a></div><div class="ttdeci">beast::IP::Endpoint getRemoteAddress() const override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00202">LedgerReplay_test.cpp:202</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a3b4e4157bd2e5e17221a01e06d520070"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a3b4e4157bd2e5e17221a01e06d520070">ripple::test::TestPeer::TestPeer</a></div><div class="ttdeci">TestPeer(bool enableLedgerReplay)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00191">LedgerReplay_test.cpp:191</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a4314928c05d1c7643c057d3cd664b6ab"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a4314928c05d1c7643c057d3cd664b6ab">ripple::test::TestPeer::getScore</a></div><div class="ttdeci">int getScore(bool) const override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00227">LedgerReplay_test.cpp:227</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a44ec15c3a47813d8b5af4d4233c3d3c6"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a44ec15c3a47813d8b5af4d4233c3d3c6">ripple::test::TestPeer::getNodePublic</a></div><div class="ttdeci">PublicKey const &amp; getNodePublic() const override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00232">LedgerReplay_test.cpp:232</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a479a3a2fe0d73accb0cbeecad0b47f57"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a479a3a2fe0d73accb0cbeecad0b47f57">ripple::test::TestPeer::charge</a></div><div class="ttdeci">void charge(Resource::Charge const &amp;fee, std::string const &amp;context={}) override</div><div class="ttdoc">Adjust this peer's load balance based on the type of load imposed.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00207">LedgerReplay_test.cpp:207</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a48ba2e4da830701d38b324e9c43c4176"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a48ba2e4da830701d38b324e9c43c4176">ripple::test::TestPeer::json</a></div><div class="ttdeci">Json::Value json() override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00237">LedgerReplay_test.cpp:237</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a49a0c65115d326e7fbd38be43a800f8d"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a49a0c65115d326e7fbd38be43a800f8d">ripple::test::TestPeer::send</a></div><div class="ttdeci">void send(std::shared_ptr&lt; Message &gt; const &amp;m) override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00198">LedgerReplay_test.cpp:198</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a62da3a1578b6172c24cc1b28bd1aab0b"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a62da3a1578b6172c24cc1b28bd1aab0b">ripple::test::TestPeer::fingerprint_</a></div><div class="ttdeci">std::string fingerprint_</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00315">LedgerReplay_test.cpp:315</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a638f128c9c0f62f23d22bd41e2f97eaa"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a638f128c9c0f62f23d22bd41e2f97eaa">ripple::test::TestPeer::ledgerRange</a></div><div class="ttdeci">void ledgerRange(std::uint32_t &amp;minSeq, std::uint32_t &amp;maxSeq) const override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00269">LedgerReplay_test.cpp:269</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a69752edc130b66cf2ec1fb93043882ee"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a69752edc130b66cf2ec1fb93043882ee">ripple::test::TestPeer::ledgerReplayEnabled_</a></div><div class="ttdeci">bool ledgerReplayEnabled_</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00316">LedgerReplay_test.cpp:316</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a6ce12ac767a2eead01aad09431ebd0d1"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a6ce12ac767a2eead01aad09431ebd0d1">ripple::test::TestPeer::addTxQueue</a></div><div class="ttdeci">void addTxQueue(uint256 const &amp;) override</div><div class="ttdoc">Aggregate transaction's hash.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00296">LedgerReplay_test.cpp:296</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a71506ecf36760b766e81a453df84e91a"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a71506ecf36760b766e81a453df84e91a">ripple::test::TestPeer::id</a></div><div class="ttdeci">id_t id() const override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00212">LedgerReplay_test.cpp:212</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a8332ea46a4f78f11378b128d729e72cd"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a8332ea46a4f78f11378b128d729e72cd">ripple::test::TestPeer::cycleStatus</a></div><div class="ttdeci">void cycleStatus() override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00278">LedgerReplay_test.cpp:278</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a86cd77871fad7677f30757f903357ae2"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a86cd77871fad7677f30757f903357ae2">ripple::test::TestPeer::txReduceRelayEnabled</a></div><div class="ttdeci">bool txReduceRelayEnabled() const override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00304">LedgerReplay_test.cpp:304</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_a9c0bccd0f4de860c3bffc56679d40906"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#a9c0bccd0f4de860c3bffc56679d40906">ripple::test::TestPeer::isHighLatency</a></div><div class="ttdeci">bool isHighLatency() const override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00222">LedgerReplay_test.cpp:222</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_aa6226f36aadeba23415ab0acc8be6670"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#aa6226f36aadeba23415ab0acc8be6670">ripple::test::TestPeer::hasTxSet</a></div><div class="ttdeci">bool hasTxSet(uint256 const &amp;hash) const override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00273">LedgerReplay_test.cpp:273</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_aabda65d6b4e488cb3ee441b86649af96"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#aabda65d6b4e488cb3ee441b86649af96">ripple::test::TestPeer::fingerprint</a></div><div class="ttdeci">std::string const &amp; fingerprint() const override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00310">LedgerReplay_test.cpp:310</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_aabfefb22e3bea0903b66ce925099959c"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#aabfefb22e3bea0903b66ce925099959c">ripple::test::TestPeer::getClosedLedgerHash</a></div><div class="ttdeci">uint256 const &amp; getClosedLedgerHash() const override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00258">LedgerReplay_test.cpp:258</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_ae6b951a8134eac2f989056efb31bb7e2"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#ae6b951a8134eac2f989056efb31bb7e2">ripple::test::TestPeer::compressionEnabled</a></div><div class="ttdeci">bool compressionEnabled() const override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00287">LedgerReplay_test.cpp:287</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_aeab3b4b097662cd5f9ec0bfc2041bb10"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#aeab3b4b097662cd5f9ec0bfc2041bb10">ripple::test::TestPeer::hasRange</a></div><div class="ttdeci">bool hasRange(std::uint32_t uMin, std::uint32_t uMax) override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00282">LedgerReplay_test.cpp:282</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_af7b4733583f33b9d1df1a6dca0348e94"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#af7b4733583f33b9d1df1a6dca0348e94">ripple::test::TestPeer::supportsFeature</a></div><div class="ttdeci">bool supportsFeature(ProtocolFeature f) const override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00242">LedgerReplay_test.cpp:242</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TestPeer_html_af9564cc1d134445c828262c31371d115"><div class="ttname"><a href="classripple_1_1test_1_1TestPeer.html#af9564cc1d134445c828262c31371d115">ripple::test::TestPeer::sendTxQueue</a></div><div class="ttdeci">void sendTxQueue() override</div><div class="ttdoc">Send aggregated transactions' hashes.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00292">LedgerReplay_test.cpp:292</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Account_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Account.html">ripple::test::jtx::Account</a></div><div class="ttdoc">Immutable cryptographic account descriptor.</div><div class="ttdef"><b>Definition</b> <a href="Account_8h_source.html#l00019">Account.h:20</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html">ripple::test::jtx::Env</a></div><div class="ttdoc">A transaction testing environment.</div><div class="ttdef"><b>Definition</b> <a href="Env_8h_source.html#l00101">Env.h:102</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_a69095691c9bcfab1f3d69c645f2dbe33"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#a69095691c9bcfab1f3d69c645f2dbe33">ripple::test::jtx::Env::close</a></div><div class="ttdeci">bool close(NetClock::time_point closeTime, std::optional&lt; std::chrono::milliseconds &gt; consensusDelay=std::nullopt)</div><div class="ttdoc">Close and advance the ledger.</div><div class="ttdef"><b>Definition</b> <a href="Env_8cpp_source.html#l00103">Env.cpp:103</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_acd48f8ab02c37b1a30cedf4dec7cc96c"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#acd48f8ab02c37b1a30cedf4dec7cc96c">ripple::test::jtx::Env::app</a></div><div class="ttdeci">Application &amp; app()</div><div class="ttdef"><b>Definition</b> <a href="Env_8h_source.html#l00242">Env.h:242</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_acfdfa1e283de8fb2dad0216cd1711307"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#acfdfa1e283de8fb2dad0216cd1711307">ripple::test::jtx::Env::journal</a></div><div class="ttdeci">beast::Journal const journal</div><div class="ttdef"><b>Definition</b> <a href="Env_8h_source.html#l00143">Env.h:143</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_ad829b507ce6a9044610448cbbc35bd97"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#ad829b507ce6a9044610448cbbc35bd97">ripple::test::jtx::Env::apply</a></div><div class="ttdeci">Env &amp; apply(JsonValue &amp;&amp;jv, FN const &amp;... fN)</div><div class="ttdoc">Apply funclets and submit.</div><div class="ttdef"><b>Definition</b> <a href="Env_8h_source.html#l00563">Env.h:563</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_ae2349266cb09d1f1c3de06606ebdf9e2"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#ae2349266cb09d1f1c3de06606ebdf9e2">ripple::test::jtx::Env::fund</a></div><div class="ttdeci">void fund(bool setDefaultRipple, STAmount const &amp;amount, Account const &amp;account)</div><div class="ttdef"><b>Definition</b> <a href="Env_8cpp_source.html#l00271">Env.cpp:271</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1fee_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1fee.html">ripple::test::jtx::fee</a></div><div class="ttdoc">Set the fee on a JTx.</div><div class="ttdef"><b>Definition</b> <a href="fee_8h_source.html#l00017">fee.h:18</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1sig_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1sig.html">ripple::test::jtx::sig</a></div><div class="ttdoc">Set the regular signature on a JTx.</div><div class="ttdef"><b>Definition</b> <a href="sig_8h_source.html#l00015">sig.h:16</a></div></div>
<div class="ttc" id="acount_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_set/count.html">std::unordered_set::count</a></div><div class="ttdeci">T count(T... args)</div></div>
<div class="ttc" id="aduration_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::milliseconds</a></div></div>
<div class="ttc" id="aemplace_back_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/emplace_back.html">std::vector::emplace_back</a></div><div class="ttdeci">T emplace_back(T... args)</div></div>
<div class="ttc" id="afind_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/find.html">std::find_if</a></div><div class="ttdeci">T find_if(T... args)</div></div>
<div class="ttc" id="afunction_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a></div></div>
<div class="ttc" id="ainsert_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_set/insert.html">std::unordered_set::insert</a></div><div class="ttdeci">T insert(T... args)</div></div>
<div class="ttc" id="ainteger_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a></div></div>
<div class="ttc" id="ais_same_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/is_same.html">std::is_same_v</a></div><div class="ttdeci">T is_same_v</div></div>
<div class="ttc" id="amap_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/map.html">std::map</a></div></div>
<div class="ttc" id="anamespacebeast_1_1IP_html_adbe597760cb20a7aa3f2ff92f7bed2cc"><div class="ttname"><a href="namespacebeast_1_1IP.html#adbe597760cb20a7aa3f2ff92f7bed2cc">beast::IP::Address</a></div><div class="ttdeci">boost::asio::ip::address Address</div><div class="ttdef"><b>Definition</b> <a href="IPAddress_8h_source.html#l00020">IPAddress.h:20</a></div></div>
<div class="ttc" id="anamespacebeast_1_1severities_html"><div class="ttname"><a href="namespacebeast_1_1severities.html">beast::severities</a></div><div class="ttdoc">A namespace for easy access to logging severity values.</div><div class="ttdef"><b>Definition</b> <a href="Journal_8h_source.html#l00011">Journal.h:11</a></div></div>
<div class="ttc" id="anamespacebeast_1_1severities_html_a069a8a312b9123b77f6aa31733ca73be"><div class="ttname"><a href="namespacebeast_1_1severities.html#a069a8a312b9123b77f6aa31733ca73be">beast::severities::Severity</a></div><div class="ttdeci">Severity</div><div class="ttdoc">Severity level / threshold of a Journal message.</div><div class="ttdef"><b>Definition</b> <a href="Journal_8h_source.html#l00013">Journal.h:13</a></div></div>
<div class="ttc" id="anamespacebeast_1_1severities_html_a069a8a312b9123b77f6aa31733ca73beab6ef7006e42e82dcc97478e4e362f883"><div class="ttname"><a href="namespacebeast_1_1severities.html#a069a8a312b9123b77f6aa31733ca73beab6ef7006e42e82dcc97478e4e362f883">beast::severities::kWarning</a></div><div class="ttdeci">@ kWarning</div><div class="ttdef"><b>Definition</b> <a href="Journal_8h_source.html#l00019">Journal.h:19</a></div></div>
<div class="ttc" id="anamespacebeast_1_1severities_html_a069a8a312b9123b77f6aa31733ca73beae13a45640877c138fc59c94443ece6f0"><div class="ttname"><a href="namespacebeast_1_1severities.html#a069a8a312b9123b77f6aa31733ca73beae13a45640877c138fc59c94443ece6f0">beast::severities::kDisabled</a></div><div class="ttdeci">@ kDisabled</div><div class="ttdef"><b>Definition</b> <a href="Journal_8h_source.html#l00023">Journal.h:23</a></div></div>
<div class="ttc" id="anamespacebeast_html"><div class="ttname"><a href="namespacebeast.html">beast</a></div><div class="ttdef"><b>Definition</b> <a href="base__uint_8h_source.html#l00653">base_uint.h:653</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_acda2d89a44551845c5be38291e5c9e8b"><div class="ttname"><a href="namespaceripple_1_1keylet.html#acda2d89a44551845c5be38291e5c9e8b">ripple::keylet::skip</a></div><div class="ttdeci">Keylet const &amp; skip() noexcept</div><div class="ttdoc">The index of the &quot;short&quot; skip list.</div><div class="ttdef"><b>Definition</b> <a href="Indexes_8cpp_source.html#l00177">Indexes.cpp:177</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a34d36a371e1f4873695f3eecd5ccc82b"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a34d36a371e1f4873695f3eecd5ccc82b">ripple::test::jtx::autofill</a></div><div class="ttdeci">static autofill_t const autofill</div><div class="ttdef"><b>Definition</b> <a href="tags_8h_source.html#l00023">tags.h:23</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a47271eb5e7eb9b5aada383ccfaf9c0cf"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">ripple::test::jtx::drops</a></div><div class="ttdeci">PrettyAmount drops(Integer i)</div><div class="ttdoc">Returns an XRP PrettyAmount, which is trivially convertible to STAmount.</div><div class="ttdef"><b>Definition</b> <a href="src_2test_2jtx_2amount_8h_source.html#l00307">src/test/jtx/amount.h:307</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a66b99468a4160bccaa9959a444b40d40"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a66b99468a4160bccaa9959a444b40d40">ripple::test::jtx::pay</a></div><div class="ttdeci">Json::Value pay(AccountID const &amp;account, AccountID const &amp;to, AnyAmount amount)</div><div class="ttdoc">Create a payment.</div><div class="ttdef"><b>Definition</b> <a href="pay_8cpp_source.html#l00011">pay.cpp:11</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a7a4caa0465c555c5c59ce7c0d0d48d78"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a7a4caa0465c555c5c59ce7c0d0d48d78">ripple::test::jtx::envconfig</a></div><div class="ttdeci">std::unique_ptr&lt; Config &gt; envconfig()</div><div class="ttdoc">creates and initializes a default configuration for jtx::Env</div><div class="ttdef"><b>Definition</b> <a href="envconfig_8h_source.html#l00035">envconfig.h:35</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_aea9cd3d4e6b5df2e62d53b34b605957e"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">ripple::test::jtx::XRP</a></div><div class="ttdeci">XRP_t const XRP</div><div class="ttdoc">Converts to XRP Issue or STAmount.</div><div class="ttdef"><b>Definition</b> <a href="amount_8cpp_source.html#l00092">amount.cpp:92</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a0bd41ec0e7d28cae7397e33711e22ff5"><div class="ttname"><a href="namespaceripple_1_1test.html#a0bd41ec0e7d28cae7397e33711e22ff5">ripple::test::ledgerHash</a></div><div class="ttdeci">static uint256 ledgerHash(LedgerInfo const &amp;info)</div><div class="ttdef"><b>Definition</b> <a href="compression__test_8cpp_source.html#l00041">compression_test.cpp:41</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a1c9bf362fc5dade476550f16212b6a1f"><div class="ttname"><a href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1f">ripple::test::TaskStatus</a></div><div class="ttdeci">TaskStatus</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00554">LedgerReplay_test.cpp:554</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f"><div class="ttname"><a href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa07ca5050e697392c9ed47e6453f1453f">ripple::test::TaskStatus::Completed</a></div><div class="ttdeci">@ Completed</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a1c9bf362fc5dade476550f16212b6a1fa71b56450c5e1ce9ce5f10422f47beb06"><div class="ttname"><a href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fa71b56450c5e1ce9ce5f10422f47beb06">ripple::test::TaskStatus::NotDone</a></div><div class="ttdeci">@ NotDone</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a1c9bf362fc5dade476550f16212b6a1fac30e98851cafc795dbe00917b7c4ccf8"><div class="ttname"><a href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fac30e98851cafc795dbe00917b7c4ccf8">ripple::test::TaskStatus::NotExist</a></div><div class="ttdeci">@ NotExist</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca"><div class="ttname"><a href="namespaceripple_1_1test.html#a1c9bf362fc5dade476550f16212b6a1fad7c8c85bf79bbe1b7188497c32c3b0ca">ripple::test::TaskStatus::Failed</a></div><div class="ttdeci">@ Failed</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a5aee00287e1907a9876b3247864d6f0a"><div class="ttname"><a href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0a">ripple::test::InboundLedgersBehavior</a></div><div class="ttdeci">InboundLedgersBehavior</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00055">LedgerReplay_test.cpp:55</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a5aee00287e1907a9876b3247864d6f0aa0c6ad70beb3a7e76c3fc7adab7c46acc"><div class="ttname"><a href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa0c6ad70beb3a7e76c3fc7adab7c46acc">ripple::test::InboundLedgersBehavior::Good</a></div><div class="ttdeci">@ Good</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a5aee00287e1907a9876b3247864d6f0aa6a6decd76984eed63a0c173f9f574487"><div class="ttname"><a href="namespaceripple_1_1test.html#a5aee00287e1907a9876b3247864d6f0aa6a6decd76984eed63a0c173f9f574487">ripple::test::InboundLedgersBehavior::DropAll</a></div><div class="ttdeci">@ DropAll</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a6e324fd8fc463ac8f4a1d1a185511db1"><div class="ttname"><a href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1">ripple::test::PeerSetBehavior</a></div><div class="ttdeci">PeerSetBehavior</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00320">LedgerReplay_test.cpp:320</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a6e324fd8fc463ac8f4a1d1a185511db1a0c6ad70beb3a7e76c3fc7adab7c46acc"><div class="ttname"><a href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a0c6ad70beb3a7e76c3fc7adab7c46acc">ripple::test::PeerSetBehavior::Good</a></div><div class="ttdeci">@ Good</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a6e324fd8fc463ac8f4a1d1a185511db1a0cf51aa72b773c64178a944bf85ef503"><div class="ttname"><a href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a0cf51aa72b773c64178a944bf85ef503">ripple::test::PeerSetBehavior::DropLedgerDeltaReply</a></div><div class="ttdeci">@ DropLedgerDeltaReply</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a6e324fd8fc463ac8f4a1d1a185511db1a1c680e775b81946aa93a83b6ad8e87d7"><div class="ttname"><a href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a1c680e775b81946aa93a83b6ad8e87d7">ripple::test::PeerSetBehavior::DropSkipListReply</a></div><div class="ttdeci">@ DropSkipListReply</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a6e324fd8fc463ac8f4a1d1a185511db1a6a6decd76984eed63a0c173f9f574487"><div class="ttname"><a href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a6a6decd76984eed63a0c173f9f574487">ripple::test::PeerSetBehavior::DropAll</a></div><div class="ttdeci">@ DropAll</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a6e324fd8fc463ac8f4a1d1a185511db1a7020426cfb0a204051be4b3053d2acc8"><div class="ttname"><a href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1a7020426cfb0a204051be4b3053d2acc8">ripple::test::PeerSetBehavior::Repeat</a></div><div class="ttdeci">@ Repeat</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a6e324fd8fc463ac8f4a1d1a185511db1ad10d06eac1b72b6b66d7e8bcd74474b6"><div class="ttname"><a href="namespaceripple_1_1test.html#a6e324fd8fc463ac8f4a1d1a185511db1ad10d06eac1b72b6b66d7e8bcd74474b6">ripple::test::PeerSetBehavior::Drop50</a></div><div class="ttdeci">@ Drop50</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a71635c111c539c74ec6bd2065e2e0b3e"><div class="ttname"><a href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3e">ripple::test::PeerFeature</a></div><div class="ttdeci">PeerFeature</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00178">LedgerReplay_test.cpp:178</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a71635c111c539c74ec6bd2065e2e0b3ea6adf97f83acf6453d4a6a4b1070f3754"><div class="ttname"><a href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ea6adf97f83acf6453d4a6a4b1070f3754">ripple::test::PeerFeature::None</a></div><div class="ttdeci">@ None</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a71635c111c539c74ec6bd2065e2e0b3ead26b2afca64340e74d57ba14421d17dc"><div class="ttname"><a href="namespaceripple_1_1test.html#a71635c111c539c74ec6bd2065e2e0b3ead26b2afca64340e74d57ba14421d17dc">ripple::test::PeerFeature::LedgerReplayEnabled</a></div><div class="ttdeci">@ LedgerReplayEnabled</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_ad11ad14933c7bbfef5f57a948be1c307"><div class="ttname"><a href="namespaceripple_1_1test.html#ad11ad14933c7bbfef5f57a948be1c307">ripple::test::logAll</a></div><div class="ttdeci">void logAll(LedgerServer &amp;server, LedgerReplayClient &amp;client, beast::severities::Severity level=Severity::kTrace)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00825">LedgerReplay_test.cpp:825</a></div></div>
<div class="ttc" id="anamespaceripple_html"><div class="ttname"><a href="namespaceripple.html">ripple</a></div><div class="ttdoc">Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.</div><div class="ttdef"><b>Definition</b> <a href="algorithm_8h_source.html#l00006">algorithm.h:6</a></div></div>
<div class="ttc" id="anamespaceripple_html_a356c68147333a9a48a344718038576d9"><div class="ttname"><a href="namespaceripple.html#a356c68147333a9a48a344718038576d9">ripple::uint256</a></div><div class="ttdeci">base_uint&lt; 256 &gt; uint256</div><div class="ttdef"><b>Definition</b> <a href="base__uint_8h_source.html#l00539">base_uint.h:539</a></div></div>
<div class="ttc" id="anamespaceripple_html_a3b423ad1ba6341f945c08c13fe141150"><div class="ttname"><a href="namespaceripple.html#a3b423ad1ba6341f945c08c13fe141150">ripple::ProtocolFeature</a></div><div class="ttdeci">ProtocolFeature</div><div class="ttdef"><b>Definition</b> <a href="xrpld_2overlay_2Peer_8h_source.html#l00017">xrpld/overlay/Peer.h:17</a></div></div>
<div class="ttc" id="anamespaceripple_html_a3b423ad1ba6341f945c08c13fe141150a955e673a299bbf8322d01b7b5e88be4e"><div class="ttname"><a href="namespaceripple.html#a3b423ad1ba6341f945c08c13fe141150a955e673a299bbf8322d01b7b5e88be4e">ripple::ProtocolFeature::LedgerReplay</a></div><div class="ttdeci">@ LedgerReplay</div></div>
<div class="ttc" id="anamespaceripple_html_a5590ae6006b178275628bde91fa03129"><div class="ttname"><a href="namespaceripple.html#a5590ae6006b178275628bde91fa03129">ripple::makeResponse</a></div><div class="ttdeci">http_response_type makeResponse(bool crawlPublic, http_request_type const &amp;req, beast::IP::Address public_ip, beast::IP::Address remote_ip, uint256 const &amp;sharedValue, std::optional&lt; std::uint32_t &gt; networkID, ProtocolVersion protocol, Application &amp;app)</div><div class="ttdoc">Make http response.</div><div class="ttdef"><b>Definition</b> <a href="Handshake_8cpp_source.html#l00373">Handshake.cpp:373</a></div></div>
<div class="ttc" id="anamespaceripple_html_a59334776ad7699c39ec3683f1fca4b2e"><div class="ttname"><a href="namespaceripple.html#a59334776ad7699c39ec3683f1fca4b2e">ripple::FEATURE_LEDGER_REPLAY</a></div><div class="ttdeci">static constexpr char FEATURE_LEDGER_REPLAY[]</div><div class="ttdef"><b>Definition</b> <a href="Handshake_8h_source.html#l00128">Handshake.h:128</a></div></div>
<div class="ttc" id="anamespaceripple_html_a701ede864bf93a008a22a2a7fee9bfb3"><div class="ttname"><a href="namespaceripple.html#a701ede864bf93a008a22a2a7fee9bfb3">ripple::derivePublicKey</a></div><div class="ttdeci">PublicKey derivePublicKey(KeyType type, SecretKey const &amp;sk)</div><div class="ttdoc">Derive the public key from a secret key.</div><div class="ttdef"><b>Definition</b> <a href="SecretKey_8cpp_source.html#l00312">SecretKey.cpp:312</a></div></div>
<div class="ttc" id="anamespaceripple_html_a962f446a4782087cfa554c9c926681f8"><div class="ttname"><a href="namespaceripple.html#a962f446a4782087cfa554c9c926681f8">ripple::randomSecretKey</a></div><div class="ttdeci">SecretKey randomSecretKey()</div><div class="ttdoc">Create a secret key using secure random numbers.</div><div class="ttdef"><b>Definition</b> <a href="SecretKey_8cpp_source.html#l00280">SecretKey.cpp:280</a></div></div>
<div class="ttc" id="anamespaceripple_html_a9de744cfdefe1132969eb982e57e4dde"><div class="ttname"><a href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4dde">ripple::KeyType</a></div><div class="ttdeci">KeyType</div><div class="ttdef"><b>Definition</b> <a href="KeyType_8h_source.html#l00009">KeyType.h:9</a></div></div>
<div class="ttc" id="anamespaceripple_html_a9de744cfdefe1132969eb982e57e4ddea8183aa2c95dc1385c8f58bf1917fcb0b"><div class="ttname"><a href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea8183aa2c95dc1385c8f58bf1917fcb0b">ripple::KeyType::ed25519</a></div><div class="ttdeci">@ ed25519</div></div>
<div class="ttc" id="anamespaceripple_html_aa07252133d75f88c31a9970df1c37e90"><div class="ttname"><a href="namespaceripple.html#aa07252133d75f88c31a9970df1c37e90">ripple::buildLedger</a></div><div class="ttdeci">std::shared_ptr&lt; Ledger &gt; buildLedger(std::shared_ptr&lt; Ledger const &gt; const &amp;parent, NetClock::time_point closeTime, bool const closeTimeCorrect, NetClock::duration closeResolution, Application &amp;app, CanonicalTXSet &amp;txns, std::set&lt; TxID &gt; &amp;failedTxs, beast::Journal j)</div><div class="ttdoc">Build a new ledger by applying consensus transactions.</div><div class="ttdef"><b>Definition</b> <a href="BuildLedger_8cpp_source.html#l00163">BuildLedger.cpp:163</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa265217edeb8282e636c78b50049f4c0"><div class="ttname"><a href="namespaceripple.html#aa265217edeb8282e636c78b50049f4c0">ripple::http_request_type</a></div><div class="ttdeci">boost::beast::http::request&lt; boost::beast::http::dynamic_body &gt; http_request_type</div><div class="ttdef"><b>Definition</b> <a href="Handoff_8h_source.html#l00013">Handoff.h:14</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa96b512548a1ae9fcd7493c52f19ce0f"><div class="ttname"><a href="namespaceripple.html#aa96b512548a1ae9fcd7493c52f19ce0f">ripple::make_shamapitem</a></div><div class="ttdeci">boost::intrusive_ptr&lt; SHAMapItem &gt; make_shamapitem(uint256 const &amp;tag, Slice data)</div><div class="ttdef"><b>Definition</b> <a href="SHAMapItem_8h_source.html#l00142">SHAMapItem.h:142</a></div></div>
<div class="ttc" id="anamespaceripple_html_ab58cf24607744c98d521c3e97aca2a53"><div class="ttname"><a href="namespaceripple.html#ab58cf24607744c98d521c3e97aca2a53">ripple::peerFeatureEnabled</a></div><div class="ttdeci">bool peerFeatureEnabled(headers const &amp;request, std::string const &amp;feature, std::string value, bool config)</div><div class="ttdoc">Check if a feature should be enabled for a peer.</div><div class="ttdef"><b>Definition</b> <a href="Handshake_8h_source.html#l00179">Handshake.h:179</a></div></div>
<div class="ttc" id="anamespaceripple_html_ac35dc55d3f3c259f344225586a8887b4"><div class="ttname"><a href="namespaceripple.html#ac35dc55d3f3c259f344225586a8887b4">ripple::makeRequest</a></div><div class="ttdeci">auto makeRequest(bool crawlPublic, bool comprEnabled, bool ledgerReplayEnabled, bool txReduceRelayEnabled, bool vpReduceRelayEnabled) -&gt; request_type</div><div class="ttdoc">Make outbound http request.</div><div class="ttdef"><b>Definition</b> <a href="Handshake_8cpp_source.html#l00346">Handshake.cpp:346</a></div></div>
<div class="ttc" id="anamespaceripple_html_ad2487abbcc1a5d6064b72144b461df6eaf77cbea9706ce2ee7fdf5a85efbf70c5"><div class="ttname"><a href="namespaceripple.html#ad2487abbcc1a5d6064b72144b461df6eaf77cbea9706ce2ee7fdf5a85efbf70c5">ripple::tapNONE</a></div><div class="ttdeci">@ tapNONE</div><div class="ttdef"><b>Definition</b> <a href="ApplyView_8h_source.html#l00012">ApplyView.h:12</a></div></div>
<div class="ttc" id="anamespaceripple_html_ad5143ceada01141772ae4aab984f94bda7fa2267e9b1bf739a70bb1860ab2a99c"><div class="ttname"><a href="namespaceripple.html#ad5143ceada01141772ae4aab984f94bda7fa2267e9b1bf739a70bb1860ab2a99c">ripple::HashPrefix::ledgerMaster</a></div><div class="ttdeci">@ ledgerMaster</div><div class="ttdoc">ledger master data for signing</div></div>
<div class="ttc" id="anamespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdoc">STL namespace.</div></div>
<div class="ttc" id="aoptional_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a></div></div>
<div class="ttc" id="apush_back_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">std::vector::push_back</a></div><div class="ttdeci">T push_back(T... args)</div></div>
<div class="ttc" id="aset_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/set.html">std::set</a></div></div>
<div class="ttc" id="ashared_ptr_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a></div></div>
<div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_set/size.html">std::unordered_set::size</a></div><div class="ttdeci">T size(T... args)</div></div>
<div class="ttc" id="asize_t_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div></div>
<div class="ttc" id="asleep_for_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/sleep_for.html">std::this_thread::sleep_for</a></div><div class="ttdeci">T sleep_for(T... args)</div></div>
<div class="ttc" id="astructripple_1_1Keylet_html_a482983062843a8682fcea76a309c73db"><div class="ttname"><a href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">ripple::Keylet::key</a></div><div class="ttdeci">uint256 key</div><div class="ttdef"><b>Definition</b> <a href="Keylet_8h_source.html#l00021">Keylet.h:21</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplay__test_html"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplay__test.html">ripple::test::LedgerReplay_test</a></div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00023">LedgerReplay_test.cpp:24</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplay__test_html_add660c91c07a4d566a12b3183d033a69"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplay__test.html#add660c91c07a4d566a12b3183d033a69">ripple::test::LedgerReplay_test::run</a></div><div class="ttdeci">void run() override</div><div class="ttdoc">Runs the suite.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00026">LedgerReplay_test.cpp:26</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayerLong__test_html"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayerLong__test.html">ripple::test::LedgerReplayerLong_test</a></div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01542">LedgerReplay_test.cpp:1543</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayerLong__test_html_a4dadccc506933338ae8bfb99dca568e8"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayerLong__test.html#a4dadccc506933338ae8bfb99dca568e8">ripple::test::LedgerReplayerLong_test::run</a></div><div class="ttdeci">void run() override</div><div class="ttdoc">Runs the suite.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01545">LedgerReplay_test.cpp:1545</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayerTimeout__test_html"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayerTimeout__test.html">ripple::test::LedgerReplayerTimeout_test</a></div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01467">LedgerReplay_test.cpp:1468</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayerTimeout__test_html_a146e52d5da747209c53624050f937936"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayerTimeout__test.html#a146e52d5da747209c53624050f937936">ripple::test::LedgerReplayerTimeout_test::run</a></div><div class="ttdeci">void run() override</div><div class="ttdoc">Runs the suite.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01535">LedgerReplay_test.cpp:1535</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayerTimeout__test_html_a1882b677eaad5d2e1e599883396bdd6a"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayerTimeout__test.html#a1882b677eaad5d2e1e599883396bdd6a">ripple::test::LedgerReplayerTimeout_test::testSkipListTimeout</a></div><div class="ttdeci">void testSkipListTimeout()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01470">LedgerReplay_test.cpp:1470</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayerTimeout__test_html_ab3757ac0d9a8fbee3d108f8d5d9c9a12"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayerTimeout__test.html#ab3757ac0d9a8fbee3d108f8d5d9c9a12">ripple::test::LedgerReplayerTimeout_test::testLedgerDeltaTimeout</a></div><div class="ttdeci">void testLedgerDeltaTimeout()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01501">LedgerReplay_test.cpp:1501</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayer__test_html"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayer__test.html">ripple::test::LedgerReplayer_test</a></div><div class="ttdoc">Test cases: LedgerReplayer_test: process TMProofPathRequest and TMProofPathResponse process TMRep...</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00880">LedgerReplay_test.cpp:881</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayer__test_html_a1f6d416bc654487012e5badf4aed903d"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayer__test.html#a1f6d416bc654487012e5badf4aed903d">ripple::test::LedgerReplayer_test::testProofPath</a></div><div class="ttdeci">void testProofPath()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00883">LedgerReplay_test.cpp:883</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayer__test_html_a3536944873630637ccea5867b445c3b0"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayer__test.html#a3536944873630637ccea5867b445c3b0">ripple::test::LedgerReplayer_test::testLedgerReplayOverlap</a></div><div class="ttdeci">void testLedgerReplayOverlap()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01359">LedgerReplay_test.cpp:1359</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayer__test_html_a39f6d06844ba0d954784172036b1f760"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayer__test.html#a39f6d06844ba0d954784172036b1f760">ripple::test::LedgerReplayer_test::testLedgerDeltaBadReply</a></div><div class="ttdeci">void testLedgerDeltaBadReply()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01324">LedgerReplay_test.cpp:1324</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayer__test_html_a3f15f2eefbc57687048ac84e5e077c41"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayer__test.html#a3f15f2eefbc57687048ac84e5e077c41">ripple::test::LedgerReplayer_test::run</a></div><div class="ttdeci">void run() override</div><div class="ttdoc">Runs the suite.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01445">LedgerReplay_test.cpp:1445</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayer__test_html_a49d59f193c06056e710a3f6e32772941"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayer__test.html#a49d59f193c06056e710a3f6e32772941">ripple::test::LedgerReplayer_test::testStop</a></div><div class="ttdeci">void testStop()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01249">LedgerReplay_test.cpp:1249</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayer__test_html_a976920f91a1a2e816c8d54906a646be1"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayer__test.html#a976920f91a1a2e816c8d54906a646be1">ripple::test::LedgerReplayer_test::testTaskParameter</a></div><div class="ttdeci">void testTaskParameter()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01000">LedgerReplay_test.cpp:1000</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayer__test_html_ab87606b129bb39f7118a2401b981ce69"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayer__test.html#ab87606b129bb39f7118a2401b981ce69">ripple::test::LedgerReplayer_test::testConfig</a></div><div class="ttdeci">void testConfig()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01053">LedgerReplay_test.cpp:1053</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayer__test_html_ac313b58a2d0843ab4f8d46ece7fac907"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayer__test.html#ac313b58a2d0843ab4f8d46ece7fac907">ripple::test::LedgerReplayer_test::testAllInboundLedgers</a></div><div class="ttdeci">void testAllInboundLedgers(int totalReplay)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01167">LedgerReplay_test.cpp:1167</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayer__test_html_ac9e7760a63ff21271107c20f9f690341"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayer__test.html#ac9e7760a63ff21271107c20f9f690341">ripple::test::LedgerReplayer_test::testSkipListBadReply</a></div><div class="ttdeci">void testSkipListBadReply()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01279">LedgerReplay_test.cpp:1279</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayer__test_html_adc7d93c421443d75ebb9bf71dea72421"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayer__test.html#adc7d93c421443d75ebb9bf71dea72421">ripple::test::LedgerReplayer_test::testReplayDelta</a></div><div class="ttdeci">void testReplayDelta()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00947">LedgerReplay_test.cpp:947</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayer__test_html_ae8bbc2e5217f94c203c1289743e2fbad"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayer__test.html#ae8bbc2e5217f94c203c1289743e2fbad">ripple::test::LedgerReplayer_test::testPeerSetBehavior</a></div><div class="ttdeci">void testPeerSetBehavior(PeerSetBehavior peerSetBehavior, int totalReplay=4)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01197">LedgerReplay_test.cpp:1197</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayer__test_html_aea0fc6be2d2f14294990ed7c265d614a"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayer__test.html#aea0fc6be2d2f14294990ed7c265d614a">ripple::test::LedgerReplayer_test::testAllLocal</a></div><div class="ttdeci">void testAllLocal(int totalReplay)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01125">LedgerReplay_test.cpp:1125</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerReplayer__test_html_af548fd09fe85d089adee2806eab92988"><div class="ttname"><a href="structripple_1_1test_1_1LedgerReplayer__test.html#af548fd09fe85d089adee2806eab92988">ripple::test::LedgerReplayer_test::testHandshake</a></div><div class="ttdeci">void testHandshake()</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l01083">LedgerReplay_test.cpp:1083</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_1_1Parameter_html"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html">ripple::test::LedgerServer::Parameter</a></div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00456">LedgerReplay_test.cpp:457</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_1_1Parameter_html_a3bd21cf955ad336652eb8db52daa0374"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#a3bd21cf955ad336652eb8db52daa0374">ripple::test::LedgerServer::Parameter::initAmount</a></div><div class="ttdeci">int initAmount</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00460">LedgerReplay_test.cpp:460</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_1_1Parameter_html_a947fbed427c671d15ed304f91bf11a69"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#a947fbed427c671d15ed304f91bf11a69">ripple::test::LedgerServer::Parameter::initLedgers</a></div><div class="ttdeci">int initLedgers</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00458">LedgerReplay_test.cpp:458</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_1_1Parameter_html_ac89bc3a7ddbafabdb29a3fd68f7bc2de"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#ac89bc3a7ddbafabdb29a3fd68f7bc2de">ripple::test::LedgerServer::Parameter::initAccounts</a></div><div class="ttdeci">int initAccounts</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00459">LedgerReplay_test.cpp:459</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_1_1Parameter_html_adbbed62a46f1a4a84a915ade1f310be2"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#adbbed62a46f1a4a84a915ade1f310be2">ripple::test::LedgerServer::Parameter::numTxPerLedger</a></div><div class="ttdeci">int numTxPerLedger</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00461">LedgerReplay_test.cpp:461</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_1_1Parameter_html_ae24872442b2dee7b6bfca3f5ef47a027"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer_1_1Parameter.html#ae24872442b2dee7b6bfca3f5ef47a027">ripple::test::LedgerServer::Parameter::txAmount</a></div><div class="ttdeci">int txAmount</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00462">LedgerReplay_test.cpp:462</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_html"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer.html">ripple::test::LedgerServer</a></div><div class="ttdoc">Utility class for (1) creating ledgers with txns and (2) providing the ledgers via the ledgerMaster.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00454">LedgerReplay_test.cpp:455</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_html_a1bff2a2006f1201bd5011983447fd70a"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer.html#a1bff2a2006f1201bd5011983447fd70a">ripple::test::LedgerServer::env</a></div><div class="ttdeci">jtx::Env env</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00546">LedgerReplay_test.cpp:546</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_html_a26da34be0f0ac39fb41c6d546a304873"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer.html#a26da34be0f0ac39fb41c6d546a304873">ripple::test::LedgerServer::param</a></div><div class="ttdeci">Parameter param</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00550">LedgerReplay_test.cpp:550</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_html_a2e1385f78f784b361d58f32487ccaaef"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer.html#a2e1385f78f784b361d58f32487ccaaef">ripple::test::LedgerServer::sendPayments</a></div><div class="ttdeci">void sendPayments(int newTxes)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00498">LedgerReplay_test.cpp:498</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_html_a3261f40eb9a4a7739130ec465ed91bba"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer.html#a3261f40eb9a4a7739130ec465ed91bba">ripple::test::LedgerServer::createAccounts</a></div><div class="ttdeci">void createAccounts(int newAccounts)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00482">LedgerReplay_test.cpp:482</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_html_a61f9b82d3c39b758b5541ad15cb1ba01"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer.html#a61f9b82d3c39b758b5541ad15cb1ba01">ripple::test::LedgerServer::msgHandler</a></div><div class="ttdeci">LedgerReplayMsgHandler msgHandler</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00549">LedgerReplay_test.cpp:549</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_html_a86a1876cfb0bbc6259f6f82e455e5857"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer.html#a86a1876cfb0bbc6259f6f82e455e5857">ripple::test::LedgerServer::accounts</a></div><div class="ttdeci">std::vector&lt; jtx::Account &gt; accounts</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00551">LedgerReplay_test.cpp:551</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_html_a89eac86dce3707363dfcec7fcfb10ae7"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer.html#a89eac86dce3707363dfcec7fcfb10ae7">ripple::test::LedgerServer::ledgerMaster</a></div><div class="ttdeci">LedgerMaster &amp; ledgerMaster</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00548">LedgerReplay_test.cpp:548</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_html_ab9907fe3f5816162ad3a6c30fdf37f27"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer.html#ab9907fe3f5816162ad3a6c30fdf37f27">ripple::test::LedgerServer::createLedgerHistory</a></div><div class="ttdeci">void createLedgerHistory()</div><div class="ttdoc">create ledger history</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00538">LedgerReplay_test.cpp:538</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_html_abff2f2828e099d0f90dfc681651da211"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer.html#abff2f2828e099d0f90dfc681651da211">ripple::test::LedgerServer::LedgerServer</a></div><div class="ttdeci">LedgerServer(beast::unit_test::suite &amp;suite, Parameter const &amp;p)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00465">LedgerReplay_test.cpp:465</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1LedgerServer_html_aff3c327d9717f5c25e38398d25611505"><div class="ttname"><a href="structripple_1_1test_1_1LedgerServer.html#aff3c327d9717f5c25e38398d25611505">ripple::test::LedgerServer::app</a></div><div class="ttdeci">Application &amp; app</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00547">LedgerReplay_test.cpp:547</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1NetworkOfTwo_html"><div class="ttname"><a href="structripple_1_1test_1_1NetworkOfTwo.html">ripple::test::NetworkOfTwo</a></div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00838">LedgerReplay_test.cpp:839</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1NetworkOfTwo_html_a1f19f202787d74ae8baf38f6df253453"><div class="ttname"><a href="structripple_1_1test_1_1NetworkOfTwo.html#a1f19f202787d74ae8baf38f6df253453">ripple::test::NetworkOfTwo::NetworkOfTwo</a></div><div class="ttdeci">NetworkOfTwo(beast::unit_test::suite &amp;suite, LedgerServer::Parameter const &amp;param, PeerSetBehavior behavior=PeerSetBehavior::Good, InboundLedgersBehavior inboundBhvr=InboundLedgersBehavior::Good, PeerFeature peerFeature=PeerFeature::LedgerReplayEnabled)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00840">LedgerReplay_test.cpp:840</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1NetworkOfTwo_html_a28825451941ccd2dcc9d097e6d07b0e5"><div class="ttname"><a href="structripple_1_1test_1_1NetworkOfTwo.html#a28825451941ccd2dcc9d097e6d07b0e5">ripple::test::NetworkOfTwo::server</a></div><div class="ttdeci">LedgerServer server</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00851">LedgerReplay_test.cpp:851</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1NetworkOfTwo_html_aa9c855eaca5a1d5c02fc592216a8c186"><div class="ttname"><a href="structripple_1_1test_1_1NetworkOfTwo.html#aa9c855eaca5a1d5c02fc592216a8c186">ripple::test::NetworkOfTwo::client</a></div><div class="ttdeci">LedgerReplayClient client</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00852">LedgerReplay_test.cpp:852</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1TestPeerSet_html"><div class="ttname"><a href="structripple_1_1test_1_1TestPeerSet.html">ripple::test::TestPeerSet</a></div><div class="ttdoc">Simulate a peerSet that supplies peers to ledger replay subtasks.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00335">LedgerReplay_test.cpp:336</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1TestPeerSet_html_a24a2832c1d285a0c81fb5411792645b8"><div class="ttname"><a href="structripple_1_1test_1_1TestPeerSet.html#a24a2832c1d285a0c81fb5411792645b8">ripple::test::TestPeerSet::addPeers</a></div><div class="ttdeci">void addPeers(std::size_t limit, std::function&lt; bool(std::shared_ptr&lt; Peer &gt; const &amp;)&gt; hasItem, std::function&lt; void(std::shared_ptr&lt; Peer &gt; const &amp;)&gt; onPeerAdded) override</div><div class="ttdoc">Try add more peers.</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00350">LedgerReplay_test.cpp:350</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1TestPeerSet_html_a5c3a351bb9f2eefa2a86787961cceacb"><div class="ttname"><a href="structripple_1_1test_1_1TestPeerSet.html#a5c3a351bb9f2eefa2a86787961cceacb">ripple::test::TestPeerSet::remote</a></div><div class="ttdeci">LedgerReplayMsgHandler &amp; remote</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00413">LedgerReplay_test.cpp:413</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1TestPeerSet_html_a6a72d6274a497c5c6b7a2b5d59519d85"><div class="ttname"><a href="structripple_1_1test_1_1TestPeerSet.html#a6a72d6274a497c5c6b7a2b5d59519d85">ripple::test::TestPeerSet::TestPeerSet</a></div><div class="ttdeci">TestPeerSet(LedgerReplayMsgHandler &amp;me, LedgerReplayMsgHandler &amp;other, PeerSetBehavior bhvr, bool enableLedgerReplay)</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00337">LedgerReplay_test.cpp:337</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1TestPeerSet_html_a799f6f0f5bef6d61cccd769ecd2eb026"><div class="ttname"><a href="structripple_1_1test_1_1TestPeerSet.html#a799f6f0f5bef6d61cccd769ecd2eb026">ripple::test::TestPeerSet::behavior</a></div><div class="ttdeci">PeerSetBehavior behavior</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00415">LedgerReplay_test.cpp:415</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1TestPeerSet_html_a7cd356ffd4275c4238124677dbe992d3"><div class="ttname"><a href="structripple_1_1test_1_1TestPeerSet.html#a7cd356ffd4275c4238124677dbe992d3">ripple::test::TestPeerSet::sendRequest</a></div><div class="ttdeci">void sendRequest(::google::protobuf::Message const &amp;msg, protocol::MessageType type, std::shared_ptr&lt; Peer &gt; const &amp;peer) override</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00360">LedgerReplay_test.cpp:360</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1TestPeerSet_html_ae2219852ebf7c6a76cbe930b76780811"><div class="ttname"><a href="structripple_1_1test_1_1TestPeerSet.html#ae2219852ebf7c6a76cbe930b76780811">ripple::test::TestPeerSet::getPeerIds</a></div><div class="ttdeci">std::set&lt; Peer::id_t &gt; const &amp; getPeerIds() const override</div><div class="ttdoc">get the set of ids of previously added peers</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00406">LedgerReplay_test.cpp:406</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1TestPeerSet_html_af1310036749ef7c1dde3ade149e9c281"><div class="ttname"><a href="structripple_1_1test_1_1TestPeerSet.html#af1310036749ef7c1dde3ade149e9c281">ripple::test::TestPeerSet::local</a></div><div class="ttdeci">LedgerReplayMsgHandler &amp; local</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00412">LedgerReplay_test.cpp:412</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1TestPeerSet_html_af8c75a40184be023eec9d78417a8c7df"><div class="ttname"><a href="structripple_1_1test_1_1TestPeerSet.html#af8c75a40184be023eec9d78417a8c7df">ripple::test::TestPeerSet::dummyPeer</a></div><div class="ttdeci">std::shared_ptr&lt; TestPeer &gt; dummyPeer</div><div class="ttdef"><b>Definition</b> <a href="LedgerReplay__test_8cpp_source.html#l00414">LedgerReplay_test.cpp:414</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1None_html"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1None.html">ripple::test::jtx::None</a></div><div class="ttdef"><b>Definition</b> <a href="src_2test_2jtx_2amount_8h_source.html#l00048">src/test/jtx/amount.h:49</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1seq_html"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1seq.html">ripple::test::jtx::seq</a></div><div class="ttdoc">Set the sequence number on a JTx.</div><div class="ttdef"><b>Definition</b> <a href="seq_8h_source.html#l00014">seq.h:15</a></div></div>
<div class="ttc" id="athread_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/thread.html">thread</a></div></div>
<div class="ttc" id="ato_string_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string/to_string.html">std::to_string</a></div><div class="ttdeci">T to_string(T... args)</div></div>
<div class="ttc" id="aunique_lock_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/unique_lock.html">std::unique_lock</a></div></div>
<div class="ttc" id="aunique_ptr_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr</a></div></div>
<div class="ttc" id="aunordered_set_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_set.html">std::unordered_set</a></div></div>
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a></div></div>
</div><!-- fragment --></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>