Files
rippled/ReportingETL_8h_source.html
2022-08-26 20:04:15 +00:00

393 lines
75 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>rippled: ReportingETL.h 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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">rippled
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_df9c78dcf3f59a33b12284f95992a64b.html">ripple</a></li><li class="navelem"><a class="el" href="dir_9f69212e4c6e2ca9ec5ab59cd7b6275c.html">app</a></li><li class="navelem"><a class="el" href="dir_465bd51df6d2b6b4b1941924bc602214.html">reporting</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ReportingETL.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> This file is part of rippled: https://github.com/ripple/rippled</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2020 Ripple Labs Inc.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> Permission to use, copy, modify, and/or distribute this software for any</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> purpose with or without fee is hereby granted, provided that the above</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> copyright notice and this permission notice appear in all copies.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> THE SOFTWARE IS PROVIDED &quot;AS IS&quot; AND THE AUTHOR DISCLAIMS ALL WARRANTIES</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">//==============================================================================</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifndef RIPPLE_APP_REPORTING_REPORTINGETL_H_INCLUDED</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#define RIPPLE_APP_REPORTING_REPORTINGETL_H_INCLUDED</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;ripple/app/main/Application.h&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;ripple/app/rdb/RelationalDatabase.h&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;ripple/app/reporting/ETLHelpers.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;ripple/app/reporting/ETLSource.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;ripple/core/JobQueue.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;ripple/net/InfoSub.h&gt;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;ripple/protocol/ErrorCodes.h&gt;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;ripple/resource/Charge.h&gt;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &lt;ripple/rpc/Context.h&gt;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &lt;ripple/rpc/GRPCHandlers.h&gt;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &lt;ripple/rpc/Role.h&gt;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;ripple/rpc/impl/Handler.h&gt;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &lt;ripple/rpc/impl/RPCHelpers.h&gt;</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;ripple/rpc/impl/Tuning.h&gt;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;boost/algorithm/string.hpp&gt;</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;boost/beast/core.hpp&gt;</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;boost/beast/core/string.hpp&gt;</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;boost/beast/websocket.hpp&gt;</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; </div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &quot;org/xrpl/rpc/v1/xrp_ledger.grpc.pb.h&quot;</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &lt;grpcpp/grpcpp.h&gt;</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/condition_variable.html">condition_variable</a>&gt;</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/mutex.html">mutex</a>&gt;</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/queue.html">queue</a>&gt;</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<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 name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceripple.html">ripple</a> {</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; </div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespaceripple.html#a6ccd779019affe95ed50802a06d731d8"> 53</a></span>&#160;<span class="keyword">using</span> <a class="code" href="structripple_1_1RelationalDatabase_1_1AccountTransactionsData.html">AccountTransactionsData</a> = <a class="code" href="structripple_1_1RelationalDatabase_1_1AccountTransactionsData.html">RelationalDatabase::AccountTransactionsData</a>;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html"> 70</a></span>&#160;<span class="keyword">class </span><a class="code" href="classripple_1_1ReportingETL.html">ReportingETL</a></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a025eaafe836579aff932a4102c167843"> 73</a></span>&#160; <a class="code" href="classripple_1_1Application.html">Application</a>&amp; <a class="code" href="classripple_1_1ReportingETL.html#a025eaafe836579aff932a4102c167843">app_</a>;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a895933d223f738bde43b236e10d5263d"> 75</a></span>&#160; <a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> <a class="code" href="classripple_1_1ReportingETL.html#a895933d223f738bde43b236e10d5263d">journal_</a>;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a0ccd0096aeb98f89bcfcd3f9a6720558"> 77</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/thread.html">std::thread</a> <a class="code" href="classripple_1_1ReportingETL.html#a0ccd0096aeb98f89bcfcd3f9a6720558">worker_</a>;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a9d1499c23252defaf45e6a5bc3c041d8"> 91</a></span>&#160; boost::asio::io_context::strand <a class="code" href="classripple_1_1ReportingETL.html#a9d1499c23252defaf45e6a5bc3c041d8">publishStrand_</a>;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a11e3503cdbaecb0a137011f0baabacbf"> 96</a></span>&#160; <a class="code" href="classripple_1_1ETLLoadBalancer.html">ETLLoadBalancer</a> <a class="code" href="classripple_1_1ReportingETL.html#a11e3503cdbaecb0a137011f0baabacbf">loadBalancer_</a>;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; </div>
<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a899fe8195a769872305181fe1085ae4c"> 100</a></span>&#160; <a class="code" href="classripple_1_1NetworkValidatedLedgers.html">NetworkValidatedLedgers</a> <a class="code" href="classripple_1_1ReportingETL.html#a899fe8195a769872305181fe1085ae4c">networkValidatedLedgers_</a>;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; </div>
<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a5ddc490e776b73888b0d7c2670efa727"> 103</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic_bool</a> <a class="code" href="classripple_1_1ReportingETL.html#a5ddc490e776b73888b0d7c2670efa727">stopping_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#ade4fa846f12c209192fa2e87e94bb7d2"> 115</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classripple_1_1ReportingETL.html#ade4fa846f12c209192fa2e87e94bb7d2">flushInterval_</a> = 0;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#aecb81f86df5bbad3cd94d5f038f39ca4"> 126</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classripple_1_1ReportingETL.html#aecb81f86df5bbad3cd94d5f038f39ca4">numMarkers_</a> = 2;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; </div>
<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#ac905a48c78a1687c148e9c927f5b7358"> 131</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classripple_1_1ReportingETL.html#ac905a48c78a1687c148e9c927f5b7358">readOnly_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; </div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#ad6affa3fb0dd9d1c7366d18fa7655f12"> 134</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic_bool</a> <a class="code" href="classripple_1_1ReportingETL.html#ad6affa3fb0dd9d1c7366d18fa7655f12">writing_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a046a79acf905dcc11d0618d2afab7df5"> 139</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;uint32_t&gt;</a> <a class="code" href="classripple_1_1ReportingETL.html#a046a79acf905dcc11d0618d2afab7df5">startSequence_</a>;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a510316a584720d4b8eaf9c08574ecbb4"> 143</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">std::chrono::time_point&lt;std::chrono::system_clock&gt;</a> <a class="code" href="classripple_1_1ReportingETL.html#a510316a584720d4b8eaf9c08574ecbb4">lastPublish_</a>;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; </div>
<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a11d3916c8a626636fe52caec34048f5e"> 145</a></span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/mutex.html">std::mutex</a> <a class="code" href="classripple_1_1ReportingETL.html#a11d3916c8a626636fe52caec34048f5e">publishTimeMtx_</a>;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; </div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">std::chrono::time_point&lt;std::chrono::system_clock&gt;</a></div>
<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a15fea132fff12a88c71985dbe7837474"> 148</a></span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a15fea132fff12a88c71985dbe7837474">getLastPublish</a>()</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/unique_lock.html">std::unique_lock&lt;std::mutex&gt;</a> lck(<a class="code" href="classripple_1_1ReportingETL.html#a11d3916c8a626636fe52caec34048f5e">publishTimeMtx_</a>);</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1ReportingETL.html#a510316a584720d4b8eaf9c08574ecbb4">lastPublish_</a>;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a482603f4f68241e0421df9bd4fa64383"> 155</a></span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a482603f4f68241e0421df9bd4fa64383">setLastPublish</a>()</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/unique_lock.html">std::unique_lock&lt;std::mutex&gt;</a> lck(<a class="code" href="classripple_1_1ReportingETL.html#a11d3916c8a626636fe52caec34048f5e">publishTimeMtx_</a>);</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a510316a584720d4b8eaf9c08574ecbb4">lastPublish_</a> = <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/system_clock/now.html">std::chrono::system_clock::now</a>();</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; </div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a99f99fa676db643dc5144e8e445a1c50">loadInitialLedger</a>(uint32_t sequence);</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; </div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;uint32_t&gt;</a></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a2ca1423e114e2ffe04197c9f0fa48e57">runETLPipeline</a>(uint32_t startSequence);</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; </div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a8d4c5283fb672759378e44b8a3d0f04d">monitor</a>();</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a608b4da3230791a58316d01c65583c3d">monitorReadOnly</a>();</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; </div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;org::xrpl::rpc::v1::GetLedgerResponse&gt;</a></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#af2f90043d532a1ce40192cddf1714134">fetchLedgerData</a>(uint32_t sequence);</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; </div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;org::xrpl::rpc::v1::GetLedgerResponse&gt;</a></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a3633d41f7c40d383530f36a8d326d4b7">fetchLedgerDataAndDiff</a>(uint32_t sequence);</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; </div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;AccountTransactionsData&gt;</a></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a956bf91e816d4c7942c8933aabca3111">insertTransactions</a>(</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a>&amp; ledger,</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; org::xrpl::rpc::v1::GetLedgerResponse&amp; data);</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; </div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;std::shared_ptr&lt;Ledger&gt;</a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;AccountTransactionsData&gt;</a>&gt;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a29cdba905b9bf95b9d3b1396315e434b">buildNextLedger</a>(</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a>&amp; parent,</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; org::xrpl::rpc::v1::GetLedgerResponse&amp; rawData);</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; </div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a9ec64d56f16ec446b786b27f2491c361">flushLedger</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a>&amp; ledger);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; </div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a54f8263cfec62cbf43621a2d08ffc98c">publishLedger</a>(uint32_t ledgerSequence, uint32_t maxAttempts = 10);</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; </div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a54f8263cfec62cbf43621a2d08ffc98c">publishLedger</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a>&amp; ledger);</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; </div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a8d152a62b05ed142c39af7e366e6a47c">consumeLedgerData</a>(</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;Ledger&gt;</a>&amp; ledger,</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="classripple_1_1ThreadSafeQueue.html">ThreadSafeQueue</a>&lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;SLE&gt;</a>&gt;&amp; writeQueue);</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; </div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classripple_1_1ReportingETL.html#aaf4d1662b131bed6d6ef635ad4b63e96">ReportingETL</a>(<a class="code" href="classripple_1_1Application.html">Application</a>&amp; app);</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; </div>
<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#ab5f33ccddbf2cb2cc9ab635ab70a7bd5"> 271</a></span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#ab5f33ccddbf2cb2cc9ab635ab70a7bd5">~ReportingETL</a>()</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; </div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="classripple_1_1NetworkValidatedLedgers.html">NetworkValidatedLedgers</a>&amp;</div>
<div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a7cf2b8002b6786b4464b2d6a0afff7d4"> 276</a></span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a7cf2b8002b6786b4464b2d6a0afff7d4">getNetworkValidatedLedgers</a>()</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; {</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1ReportingETL.html#a899fe8195a769872305181fe1085ae4c">networkValidatedLedgers_</a>;</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; </div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#aa9765cfe9a061b821e3d47a44c56a6e8"> 282</a></span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#aa9765cfe9a061b821e3d47a44c56a6e8">isStopping</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1ReportingETL.html#a5ddc490e776b73888b0d7c2670efa727">stopping_</a>;</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; </div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; uint32_t</div>
<div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a15171145745ec8d1a19f51a373bc8d2a"> 292</a></span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a15171145745ec8d1a19f51a373bc8d2a">getNumMarkers</a>()</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1ReportingETL.html#aecb81f86df5bbad3cd94d5f038f39ca4">numMarkers_</a>;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; </div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="classripple_1_1Application.html">Application</a>&amp;</div>
<div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#aa8bff32452cf4a675c758a843e7ba16c"> 298</a></span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#aa8bff32452cf4a675c758a843e7ba16c">getApplication</a>()</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1ReportingETL.html#a025eaafe836579aff932a4102c167843">app_</a>;</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; </div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="classbeast_1_1Journal.html">beast::Journal</a>&amp;</div>
<div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#ac8a12b5c2e7dd663977c6a3e35b82f76"> 304</a></span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#ac8a12b5c2e7dd663977c6a3e35b82f76">getJournal</a>()</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; {</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1ReportingETL.html#a895933d223f738bde43b236e10d5263d">journal_</a>;</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; </div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a></div>
<div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#ad1728e3c8cb5a9e4f00bf7fbfb423bad"> 310</a></span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#ad1728e3c8cb5a9e4f00bf7fbfb423bad">getInfo</a>()</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; {</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> result(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; </div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; result[<span class="stringliteral">&quot;etl_sources&quot;</span>] = <a class="code" href="classripple_1_1ReportingETL.html#a11e3503cdbaecb0a137011f0baabacbf">loadBalancer_</a>.<a class="code" href="classripple_1_1ETLLoadBalancer.html#ad50b94eccab1d17847b3a3683ff50d0b">toJson</a>();</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; result[<span class="stringliteral">&quot;is_writer&quot;</span>] = <a class="code" href="classripple_1_1ReportingETL.html#ad6affa3fb0dd9d1c7366d18fa7655f12">writing_</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/atomic/atomic/load.html">load</a>();</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keyword">auto</span> last = <a class="code" href="classripple_1_1ReportingETL.html#a15fea132fff12a88c71985dbe7837474">getLastPublish</a>();</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">if</span> (last.time_since_epoch().count() != 0)</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; result[<span class="stringliteral">&quot;last_publish_time&quot;</span>] =</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(std::chrono::floor&lt;std::chrono::microseconds&gt;(</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a15fea132fff12a88c71985dbe7837474">getLastPublish</a>()));</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; </div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#aa0722787e2f8a69c88654c3934bf3156"> 326</a></span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#aa0722787e2f8a69c88654c3934bf3156">start</a>()</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; {</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; JLOG(<a class="code" href="classripple_1_1ReportingETL.html#a895933d223f738bde43b236e10d5263d">journal_</a>.<a class="code" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>()) &lt;&lt; <span class="stringliteral">&quot;Starting reporting etl&quot;</span>;</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; assert(<a class="code" href="classripple_1_1ReportingETL.html#a025eaafe836579aff932a4102c167843">app_</a>.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>().<a class="code" href="classripple_1_1Config.html#a8fdf3fd3b2112759b3a0a7fa4d8afa05">reporting</a>());</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; assert(<a class="code" href="classripple_1_1ReportingETL.html#a025eaafe836579aff932a4102c167843">app_</a>.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>().<a class="code" href="classripple_1_1Config.html#a55cd8ef67ffbf6a137e0dd71bc8151c6">standalone</a>());</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; assert(<a class="code" href="classripple_1_1ReportingETL.html#a025eaafe836579aff932a4102c167843">app_</a>.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>().<a class="code" href="classripple_1_1Config.html#ad05fa018b47b496a64653fb36a0fbd5b">reportingReadOnly</a>() == <a class="code" href="classripple_1_1ReportingETL.html#ac905a48c78a1687c148e9c927f5b7358">readOnly_</a>);</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; </div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a5ddc490e776b73888b0d7c2670efa727">stopping_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; </div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a11e3503cdbaecb0a137011f0baabacbf">loadBalancer_</a>.<a class="code" href="classripple_1_1ETLLoadBalancer.html#ad200aaca546601e212a973c0cf374178">start</a>();</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a36cc3ec60e19cd21b88c12708726e693">doWork</a>();</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; </div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#ab97081e9f50a7cbb016ad341f7a23bd1"> 340</a></span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#ab97081e9f50a7cbb016ad341f7a23bd1">stop</a>()</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; JLOG(<a class="code" href="classripple_1_1ReportingETL.html#a895933d223f738bde43b236e10d5263d">journal_</a>.<a class="code" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>()) &lt;&lt; <span class="stringliteral">&quot;onStop called&quot;</span>;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; JLOG(<a class="code" href="classripple_1_1ReportingETL.html#a895933d223f738bde43b236e10d5263d">journal_</a>.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;Stopping Reporting ETL&quot;</span>;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a5ddc490e776b73888b0d7c2670efa727">stopping_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a899fe8195a769872305181fe1085ae4c">networkValidatedLedgers_</a>.<a class="code" href="classripple_1_1NetworkValidatedLedgers.html#a0bf84fe65c8346735831b368de59c49d">stop</a>();</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a11e3503cdbaecb0a137011f0baabacbf">loadBalancer_</a>.<a class="code" href="classripple_1_1ETLLoadBalancer.html#adc3fc877fa56c57d21d8040ad7b247e6">stop</a>();</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; </div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; JLOG(<a class="code" href="classripple_1_1ReportingETL.html#a895933d223f738bde43b236e10d5263d">journal_</a>.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;Stopped loadBalancer&quot;</span>;</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1ReportingETL.html#a0ccd0096aeb98f89bcfcd3f9a6720558">worker_</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/thread/joinable.html">joinable</a>())</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a0ccd0096aeb98f89bcfcd3f9a6720558">worker_</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/thread/join.html">join</a>();</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; </div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; JLOG(<a class="code" href="classripple_1_1ReportingETL.html#a895933d223f738bde43b236e10d5263d">journal_</a>.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;Joined worker thread&quot;</span>;</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; </div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="classripple_1_1ETLLoadBalancer.html">ETLLoadBalancer</a>&amp;</div>
<div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="classripple_1_1ReportingETL.html#a9c84a6a08340a7eb1f87878eafc9e738"> 356</a></span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a9c84a6a08340a7eb1f87878eafc9e738">getETLLoadBalancer</a>()</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; {</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1ReportingETL.html#a11e3503cdbaecb0a137011f0baabacbf">loadBalancer_</a>;</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; </div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="classripple_1_1ReportingETL.html#a36cc3ec60e19cd21b88c12708726e693">doWork</a>();</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;};</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; </div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassripple_1_1ReportingETL_html_ade4fa846f12c209192fa2e87e94bb7d2"><div class="ttname"><a href="classripple_1_1ReportingETL.html#ade4fa846f12c209192fa2e87e94bb7d2">ripple::ReportingETL::flushInterval_</a></div><div class="ttdeci">size_t flushInterval_</div><div class="ttdoc">Used to determine when to write to the database during the initial ledger download.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00115">ReportingETL.h:115</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#l00115">Application.h:115</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_af2f90043d532a1ce40192cddf1714134"><div class="ttname"><a href="classripple_1_1ReportingETL.html#af2f90043d532a1ce40192cddf1714134">ripple::ReportingETL::fetchLedgerData</a></div><div class="ttdeci">std::optional&lt; org::xrpl::rpc::v1::GetLedgerResponse &gt; fetchLedgerData(uint32_t sequence)</div><div class="ttdoc">Extract data for a particular ledger from an ETL source.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8cpp_source.html#l00350">ReportingETL.cpp:350</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a99f99fa676db643dc5144e8e445a1c50"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a99f99fa676db643dc5144e8e445a1c50">ripple::ReportingETL::loadInitialLedger</a></div><div class="ttdeci">std::shared_ptr&lt; Ledger &gt; loadInitialLedger(uint32_t sequence)</div><div class="ttdoc">Download a ledger with specified sequence in full, via GetLedgerData, and write the data to the datab...</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8cpp_source.html#l00107">ReportingETL.cpp:107</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a046a79acf905dcc11d0618d2afab7df5"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a046a79acf905dcc11d0618d2afab7df5">ripple::ReportingETL::startSequence_</a></div><div class="ttdeci">std::optional&lt; uint32_t &gt; startSequence_</div><div class="ttdoc">Ledger sequence to start ETL from.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00139">ReportingETL.h:139</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&lt; Ledger &gt;</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a11d3916c8a626636fe52caec34048f5e"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a11d3916c8a626636fe52caec34048f5e">ripple::ReportingETL::publishTimeMtx_</a></div><div class="ttdeci">std::mutex publishTimeMtx_</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00145">ReportingETL.h:145</a></div></div>
<div class="ttc" id="aclassripple_1_1ThreadSafeQueue_html"><div class="ttname"><a href="classripple_1_1ThreadSafeQueue.html">ripple::ThreadSafeQueue</a></div><div class="ttdoc">Generic thread-safe queue with an optional maximum size Note, we can't use a lockfree queue here,...</div><div class="ttdef"><b>Definition:</b> <a href="ETLHelpers_8h_source.html#l00115">ETLHelpers.h:115</a></div></div>
<div class="ttc" id="aclassripple_1_1ETLLoadBalancer_html_ad200aaca546601e212a973c0cf374178"><div class="ttname"><a href="classripple_1_1ETLLoadBalancer.html#ad200aaca546601e212a973c0cf374178">ripple::ETLLoadBalancer::start</a></div><div class="ttdeci">void start()</div><div class="ttdoc">Setup all of the ETL sources and subscribe to the necessary streams.</div><div class="ttdef"><b>Definition:</b> <a href="ETLSource_8cpp_source.html#l00969">ETLSource.cpp:969</a></div></div>
<div class="ttc" id="apair_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a482603f4f68241e0421df9bd4fa64383"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a482603f4f68241e0421df9bd4fa64383">ripple::ReportingETL::setLastPublish</a></div><div class="ttdeci">void setLastPublish()</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00155">ReportingETL.h:155</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a956bf91e816d4c7942c8933aabca3111"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a956bf91e816d4c7942c8933aabca3111">ripple::ReportingETL::insertTransactions</a></div><div class="ttdeci">std::vector&lt; AccountTransactionsData &gt; insertTransactions(std::shared_ptr&lt; Ledger &gt; &amp;ledger, org::xrpl::rpc::v1::GetLedgerResponse &amp;data)</div><div class="ttdoc">Insert all of the extracted transactions into the ledger.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8cpp_source.html#l00076">ReportingETL.cpp:76</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a9ec64d56f16ec446b786b27f2491c361"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a9ec64d56f16ec446b786b27f2491c361">ripple::ReportingETL::flushLedger</a></div><div class="ttdeci">void flushLedger(std::shared_ptr&lt; Ledger &gt; &amp;ledger)</div><div class="ttdoc">Write all new data to the key-value store.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8cpp_source.html#l00182">ReportingETL.cpp:182</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 class="ttdoc">STL class.</div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_ad1728e3c8cb5a9e4f00bf7fbfb423bad"><div class="ttname"><a href="classripple_1_1ReportingETL.html#ad1728e3c8cb5a9e4f00bf7fbfb423bad">ripple::ReportingETL::getInfo</a></div><div class="ttdeci">Json::Value getInfo()</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00310">ReportingETL.h:310</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a11e3503cdbaecb0a137011f0baabacbf"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a11e3503cdbaecb0a137011f0baabacbf">ripple::ReportingETL::loadBalancer_</a></div><div class="ttdeci">ETLLoadBalancer loadBalancer_</div><div class="ttdoc">Mechanism for communicating with ETL sources.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00096">ReportingETL.h:96</a></div></div>
<div class="ttc" id="aclassripple_1_1NetworkValidatedLedgers_html_a0bf84fe65c8346735831b368de59c49d"><div class="ttname"><a href="classripple_1_1NetworkValidatedLedgers.html#a0bf84fe65c8346735831b368de59c49d">ripple::NetworkValidatedLedgers::stop</a></div><div class="ttdeci">void stop()</div><div class="ttdoc">Puts the datastructure in the stopped state Future calls to this datastructure will not block This op...</div><div class="ttdef"><b>Definition:</b> <a href="ETLHelpers_8h_source.html#l00102">ETLHelpers.h:102</a></div></div>
<div class="ttc" id="aclassripple_1_1NetworkValidatedLedgers_html"><div class="ttname"><a href="classripple_1_1NetworkValidatedLedgers.html">ripple::NetworkValidatedLedgers</a></div><div class="ttdoc">This datastructure is used to keep track of the sequence of the most recent ledger validated by the n...</div><div class="ttdef"><b>Definition:</b> <a href="ETLHelpers_8h_source.html#l00039">ETLHelpers.h:39</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_aa8bff32452cf4a675c758a843e7ba16c"><div class="ttname"><a href="classripple_1_1ReportingETL.html#aa8bff32452cf4a675c758a843e7ba16c">ripple::ReportingETL::getApplication</a></div><div class="ttdeci">Application &amp; getApplication()</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00298">ReportingETL.h:298</a></div></div>
<div class="ttc" id="aqueue_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/queue.html">queue</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a899fe8195a769872305181fe1085ae4c"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a899fe8195a769872305181fe1085ae4c">ripple::ReportingETL::networkValidatedLedgers_</a></div><div class="ttdeci">NetworkValidatedLedgers networkValidatedLedgers_</div><div class="ttdoc">Mechanism for detecting when the network has validated a new ledger.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00100">ReportingETL.h:100</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_ab97081e9f50a7cbb016ad341f7a23bd1"><div class="ttname"><a href="classripple_1_1ReportingETL.html#ab97081e9f50a7cbb016ad341f7a23bd1">ripple::ReportingETL::stop</a></div><div class="ttdeci">void stop()</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00340">ReportingETL.h:340</a></div></div>
<div class="ttc" id="ajoinable_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/thread/joinable.html">std::thread::joinable</a></div><div class="ttdeci">T joinable(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a54f8263cfec62cbf43621a2d08ffc98c"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a54f8263cfec62cbf43621a2d08ffc98c">ripple::ReportingETL::publishLedger</a></div><div class="ttdeci">bool publishLedger(uint32_t ledgerSequence, uint32_t maxAttempts=10)</div><div class="ttdoc">Attempt to read the specified ledger from the database, and then publish that ledger to the ledgers s...</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8cpp_source.html#l00283">ReportingETL.cpp:283</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a895933d223f738bde43b236e10d5263d"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a895933d223f738bde43b236e10d5263d">ripple::ReportingETL::journal_</a></div><div class="ttdeci">beast::Journal journal_</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00075">ReportingETL.h:75</a></div></div>
<div class="ttc" id="aclassripple_1_1Config_html_a8fdf3fd3b2112759b3a0a7fa4d8afa05"><div class="ttname"><a href="classripple_1_1Config.html#a8fdf3fd3b2112759b3a0a7fa4d8afa05">ripple::Config::reporting</a></div><div class="ttdeci">bool reporting() const</div><div class="ttdef"><b>Definition:</b> <a href="Config_8h_source.html#l00317">Config.h:317</a></div></div>
<div class="ttc" id="athread_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/thread.html">std::thread</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="anamespaceJson_html_a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6"><div class="ttname"><a href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a></div><div class="ttdeci">@ objectValue</div><div class="ttdoc">object value (collection of name/value pairs).</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8h_source.html#l00043">json_value.h:43</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_ac8a12b5c2e7dd663977c6a3e35b82f76"><div class="ttname"><a href="classripple_1_1ReportingETL.html#ac8a12b5c2e7dd663977c6a3e35b82f76">ripple::ReportingETL::getJournal</a></div><div class="ttdeci">beast::Journal &amp; getJournal()</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00304">ReportingETL.h:304</a></div></div>
<div class="ttc" id="aload_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/atomic/atomic/load.html">std::atomic_bool::load</a></div><div class="ttdeci">T load(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_ad6affa3fb0dd9d1c7366d18fa7655f12"><div class="ttname"><a href="classripple_1_1ReportingETL.html#ad6affa3fb0dd9d1c7366d18fa7655f12">ripple::ReportingETL::writing_</a></div><div class="ttdeci">std::atomic_bool writing_</div><div class="ttdoc">Whether the process is writing to the database. Used by server_info.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00134">ReportingETL.h:134</a></div></div>
<div class="ttc" id="aclassripple_1_1ETLLoadBalancer_html_adc3fc877fa56c57d21d8040ad7b247e6"><div class="ttname"><a href="classripple_1_1ETLLoadBalancer.html#adc3fc877fa56c57d21d8040ad7b247e6">ripple::ETLLoadBalancer::stop</a></div><div class="ttdeci">void stop()</div><div class="ttdef"><b>Definition:</b> <a href="ETLSource_8cpp_source.html#l00976">ETLSource.cpp:976</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="aclassripple_1_1ReportingETL_html_ac905a48c78a1687c148e9c927f5b7358"><div class="ttname"><a href="classripple_1_1ReportingETL.html#ac905a48c78a1687c148e9c927f5b7358">ripple::ReportingETL::readOnly_</a></div><div class="ttdeci">bool readOnly_</div><div class="ttdoc">Whether the process is in strict read-only mode.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00131">ReportingETL.h:131</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_aecb81f86df5bbad3cd94d5f038f39ca4"><div class="ttname"><a href="classripple_1_1ReportingETL.html#aecb81f86df5bbad3cd94d5f038f39ca4">ripple::ReportingETL::numMarkers_</a></div><div class="ttdeci">size_t numMarkers_</div><div class="ttdoc">This variable controls the number of GetLedgerData calls that will be executed in parallel during the...</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00126">ReportingETL.h:126</a></div></div>
<div class="ttc" id="aclassripple_1_1Application_html_aca56b7c63030174e59720ab51d739422"><div class="ttname"><a href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">ripple::Application::config</a></div><div class="ttdeci">virtual Config &amp; config()=0</div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a9c84a6a08340a7eb1f87878eafc9e738"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a9c84a6a08340a7eb1f87878eafc9e738">ripple::ReportingETL::getETLLoadBalancer</a></div><div class="ttdeci">ETLLoadBalancer &amp; getETLLoadBalancer()</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00356">ReportingETL.h:356</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a15fea132fff12a88c71985dbe7837474"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a15fea132fff12a88c71985dbe7837474">ripple::ReportingETL::getLastPublish</a></div><div class="ttdeci">std::chrono::time_point&lt; std::chrono::system_clock &gt; getLastPublish()</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00148">ReportingETL.h:148</a></div></div>
<div class="ttc" id="aclassripple_1_1Config_html_a55cd8ef67ffbf6a137e0dd71bc8151c6"><div class="ttname"><a href="classripple_1_1Config.html#a55cd8ef67ffbf6a137e0dd71bc8151c6">ripple::Config::standalone</a></div><div class="ttdeci">bool standalone() const</div><div class="ttdef"><b>Definition:</b> <a href="Config_8h_source.html#l00312">Config.h:312</a></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 class="ttdoc">STL class.</div></div>
<div class="ttc" id="aclassripple_1_1ETLLoadBalancer_html"><div class="ttname"><a href="classripple_1_1ETLLoadBalancer.html">ripple::ETLLoadBalancer</a></div><div class="ttdoc">This class is used to manage connections to transaction processing processes This class spawns a list...</div><div class="ttdef"><b>Definition:</b> <a href="ETLSource_8h_source.html#l00315">ETLSource.h:315</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a7cf2b8002b6786b4464b2d6a0afff7d4"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a7cf2b8002b6786b4464b2d6a0afff7d4">ripple::ReportingETL::getNetworkValidatedLedgers</a></div><div class="ttdeci">NetworkValidatedLedgers &amp; getNetworkValidatedLedgers()</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00276">ReportingETL.h:276</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a608b4da3230791a58316d01c65583c3d"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a608b4da3230791a58316d01c65583c3d">ripple::ReportingETL::monitorReadOnly</a></div><div class="ttdeci">void monitorReadOnly()</div><div class="ttdoc">Monitor the database for newly written ledgers.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8cpp_source.html#l00804">ReportingETL.cpp:804</a></div></div>
<div class="ttc" id="aclassbeast_1_1Journal_html_a87d6bd59020d94110027dcab3d9e3357"><div class="ttname"><a href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">beast::Journal::info</a></div><div class="ttdeci">Stream info() const</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00321">Journal.h:321</a></div></div>
<div class="ttc" id="atime_point_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/chrono/time_point.html">std::chrono::time_point&lt; std::chrono::system_clock &gt;</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a9d1499c23252defaf45e6a5bc3c041d8"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a9d1499c23252defaf45e6a5bc3c041d8">ripple::ReportingETL::publishStrand_</a></div><div class="ttdeci">boost::asio::io_context::strand publishStrand_</div><div class="ttdoc">Strand to ensure that ledgers are published in order.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00091">ReportingETL.h:91</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html"><div class="ttname"><a href="classripple_1_1ReportingETL.html">ripple::ReportingETL</a></div><div class="ttdoc">This class is responsible for continuously extracting data from a p2p node, and writing that data to ...</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00070">ReportingETL.h:70</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a15171145745ec8d1a19f51a373bc8d2a"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a15171145745ec8d1a19f51a373bc8d2a">ripple::ReportingETL::getNumMarkers</a></div><div class="ttdeci">uint32_t getNumMarkers()</div><div class="ttdoc">Get the number of markers to use during the initial ledger download.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00292">ReportingETL.h:292</a></div></div>
<div class="ttc" id="aclassbeast_1_1Journal_html"><div class="ttname"><a href="classbeast_1_1Journal.html">beast::Journal</a></div><div class="ttdoc">A generic endpoint for log messages.</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00058">Journal.h:58</a></div></div>
<div class="ttc" id="aatomic_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/atomic/atomic.html">std::atomic_bool</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_ab5f33ccddbf2cb2cc9ab635ab70a7bd5"><div class="ttname"><a href="classripple_1_1ReportingETL.html#ab5f33ccddbf2cb2cc9ab635ab70a7bd5">ripple::ReportingETL::~ReportingETL</a></div><div class="ttdeci">~ReportingETL()</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00271">ReportingETL.h:271</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a3633d41f7c40d383530f36a8d326d4b7"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a3633d41f7c40d383530f36a8d326d4b7">ripple::ReportingETL::fetchLedgerDataAndDiff</a></div><div class="ttdeci">std::optional&lt; org::xrpl::rpc::v1::GetLedgerResponse &gt; fetchLedgerDataAndDiff(uint32_t sequence)</div><div class="ttdoc">Extract data for a particular ledger from an ETL source.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8cpp_source.html#l00364">ReportingETL.cpp:364</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a510316a584720d4b8eaf9c08574ecbb4"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a510316a584720d4b8eaf9c08574ecbb4">ripple::ReportingETL::lastPublish_</a></div><div class="ttdeci">std::chrono::time_point&lt; std::chrono::system_clock &gt; lastPublish_</div><div class="ttdoc">The time that the most recently published ledger was published.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00143">ReportingETL.h:143</a></div></div>
<div class="ttc" id="aclassripple_1_1ETLLoadBalancer_html_ad50b94eccab1d17847b3a3683ff50d0b"><div class="ttname"><a href="classripple_1_1ETLLoadBalancer.html#ad50b94eccab1d17847b3a3683ff50d0b">ripple::ETLLoadBalancer::toJson</a></div><div class="ttdeci">Json::Value toJson() const</div><div class="ttdef"><b>Definition:</b> <a href="ETLSource_8h_source.html#l00397">ETLSource.h:397</a></div></div>
<div class="ttc" id="anamespaceripple_html"><div class="ttname"><a href="namespaceripple.html">ripple</a></div><div class="ttdoc">Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.</div><div class="ttdef"><b>Definition:</b> <a href="RCLCensorshipDetector_8h_source.html#l00029">RCLCensorshipDetector.h:29</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a5ddc490e776b73888b0d7c2670efa727"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a5ddc490e776b73888b0d7c2670efa727">ripple::ReportingETL::stopping_</a></div><div class="ttdeci">std::atomic_bool stopping_</div><div class="ttdoc">Whether the software is stopping.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00103">ReportingETL.h:103</a></div></div>
<div class="ttc" id="acondition_variable_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/condition_variable.html">condition_variable</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a025eaafe836579aff932a4102c167843"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a025eaafe836579aff932a4102c167843">ripple::ReportingETL::app_</a></div><div class="ttdeci">Application &amp; app_</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00073">ReportingETL.h:73</a></div></div>
<div class="ttc" id="aoptional_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt; uint32_t &gt;</a></div></div>
<div class="ttc" id="amutex_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/mutex.html">mutex</a></div></div>
<div class="ttc" id="aclassbeast_1_1Journal_html_a556228cb60bcf405c225d3f64b7b01ae"><div class="ttname"><a href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">beast::Journal::debug</a></div><div class="ttdeci">Stream debug() const</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00315">Journal.h:315</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_aa0722787e2f8a69c88654c3934bf3156"><div class="ttname"><a href="classripple_1_1ReportingETL.html#aa0722787e2f8a69c88654c3934bf3156">ripple::ReportingETL::start</a></div><div class="ttdeci">void start()</div><div class="ttdoc">start all of the necessary components and begin ETL</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00326">ReportingETL.h:326</a></div></div>
<div class="ttc" id="anamespaceripple_html_af9776f187d3686a7fba4c2d2fbeebdf4"><div class="ttname"><a href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">ripple::to_string</a></div><div class="ttdeci">std::string to_string(Manifest const &amp;m)</div><div class="ttdoc">Format the specified manifest to a string for debugging purposes.</div><div class="ttdef"><b>Definition:</b> <a href="app_2misc_2impl_2Manifest_8cpp_source.html#l00041">app/misc/impl/Manifest.cpp:41</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a0ccd0096aeb98f89bcfcd3f9a6720558"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a0ccd0096aeb98f89bcfcd3f9a6720558">ripple::ReportingETL::worker_</a></div><div class="ttdeci">std::thread worker_</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00077">ReportingETL.h:77</a></div></div>
<div class="ttc" id="aclassripple_1_1Config_html_ad05fa018b47b496a64653fb36a0fbd5b"><div class="ttname"><a href="classripple_1_1Config.html#ad05fa018b47b496a64653fb36a0fbd5b">ripple::Config::reportingReadOnly</a></div><div class="ttdeci">bool reportingReadOnly() const</div><div class="ttdef"><b>Definition:</b> <a href="Config_8h_source.html#l00329">Config.h:329</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a29cdba905b9bf95b9d3b1396315e434b"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a29cdba905b9bf95b9d3b1396315e434b">ripple::ReportingETL::buildNextLedger</a></div><div class="ttdeci">std::pair&lt; std::shared_ptr&lt; Ledger &gt;, std::vector&lt; AccountTransactionsData &gt; &gt; buildNextLedger(std::shared_ptr&lt; Ledger &gt; &amp;parent, org::xrpl::rpc::v1::GetLedgerResponse &amp;rawData)</div><div class="ttdoc">Build the next ledger using the previous ledger and the extracted data.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8cpp_source.html#l00378">ReportingETL.cpp:378</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a8d4c5283fb672759378e44b8a3d0f04d"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a8d4c5283fb672759378e44b8a3d0f04d">ripple::ReportingETL::monitor</a></div><div class="ttdeci">void monitor()</div><div class="ttdoc">Monitor the network for newly validated ledgers.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8cpp_source.html#l00684">ReportingETL.cpp:684</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_aaf4d1662b131bed6d6ef635ad4b63e96"><div class="ttname"><a href="classripple_1_1ReportingETL.html#aaf4d1662b131bed6d6ef635ad4b63e96">ripple::ReportingETL::ReportingETL</a></div><div class="ttdeci">ReportingETL(Application &amp;app)</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8cpp_source.html#l00833">ReportingETL.cpp:833</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_aa9765cfe9a061b821e3d47a44c56a6e8"><div class="ttname"><a href="classripple_1_1ReportingETL.html#aa9765cfe9a061b821e3d47a44c56a6e8">ripple::ReportingETL::isStopping</a></div><div class="ttdeci">bool isStopping() const</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8h_source.html#l00282">ReportingETL.h:282</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a8d152a62b05ed142c39af7e366e6a47c"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a8d152a62b05ed142c39af7e366e6a47c">ripple::ReportingETL::consumeLedgerData</a></div><div class="ttdeci">void consumeLedgerData(std::shared_ptr&lt; Ledger &gt; &amp;ledger, ThreadSafeQueue&lt; std::shared_ptr&lt; SLE &gt;&gt; &amp;writeQueue)</div><div class="ttdoc">Consume data from a queue and insert that data into the ledger This function will continue to pull fr...</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8cpp_source.html#l00054">ReportingETL.cpp:54</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a36cc3ec60e19cd21b88c12708726e693"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a36cc3ec60e19cd21b88c12708726e693">ripple::ReportingETL::doWork</a></div><div class="ttdeci">void doWork()</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8cpp_source.html#l00822">ReportingETL.cpp:822</a></div></div>
<div class="ttc" id="aclassripple_1_1ReportingETL_html_a2ca1423e114e2ffe04197c9f0fa48e57"><div class="ttname"><a href="classripple_1_1ReportingETL.html#a2ca1423e114e2ffe04197c9f0fa48e57">ripple::ReportingETL::runETLPipeline</a></div><div class="ttdeci">std::optional&lt; uint32_t &gt; runETLPipeline(uint32_t startSequence)</div><div class="ttdoc">Run ETL.</div><div class="ttdef"><b>Definition:</b> <a href="ReportingETL_8cpp_source.html#l00464">ReportingETL.cpp:464</a></div></div>
<div class="ttc" id="ajoin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/thread/join.html">std::thread::join</a></div><div class="ttdeci">T join(T... args)</div></div>
<div class="ttc" id="astructripple_1_1RelationalDatabase_1_1AccountTransactionsData_html"><div class="ttname"><a href="structripple_1_1RelationalDatabase_1_1AccountTransactionsData.html">ripple::RelationalDatabase::AccountTransactionsData</a></div><div class="ttdoc">Struct used to keep track of what to write to transactions and account_transactions tables in Postgre...</div><div class="ttdef"><b>Definition:</b> <a href="RelationalDatabase_8h_source.html#l00116">RelationalDatabase.h:116</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#l00145">json_value.h:145</a></div></div>
<div class="ttc" id="anow_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/chrono/system_clock/now.html">std::chrono::system_clock::now</a></div><div class="ttdeci">T now(T... args)</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>