Files
rippled/include_2xrpl_2resource_2detail_2Logic_8h_source.html
2025-02-27 18:07:04 +00:00

781 lines
167 KiB
HTML
Raw 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.5"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>rippled: Logic.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 id="projectrow">
<td id="projectalign">
<div id="projectname">rippled
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.5 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_0103a8ad82dcc2c51f5cde661b4b5cb7.html">xrpl</a></li><li class="navelem"><a class="el" href="dir_68f79f171b7159941f300783854c1b48.html">resource</a></li><li class="navelem"><a class="el" href="dir_83cc80d895ddee2dee79c9a486487346.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">include/xrpl/resource/detail/Logic.h</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="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">/*</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> This file is part of rippled: https://github.com/ripple/rippled</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> Copyright (c) 2012, 2013 Ripple Labs Inc.</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"></span> </div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> Permission to use, copy, modify, and/or distribute this software for any</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> purpose with or without fee is hereby granted, provided that the above</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> copyright notice and this permission notice appear in all copies.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"></span> </div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> THE SOFTWARE IS PROVIDED &quot;AS IS&quot; AND THE AUTHOR DISCLAIMS ALL WARRANTIES</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">*/</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">//==============================================================================</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="preprocessor">#ifndef RIPPLE_RESOURCE_LOGIC_H_INCLUDED</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#define RIPPLE_RESOURCE_LOGIC_H_INCLUDED</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#include &lt;xrpl/basics/Log.h&gt;</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor">#include &lt;xrpl/basics/UnorderedContainers.h&gt;</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="preprocessor">#include &lt;xrpl/basics/chrono.h&gt;</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="preprocessor">#include &lt;xrpl/beast/clock/abstract_clock.h&gt;</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="preprocessor">#include &lt;xrpl/beast/insight/Insight.h&gt;</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="preprocessor">#include &lt;xrpl/beast/utility/PropertyStream.h&gt;</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor">#include &lt;xrpl/beast/utility/instrumentation.h&gt;</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#include &lt;xrpl/json/json_value.h&gt;</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#include &lt;xrpl/protocol/jss.h&gt;</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &lt;xrpl/resource/Fees.h&gt;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#include &lt;xrpl/resource/Gossip.h&gt;</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#include &lt;xrpl/resource/detail/Import.h&gt;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><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 id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceripple.html">ripple</a> {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="keyword">namespace </span>Resource {</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"><a class="line" href="classripple_1_1Resource_1_1Logic.html"> 40</a></span><span class="keyword">class </span><a class="code hl_class" href="classripple_1_1Resource_1_1Logic.html">Logic</a></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span>{</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#ad3257d8a271dd23b1c1f650fe3b658f5"> 43</a></span> <span class="keyword">using </span><a class="code hl_class" href="classbeast_1_1abstract__clock.html">clock_type</a> = <a class="code hl_typedef" href="namespaceripple.html#abfbcd3fa60b2ddb83f5b2991900fe153">Stopwatch</a>;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#ae86e527f5de9fff53133e58323ff8d5e"> 44</a></span> <span class="keyword">using </span><a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/unordered_map.html">Imports</a> = <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/unordered_map.html">hash_map&lt;std::string, Import&gt;</a>;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a1b4cb175432c3fdaa53b83f949366564"> 45</a></span> <span class="keyword">using </span><a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/unordered_map.html">Table</a> = <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/unordered_map.html">hash_map&lt;Key, Entry, Key::hasher, Key::key_equal&gt;</a>;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#af50b1295041c993946dbbe459b67c548"> 46</a></span> <span class="keyword">using </span><a class="code hl_class" href="classbeast_1_1List.html">EntryIntrusiveList</a> = <a class="code hl_class" href="classbeast_1_1List.html">beast::List&lt;Entry&gt;</a>;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="structripple_1_1Resource_1_1Logic_1_1Stats.html"> 48</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structripple_1_1Resource_1_1Logic_1_1Stats.html">Stats</a></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> {</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="structripple_1_1Resource_1_1Logic_1_1Stats.html#a71c447d75d99a75a1f792879c8adbf5e"> 50</a></span> <a class="code hl_function" href="structripple_1_1Resource_1_1Logic_1_1Stats.html#a71c447d75d99a75a1f792879c8adbf5e">Stats</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">beast::insight::Collector::ptr</a> <span class="keyword">const</span>&amp; collector)</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> {</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <a class="code hl_variable" href="structripple_1_1Resource_1_1Logic_1_1Stats.html#ace41491c727163f20f54995ee50111ce">warn</a> = collector-&gt;make_meter(<span class="stringliteral">&quot;warn&quot;</span>);</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <a class="code hl_variable" href="structripple_1_1Resource_1_1Logic_1_1Stats.html#aec93f3c9ed7c4abe61430dc5afd6a01e">drop</a> = collector-&gt;make_meter(<span class="stringliteral">&quot;drop&quot;</span>);</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> }</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="structripple_1_1Resource_1_1Logic_1_1Stats.html#ace41491c727163f20f54995ee50111ce"> 56</a></span> <a class="code hl_class" href="classbeast_1_1insight_1_1Meter.html">beast::insight::Meter</a> <a class="code hl_variable" href="structripple_1_1Resource_1_1Logic_1_1Stats.html#ace41491c727163f20f54995ee50111ce">warn</a>;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"><a class="line" href="structripple_1_1Resource_1_1Logic_1_1Stats.html#aec93f3c9ed7c4abe61430dc5afd6a01e"> 57</a></span> <a class="code hl_class" href="classbeast_1_1insight_1_1Meter.html">beast::insight::Meter</a> <a class="code hl_variable" href="structripple_1_1Resource_1_1Logic_1_1Stats.html#aec93f3c9ed7c4abe61430dc5afd6a01e">drop</a>;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> };</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#ac62fab108f293bf17e0035504913eda1"> 60</a></span> <a class="code hl_struct" href="structripple_1_1Resource_1_1Logic_1_1Stats.html">Stats</a> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac62fab108f293bf17e0035504913eda1">m_stats</a>;</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0"> 61</a></span> <a class="code hl_class" href="classbeast_1_1abstract__clock.html">Stopwatch</a>&amp; <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a3dfa9976922bab7139cf0754e3e38b6c"> 62</a></span> <a class="code hl_class" href="classbeast_1_1Journal.html">beast::Journal</a> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a3dfa9976922bab7139cf0754e3e38b6c">m_journal</a>;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b"> 64</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/recursive_mutex.html">std::recursive_mutex</a> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// Table of all entries</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a68423e9ac9b9f1da163972ecda648c11"> 67</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/unordered_map.html">Table</a> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a68423e9ac9b9f1da163972ecda648c11">table_</a>;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// Because the following are intrusive lists, a given Entry may be in</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// at most list at a given instant. The Entry must be removed from</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// one list before placing it in another.</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// List of all active inbound entries</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#ae162b43551e2e59881901e90dbb3f582"> 74</a></span> <a class="code hl_class" href="classbeast_1_1List.html">EntryIntrusiveList</a> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ae162b43551e2e59881901e90dbb3f582">inbound_</a>;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> </div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// List of all active outbound entries</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a776a48f79dcfe151e31934514e91220d"> 77</a></span> <a class="code hl_class" href="classbeast_1_1List.html">EntryIntrusiveList</a> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a776a48f79dcfe151e31934514e91220d">outbound_</a>;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// List of all active admin entries</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a2e3685454f12794c714b9133a083d802"> 80</a></span> <a class="code hl_class" href="classbeast_1_1List.html">EntryIntrusiveList</a> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a2e3685454f12794c714b9133a083d802">admin_</a>;</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// List of all inactve entries</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331"> 83</a></span> <a class="code hl_class" href="classbeast_1_1List.html">EntryIntrusiveList</a> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331">inactive_</a>;</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> <span class="comment">// All imported gossip data</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a76b9067846717bd527db0cfd6b811edb"> 86</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/unordered_map.html">Imports</a> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a76b9067846717bd527db0cfd6b811edb">importTable_</a>;</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> <span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#abb841fb46d10bc364176a31a82a45438"> 90</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#abb841fb46d10bc364176a31a82a45438">Logic</a>(</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">beast::insight::Collector::ptr</a> <span class="keyword">const</span>&amp; collector,</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <a class="code hl_class" href="classbeast_1_1abstract__clock.html">clock_type</a>&amp; clock,</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <a class="code hl_class" href="classbeast_1_1Journal.html">beast::Journal</a> journal)</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> : <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac62fab108f293bf17e0035504913eda1">m_stats</a>(collector), <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>(clock), <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a3dfa9976922bab7139cf0754e3e38b6c">m_journal</a>(journal)</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> {</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> }</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a337cbf1c45c5b7a60c2bc5621113c5a3"> 98</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#a337cbf1c45c5b7a60c2bc5621113c5a3">~Logic</a>()</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="comment">// These have to be cleared before the Logic is destroyed</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// since their destructors call back into the class.</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="comment">// Order matters here as well, the import table has to be</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// destroyed before the consumer table.</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="comment">//</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a76b9067846717bd527db0cfd6b811edb">importTable_</a>.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/unordered_map/clear.html">clear</a>();</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a68423e9ac9b9f1da163972ecda648c11">table_</a>.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/unordered_map/clear.html">clear</a>();</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> }</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <a class="code hl_class" href="classripple_1_1Resource_1_1Consumer.html">Consumer</a></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a07e2eb5c8d4175cf0a4a85f509376b53"> 110</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#a07e2eb5c8d4175cf0a4a85f509376b53">newInboundEndpoint</a>(<a class="code hl_class" href="classbeast_1_1IP_1_1Endpoint.html">beast::IP::Endpoint</a> <span class="keyword">const</span>&amp; address)</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <a class="code hl_struct" href="structripple_1_1Resource_1_1Entry.html">Entry</a>* entry(<span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </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> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keyword">auto</span> [resultIt, resultInserted] = <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a68423e9ac9b9f1da163972ecda648c11">table_</a>.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/unordered_map/emplace.html">emplace</a>(</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> std::piecewise_construct,</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/utility/tuple/make_tuple.html">std::make_tuple</a>(<a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#a21bb0387f51ba0f1dc971bce94ffbac9a13db1e92697b16d8f50c272379548b97">kindInbound</a>, address.<a class="code hl_function" href="classbeast_1_1IP_1_1Endpoint.html#a7336271ad6a45e88f485d8fccc7cd4a2">at_port</a>(0)), <span class="comment">// Key</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/utility/tuple/make_tuple.html">std::make_tuple</a>(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>())); <span class="comment">// Entry</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> entry = &amp;resultIt-&gt;second;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> entry-&gt;<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a36405d4dc065cdecf488e9e803220d23">key</a> = &amp;resultIt-&gt;first;</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> ++entry-&gt;<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a3e780c3b19c2c14ec472886ad9290a8c">refcount</a>;</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">if</span> (entry-&gt;<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a3e780c3b19c2c14ec472886ad9290a8c">refcount</a> == 1)</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> {</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keywordflow">if</span> (!resultInserted)</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> {</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331">inactive_</a>.<a class="code hl_function" href="classbeast_1_1List.html#aeed218d106b4ab72b2290ac953f97405">erase</a>(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331">inactive_</a>.<a class="code hl_function" href="classbeast_1_1List.html#a052268b3c6b478ceadfc0044e2f44636">iterator_to</a>(*entry));</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> }</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ae162b43551e2e59881901e90dbb3f582">inbound_</a>.<a class="code hl_function" href="classbeast_1_1List.html#a0ced815cdedb1b2323cd9adf97cca504">push_back</a>(*entry);</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> }</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> }</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> JLOG(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a3dfa9976922bab7139cf0754e3e38b6c">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;New inbound endpoint &quot;</span> &lt;&lt; *entry;</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="keywordflow">return</span> <a class="code hl_class" href="classripple_1_1Resource_1_1Consumer.html">Consumer</a>(*<span class="keyword">this</span>, *entry);</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> }</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <a class="code hl_class" href="classripple_1_1Resource_1_1Consumer.html">Consumer</a></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#abf0d7be081d45a0837aec71f69263514"> 140</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#abf0d7be081d45a0837aec71f69263514">newOutboundEndpoint</a>(<a class="code hl_class" href="classbeast_1_1IP_1_1Endpoint.html">beast::IP::Endpoint</a> <span class="keyword">const</span>&amp; address)</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> <a class="code hl_struct" href="structripple_1_1Resource_1_1Entry.html">Entry</a>* entry(<span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> {</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="keyword">auto</span> [resultIt, resultInserted] = <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a68423e9ac9b9f1da163972ecda648c11">table_</a>.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/unordered_map/emplace.html">emplace</a>(</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> std::piecewise_construct,</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/utility/tuple/make_tuple.html">std::make_tuple</a>(<a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#a21bb0387f51ba0f1dc971bce94ffbac9adb9a643d7cf1a539659622a92c5a7378">kindOutbound</a>, address), <span class="comment">// Key</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/utility/tuple/make_tuple.html">std::make_tuple</a>(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>())); <span class="comment">// Entry</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> entry = &amp;resultIt-&gt;second;</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> entry-&gt;<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a36405d4dc065cdecf488e9e803220d23">key</a> = &amp;resultIt-&gt;first;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> ++entry-&gt;<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a3e780c3b19c2c14ec472886ad9290a8c">refcount</a>;</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="keywordflow">if</span> (entry-&gt;<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a3e780c3b19c2c14ec472886ad9290a8c">refcount</a> == 1)</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> {</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordflow">if</span> (!resultInserted)</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331">inactive_</a>.<a class="code hl_function" href="classbeast_1_1List.html#aeed218d106b4ab72b2290ac953f97405">erase</a>(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331">inactive_</a>.<a class="code hl_function" href="classbeast_1_1List.html#a052268b3c6b478ceadfc0044e2f44636">iterator_to</a>(*entry));</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a776a48f79dcfe151e31934514e91220d">outbound_</a>.<a class="code hl_function" href="classbeast_1_1List.html#a0ced815cdedb1b2323cd9adf97cca504">push_back</a>(*entry);</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> }</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> }</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> JLOG(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a3dfa9976922bab7139cf0754e3e38b6c">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;New outbound endpoint &quot;</span> &lt;&lt; *entry;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keywordflow">return</span> <a class="code hl_class" href="classripple_1_1Resource_1_1Consumer.html">Consumer</a>(*<span class="keyword">this</span>, *entry);</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> }</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <a class="code hl_class" href="classripple_1_1Resource_1_1Consumer.html">Consumer</a></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a3046922fc645a105b96cdc233167c806"> 173</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#a3046922fc645a105b96cdc233167c806">newUnlimitedEndpoint</a>(<a class="code hl_class" href="classbeast_1_1IP_1_1Endpoint.html">beast::IP::Endpoint</a> <span class="keyword">const</span>&amp; address)</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> {</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <a class="code hl_struct" href="structripple_1_1Resource_1_1Entry.html">Entry</a>* entry(<span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> </div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> {</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keyword">auto</span> [resultIt, resultInserted] = <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a68423e9ac9b9f1da163972ecda648c11">table_</a>.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/unordered_map/emplace.html">emplace</a>(</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> std::piecewise_construct,</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/utility/tuple/make_tuple.html">std::make_tuple</a>(<a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#a21bb0387f51ba0f1dc971bce94ffbac9aab94c40083a1cddf421ce87b6ad93a8f">kindUnlimited</a>, address.<a class="code hl_function" href="classbeast_1_1IP_1_1Endpoint.html#a7336271ad6a45e88f485d8fccc7cd4a2">at_port</a>(1)), <span class="comment">// Key</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/utility/tuple/make_tuple.html">std::make_tuple</a>(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>())); <span class="comment">// Entry</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> </div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> entry = &amp;resultIt-&gt;second;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> entry-&gt;<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a36405d4dc065cdecf488e9e803220d23">key</a> = &amp;resultIt-&gt;first;</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> ++entry-&gt;<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a3e780c3b19c2c14ec472886ad9290a8c">refcount</a>;</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="keywordflow">if</span> (entry-&gt;<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a3e780c3b19c2c14ec472886ad9290a8c">refcount</a> == 1)</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> {</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keywordflow">if</span> (!resultInserted)</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331">inactive_</a>.<a class="code hl_function" href="classbeast_1_1List.html#aeed218d106b4ab72b2290ac953f97405">erase</a>(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331">inactive_</a>.<a class="code hl_function" href="classbeast_1_1List.html#a052268b3c6b478ceadfc0044e2f44636">iterator_to</a>(*entry));</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a2e3685454f12794c714b9133a083d802">admin_</a>.<a class="code hl_function" href="classbeast_1_1List.html#a0ced815cdedb1b2323cd9adf97cca504">push_back</a>(*entry);</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> }</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> }</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> JLOG(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a3dfa9976922bab7139cf0754e3e38b6c">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;New unlimited endpoint &quot;</span> &lt;&lt; *entry;</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="keywordflow">return</span> <a class="code hl_class" href="classripple_1_1Resource_1_1Consumer.html">Consumer</a>(*<span class="keyword">this</span>, *entry);</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> }</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> </div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a6b47a9a2f63cc950895ba67514d72723"> 201</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#a6b47a9a2f63cc950895ba67514d72723">getJson</a>()</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> {</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#a6b47a9a2f63cc950895ba67514d72723">getJson</a>(<a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#ac4da9b82372d6a029b9cb7329caa6f3caf9650eae9082653d5c5c741cfdb13d5f">warningThreshold</a>);</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> }</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> </div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#ab1ce4bc72906e2c8ac05b770b0754465"> 208</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#ab1ce4bc72906e2c8ac05b770b0754465">getJson</a>(<span class="keywordtype">int</span> threshold)</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> <a class="code hl_typedef" href="classbeast_1_1abstract__clock.html#a4e16832b0bdf9392c5138bbbde024d8e">clock_type::time_point</a> <span class="keyword">const</span> now(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>());</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> </div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> ret(<a class="code hl_enumvalue" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; inboundEntry : <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ae162b43551e2e59881901e90dbb3f582">inbound_</a>)</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> {</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="keywordtype">int</span> localBalance = inboundEntry.local_balance.value(now);</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="keywordflow">if</span> ((localBalance + inboundEntry.remote_balance) &gt;= threshold)</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> {</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a>&amp; entry =</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> (ret[inboundEntry.to_string()] = <a class="code hl_enumvalue" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> entry[jss::local] = localBalance;</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> entry[jss::remote] = inboundEntry.remote_balance;</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> entry[jss::type] = <span class="stringliteral">&quot;inbound&quot;</span>;</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> }</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> }</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; outboundEntry : <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a776a48f79dcfe151e31934514e91220d">outbound_</a>)</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> {</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordtype">int</span> localBalance = outboundEntry.local_balance.value(now);</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="keywordflow">if</span> ((localBalance + outboundEntry.remote_balance) &gt;= threshold)</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> {</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a>&amp; entry =</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> (ret[outboundEntry.to_string()] = <a class="code hl_enumvalue" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> entry[jss::local] = localBalance;</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> entry[jss::remote] = outboundEntry.remote_balance;</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> entry[jss::type] = <span class="stringliteral">&quot;outbound&quot;</span>;</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> }</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> }</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; adminEntry : <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a2e3685454f12794c714b9133a083d802">admin_</a>)</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> {</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keywordtype">int</span> localBalance = adminEntry.local_balance.value(now);</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keywordflow">if</span> ((localBalance + adminEntry.remote_balance) &gt;= threshold)</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> {</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a>&amp; entry =</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> (ret[adminEntry.to_string()] = <a class="code hl_enumvalue" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> entry[jss::local] = localBalance;</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> entry[jss::remote] = adminEntry.remote_balance;</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> entry[jss::type] = <span class="stringliteral">&quot;admin&quot;</span>;</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> }</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> }</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> </div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="keywordflow">return</span> ret;</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> }</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> </div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <a class="code hl_struct" href="structripple_1_1Resource_1_1Gossip.html">Gossip</a></div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#aaa3910b7bb4d992a913448c49244aa02"> 256</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#aaa3910b7bb4d992a913448c49244aa02">exportConsumers</a>()</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> {</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <a class="code hl_typedef" href="classbeast_1_1abstract__clock.html#a4e16832b0bdf9392c5138bbbde024d8e">clock_type::time_point</a> <span class="keyword">const</span> now(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>());</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> </div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <a class="code hl_struct" href="structripple_1_1Resource_1_1Gossip.html">Gossip</a> gossip;</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> </div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> gossip.<a class="code hl_variable" href="structripple_1_1Resource_1_1Gossip.html#a8c788bd6a0e2d50da642c5b5f26e688f">items</a>.reserve(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ae162b43551e2e59881901e90dbb3f582">inbound_</a>.<a class="code hl_function" href="classbeast_1_1List.html#ad1887824b8827b60b3c9fe7ccc09c130">size</a>());</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> </div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; inboundEntry : <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ae162b43551e2e59881901e90dbb3f582">inbound_</a>)</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> {</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <a class="code hl_struct" href="structripple_1_1Resource_1_1Gossip_1_1Item.html">Gossip::Item</a> item;</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> item.<a class="code hl_variable" href="structripple_1_1Resource_1_1Gossip_1_1Item.html#a26ea56ffacbf146a58fe458c8a94cc3d">balance</a> = inboundEntry.local_balance.value(now);</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <span class="keywordflow">if</span> (item.<a class="code hl_variable" href="structripple_1_1Resource_1_1Gossip_1_1Item.html#a26ea56ffacbf146a58fe458c8a94cc3d">balance</a> &gt;= <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#ac4da9b82372d6a029b9cb7329caa6f3caf2785714036c2bf9cddb23b9769d541b">minimumGossipBalance</a>)</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> {</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> item.<a class="code hl_variable" href="structripple_1_1Resource_1_1Gossip_1_1Item.html#a2da7a8b0b12fc95bdd8eaded4e65cb89">address</a> = inboundEntry.key-&gt;<a class="code hl_function" href="classbeast_1_1IP_1_1Endpoint.html#a0a72b96b0bf95c6baf12c51582697fed">address</a>;</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> gossip.<a class="code hl_variable" href="structripple_1_1Resource_1_1Gossip.html#a8c788bd6a0e2d50da642c5b5f26e688f">items</a>.push_back(item);</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> }</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> }</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> </div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="keywordflow">return</span> gossip;</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> }</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> </div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> </div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a195a4c392e8d5d8880a7c8b09a16b0f2"> 282</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#a195a4c392e8d5d8880a7c8b09a16b0f2">importConsumers</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; origin, <a class="code hl_struct" href="structripple_1_1Resource_1_1Gossip.html">Gossip</a> <span class="keyword">const</span>&amp; gossip)</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> {</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="keyword">auto</span> <span class="keyword">const</span> elapsed = <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>();</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> {</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> <span class="keyword">auto</span> [resultIt, resultInserted] = <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a76b9067846717bd527db0cfd6b811edb">importTable_</a>.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/unordered_map/emplace.html">emplace</a>(</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> std::piecewise_construct,</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/utility/tuple/make_tuple.html">std::make_tuple</a>(origin), <span class="comment">// Key</span></div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/utility/tuple/make_tuple.html">std::make_tuple</a>(</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>().time_since_epoch().count())); <span class="comment">// Import</span></div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> </div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <span class="keywordflow">if</span> (resultInserted)</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> {</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> <span class="comment">// This is a new import</span></div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <a class="code hl_struct" href="structripple_1_1Resource_1_1Import.html">Import</a>&amp; next(resultIt-&gt;second);</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> next.whenExpires = elapsed + <a class="code hl_variable" href="namespaceripple_1_1Resource.html#a52d2f4b00a165185badd31ad55eb2b8c">gossipExpirationSeconds</a>;</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> next.items.reserve(gossip.<a class="code hl_variable" href="structripple_1_1Resource_1_1Gossip.html#a8c788bd6a0e2d50da642c5b5f26e688f">items</a>.size());</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> </div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; gossipItem : gossip.<a class="code hl_variable" href="structripple_1_1Resource_1_1Gossip.html#a8c788bd6a0e2d50da642c5b5f26e688f">items</a>)</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> {</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <a class="code hl_struct" href="structripple_1_1Resource_1_1Import_1_1Item.html">Import::Item</a> item;</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> item.<a class="code hl_variable" href="structripple_1_1Resource_1_1Import_1_1Item.html#a57c30c59038c92c9cff4b3d291dd38e5">balance</a> = gossipItem.balance;</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> item.<a class="code hl_variable" href="structripple_1_1Resource_1_1Import_1_1Item.html#aa6de5d7c0a723a5c87524f68225974c5">consumer</a> = <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#a07e2eb5c8d4175cf0a4a85f509376b53">newInboundEndpoint</a>(gossipItem.address);</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> item.<a class="code hl_variable" href="structripple_1_1Resource_1_1Import_1_1Item.html#aa6de5d7c0a723a5c87524f68225974c5">consumer</a>.<a class="code hl_function" href="classripple_1_1Resource_1_1Consumer.html#a5aa9f758afee2c0944729ae1e95a782f">entry</a>().<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#abc6e6439d972b598c2736e92cc3a13b6">remote_balance</a> += item.<a class="code hl_variable" href="structripple_1_1Resource_1_1Import_1_1Item.html#a57c30c59038c92c9cff4b3d291dd38e5">balance</a>;</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> next.items.push_back(item);</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> }</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> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> {</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> <span class="comment">// Previous import exists so add the new remote</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <span class="comment">// balances and then deduct the old remote balances.</span></div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> </div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> <a class="code hl_struct" href="structripple_1_1Resource_1_1Import.html">Import</a> next;</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> next.whenExpires = elapsed + <a class="code hl_variable" href="namespaceripple_1_1Resource.html#a52d2f4b00a165185badd31ad55eb2b8c">gossipExpirationSeconds</a>;</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> next.items.reserve(gossip.<a class="code hl_variable" href="structripple_1_1Resource_1_1Gossip.html#a8c788bd6a0e2d50da642c5b5f26e688f">items</a>.size());</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; gossipItem : gossip.<a class="code hl_variable" href="structripple_1_1Resource_1_1Gossip.html#a8c788bd6a0e2d50da642c5b5f26e688f">items</a>)</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> {</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> <a class="code hl_struct" href="structripple_1_1Resource_1_1Import_1_1Item.html">Import::Item</a> item;</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> item.<a class="code hl_variable" href="structripple_1_1Resource_1_1Import_1_1Item.html#a57c30c59038c92c9cff4b3d291dd38e5">balance</a> = gossipItem.balance;</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> item.<a class="code hl_variable" href="structripple_1_1Resource_1_1Import_1_1Item.html#aa6de5d7c0a723a5c87524f68225974c5">consumer</a> = <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#a07e2eb5c8d4175cf0a4a85f509376b53">newInboundEndpoint</a>(gossipItem.address);</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> item.<a class="code hl_variable" href="structripple_1_1Resource_1_1Import_1_1Item.html#aa6de5d7c0a723a5c87524f68225974c5">consumer</a>.<a class="code hl_function" href="classripple_1_1Resource_1_1Consumer.html#a5aa9f758afee2c0944729ae1e95a782f">entry</a>().<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#abc6e6439d972b598c2736e92cc3a13b6">remote_balance</a> += item.<a class="code hl_variable" href="structripple_1_1Resource_1_1Import_1_1Item.html#a57c30c59038c92c9cff4b3d291dd38e5">balance</a>;</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> next.items.push_back(item);</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> }</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> </div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <a class="code hl_struct" href="structripple_1_1Resource_1_1Import.html">Import</a>&amp; prev(resultIt-&gt;second);</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; item : prev.items)</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> {</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> item.consumer.entry().remote_balance -= item.balance;</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> }</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> </div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(next, prev);</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> }</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> }</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> }</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> </div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> </div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> <span class="comment">// Called periodically to expire entries and groom the table.</span></div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <span class="comment">//</span></div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a64185b8b932c490346f0a0fe89b40bbe"> 342</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#a64185b8b932c490346f0a0fe89b40bbe">periodicActivity</a>()</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> {</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> </div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> <span class="keyword">auto</span> <span class="keyword">const</span> elapsed = <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>();</div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> </div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> iter(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331">inactive_</a>.<a class="code hl_function" href="classbeast_1_1List.html#a2d3c19a2ea6aba941902adcc0c1a5a73">begin</a>()); iter != <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331">inactive_</a>.<a class="code hl_function" href="classbeast_1_1List.html#a672d23adfca5d4a5e7c4443cf64a8a55">end</a>();)</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> {</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> <span class="keywordflow">if</span> (iter-&gt;whenExpires &lt;= elapsed)</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> {</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> JLOG(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a3dfa9976922bab7139cf0754e3e38b6c">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;Expired &quot;</span> &lt;&lt; *iter;</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> <span class="keyword">auto</span> table_iter = <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a68423e9ac9b9f1da163972ecda648c11">table_</a>.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/unordered_map/find.html">find</a>(*iter-&gt;key);</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> ++iter;</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#adea7afe7165cb131fad6bd39fc78dd46">erase</a>(table_iter);</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> }</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> <span class="keywordflow">else</span></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="keywordflow">break</span>;</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> }</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> }</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> </div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> <span class="keyword">auto</span> iter = <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a76b9067846717bd527db0cfd6b811edb">importTable_</a>.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/unordered_map/begin.html">begin</a>();</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> <span class="keywordflow">while</span> (iter != <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a76b9067846717bd527db0cfd6b811edb">importTable_</a>.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/unordered_map/end.html">end</a>())</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> {</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> <a class="code hl_struct" href="structripple_1_1Resource_1_1Import.html">Import</a>&amp; <span class="keyword">import</span>(iter-&gt;second);</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> <span class="keywordflow">if</span> (iter-&gt;second.whenExpires &lt;= elapsed)</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> {</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> item_iter(<span class="keyword">import</span>.items.begin());</div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> item_iter != <span class="keyword">import</span>.items.end();</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> ++item_iter)</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> {</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> item_iter-&gt;consumer.entry().remote_balance -=</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> item_iter-&gt;balance;</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> </div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> iter = <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a76b9067846717bd527db0cfd6b811edb">importTable_</a>.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/unordered_map/erase.html">erase</a>(iter);</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> }</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> ++iter;</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> }</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> }</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> </div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> </div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> <span class="comment">// Returns the disposition based on the balance and thresholds</span></div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> <span class="keyword">static</span> <a class="code hl_enumeration" href="namespaceripple_1_1Resource.html#ae12997de115c1cf0032794aa5ea1b15d">Disposition</a></div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#aef42d962718ad2f7d2c732185e03b218"> 388</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#aef42d962718ad2f7d2c732185e03b218">disposition</a>(<span class="keywordtype">int</span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#adf7cd47a7f64ebc05b53627d8209bbec">balance</a>)</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> {</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#adf7cd47a7f64ebc05b53627d8209bbec">balance</a> &gt;= <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#ac4da9b82372d6a029b9cb7329caa6f3ca5c408bda92d525f5d989365db1d6c1e3">dropThreshold</a>)</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#ae12997de115c1cf0032794aa5ea1b15da34078bac5ac1af8f8cb7ab01d090c82e">Disposition::drop</a>;</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> </div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#adf7cd47a7f64ebc05b53627d8209bbec">balance</a> &gt;= <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#ac4da9b82372d6a029b9cb7329caa6f3caf9650eae9082653d5c5c741cfdb13d5f">warningThreshold</a>)</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#ae12997de115c1cf0032794aa5ea1b15daeb2060f947d4923c9f750ee61eccf5ad">Disposition::warn</a>;</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> </div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#ae12997de115c1cf0032794aa5ea1b15daadeb01a5ff7ccf891ad10c735db17661">Disposition::ok</a>;</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> }</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> </div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#adea7afe7165cb131fad6bd39fc78dd46"> 400</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#adea7afe7165cb131fad6bd39fc78dd46">erase</a>(Table::iterator iter)</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> {</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> <a class="code hl_struct" href="structripple_1_1Resource_1_1Entry.html">Entry</a>&amp; entry(iter-&gt;second);</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> XRPL_ASSERT(</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> entry.<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a3e780c3b19c2c14ec472886ad9290a8c">refcount</a> == 0,</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> <span class="stringliteral">&quot;ripple::Resource::Logic::erase : entry not used&quot;</span>);</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331">inactive_</a>.<a class="code hl_function" href="classbeast_1_1List.html#aeed218d106b4ab72b2290ac953f97405">erase</a>(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331">inactive_</a>.<a class="code hl_function" href="classbeast_1_1List.html#a052268b3c6b478ceadfc0044e2f44636">iterator_to</a>(entry));</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a68423e9ac9b9f1da163972ecda648c11">table_</a>.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/unordered_map/erase.html">erase</a>(iter);</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> }</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> </div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a238bbab1d75d1426079ba135a1787f25"> 412</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#a238bbab1d75d1426079ba135a1787f25">acquire</a>(<a class="code hl_struct" href="structripple_1_1Resource_1_1Entry.html">Entry</a>&amp; entry)</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> {</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> ++entry.<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a3e780c3b19c2c14ec472886ad9290a8c">refcount</a>;</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> }</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> </div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#aea96963568b141f4fe8490dcef124a4b"> 419</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#aea96963568b141f4fe8490dcef124a4b">release</a>(<a class="code hl_struct" href="structripple_1_1Resource_1_1Entry.html">Entry</a>&amp; entry)</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> {</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> <span class="keywordflow">if</span> (--entry.<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a3e780c3b19c2c14ec472886ad9290a8c">refcount</a> == 0)</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> {</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> JLOG(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a3dfa9976922bab7139cf0754e3e38b6c">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;Inactive &quot;</span> &lt;&lt; entry;</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> </div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> <span class="keywordflow">switch</span> (entry.<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a36405d4dc065cdecf488e9e803220d23">key</a>-&gt;<a class="code hl_variable" href="structripple_1_1Resource_1_1Key.html#afc16c2cbfed9837b2f1eb9554c0f21e3">kind</a>)</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> {</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#a21bb0387f51ba0f1dc971bce94ffbac9a13db1e92697b16d8f50c272379548b97">kindInbound</a>:</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ae162b43551e2e59881901e90dbb3f582">inbound_</a>.<a class="code hl_function" href="classbeast_1_1List.html#aeed218d106b4ab72b2290ac953f97405">erase</a>(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ae162b43551e2e59881901e90dbb3f582">inbound_</a>.<a class="code hl_function" href="classbeast_1_1List.html#a052268b3c6b478ceadfc0044e2f44636">iterator_to</a>(entry));</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#a21bb0387f51ba0f1dc971bce94ffbac9adb9a643d7cf1a539659622a92c5a7378">kindOutbound</a>:</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a776a48f79dcfe151e31934514e91220d">outbound_</a>.<a class="code hl_function" href="classbeast_1_1List.html#aeed218d106b4ab72b2290ac953f97405">erase</a>(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a776a48f79dcfe151e31934514e91220d">outbound_</a>.<a class="code hl_function" href="classbeast_1_1List.html#a052268b3c6b478ceadfc0044e2f44636">iterator_to</a>(entry));</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#a21bb0387f51ba0f1dc971bce94ffbac9aab94c40083a1cddf421ce87b6ad93a8f">kindUnlimited</a>:</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a2e3685454f12794c714b9133a083d802">admin_</a>.<a class="code hl_function" href="classbeast_1_1List.html#aeed218d106b4ab72b2290ac953f97405">erase</a>(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a2e3685454f12794c714b9133a083d802">admin_</a>.<a class="code hl_function" href="classbeast_1_1List.html#a052268b3c6b478ceadfc0044e2f44636">iterator_to</a>(entry));</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> UNREACHABLE(</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> <span class="stringliteral">&quot;ripple::Resource::Logic::release : invalid entry &quot;</span></div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="stringliteral">&quot;kind&quot;</span>);</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <span class="keywordflow">break</span>;</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> <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331">inactive_</a>.<a class="code hl_function" href="classbeast_1_1List.html#a0ced815cdedb1b2323cd9adf97cca504">push_back</a>(entry);</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> entry.<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a7f29a0594727601ebd4269bb6e217eca">whenExpires</a> = <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>() + <a class="code hl_variable" href="namespaceripple_1_1Resource.html#afb1e95c59140206fe975158f4cde3fd3">secondsUntilExpiration</a>;</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> }</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> }</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> </div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <a class="code hl_enumeration" href="namespaceripple_1_1Resource.html#ae12997de115c1cf0032794aa5ea1b15d">Disposition</a></div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#acd9c2e5ff93cd698cabe63b52f07f140"> 449</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#acd9c2e5ff93cd698cabe63b52f07f140">charge</a>(<a class="code hl_struct" href="structripple_1_1Resource_1_1Entry.html">Entry</a>&amp; entry, <a class="code hl_class" href="classripple_1_1Resource_1_1Charge.html">Charge</a> <span class="keyword">const</span>&amp; fee, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> context = {})</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> {</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="classripple_1_1Resource_1_1Charge.html#a02d387c2cf9ed17fa6d471598124564e">Charge::value_type</a> feeLogAsWarn = 3000;</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="classripple_1_1Resource_1_1Charge.html#a02d387c2cf9ed17fa6d471598124564e">Charge::value_type</a> feeLogAsInfo = 1000;</div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="classripple_1_1Resource_1_1Charge.html#a02d387c2cf9ed17fa6d471598124564e">Charge::value_type</a> feeLogAsDebug = 100;</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <span class="keyword">static_assert</span>(</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> feeLogAsWarn &gt; feeLogAsInfo &amp;&amp; feeLogAsInfo &gt; feeLogAsDebug &amp;&amp;</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> feeLogAsDebug &gt; 10);</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"> 458</span> <span class="keyword">static</span> <span class="keyword">auto</span> getStream = [](<a class="code hl_typedef" href="classripple_1_1Resource_1_1Charge.html#a02d387c2cf9ed17fa6d471598124564e">Resource::Charge::value_type</a> cost,</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <a class="code hl_class" href="classbeast_1_1Journal.html">beast::Journal</a>&amp; journal) {</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> <span class="keywordflow">if</span> (cost &gt;= feeLogAsWarn)</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> <span class="keywordflow">return</span> journal.warn();</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> <span class="keywordflow">if</span> (cost &gt;= feeLogAsInfo)</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> <span class="keywordflow">return</span> journal.info();</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <span class="keywordflow">if</span> (cost &gt;= feeLogAsDebug)</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> <span class="keywordflow">return</span> journal.debug();</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> <span class="keywordflow">return</span> journal.trace();</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> };</div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> </div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> <span class="keywordflow">if</span> (!context.empty())</div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> context = <span class="stringliteral">&quot; (&quot;</span> + context + <span class="stringliteral">&quot;)&quot;</span>;</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> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> <a class="code hl_typedef" href="classbeast_1_1abstract__clock.html#a4e16832b0bdf9392c5138bbbde024d8e">clock_type::time_point</a> <span class="keyword">const</span> now(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>());</div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> <span class="keywordtype">int</span> <span class="keyword">const</span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#adf7cd47a7f64ebc05b53627d8209bbec">balance</a>(entry.<a class="code hl_function" href="structripple_1_1Resource_1_1Entry.html#a630a55b81eb0ae18c45e83b253bdbd05">add</a>(fee.<a class="code hl_function" href="classripple_1_1Resource_1_1Charge.html#abeec2cf87ea2c1afd5b33135dfa6253d">cost</a>(), now));</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> JLOG(getStream(fee.<a class="code hl_function" href="classripple_1_1Resource_1_1Charge.html#abeec2cf87ea2c1afd5b33135dfa6253d">cost</a>(), <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a3dfa9976922bab7139cf0754e3e38b6c">m_journal</a>))</div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> &lt;&lt; <span class="stringliteral">&quot;Charging &quot;</span> &lt;&lt; entry &lt;&lt; <span class="stringliteral">&quot; for &quot;</span> &lt;&lt; fee &lt;&lt; context;</div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#aef42d962718ad2f7d2c732185e03b218">disposition</a>(<a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#adf7cd47a7f64ebc05b53627d8209bbec">balance</a>);</div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> }</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> </div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> <span class="keywordtype">bool</span></div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a88c5bb6539e2b72d9768c43b2b79ea5b"> 481</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#a88c5bb6539e2b72d9768c43b2b79ea5b">warn</a>(<a class="code hl_struct" href="structripple_1_1Resource_1_1Entry.html">Entry</a>&amp; entry)</div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> {</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> <span class="keywordflow">if</span> (entry.<a class="code hl_function" href="structripple_1_1Resource_1_1Entry.html#a57a1414566dc5941f2ffd9986fced385">isUnlimited</a>())</div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> </div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> <span class="keywordtype">bool</span> notify(<span class="keyword">false</span>);</div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> <span class="keyword">auto</span> <span class="keyword">const</span> elapsed = <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>();</div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> <span class="keywordflow">if</span> (entry.<a class="code hl_function" href="structripple_1_1Resource_1_1Entry.html#a73c79c68a4fa07e44a288dbfda8501d5">balance</a>(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>()) &gt;= <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#ac4da9b82372d6a029b9cb7329caa6f3caf9650eae9082653d5c5c741cfdb13d5f">warningThreshold</a> &amp;&amp;</div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> elapsed != entry.<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#adc2dbd0b7399f896ac5e93d338e704f7">lastWarningTime</a>)</div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> {</div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#acd9c2e5ff93cd698cabe63b52f07f140">charge</a>(entry, <a class="code hl_variable" href="namespaceripple_1_1Resource.html#a9bf0bd7a02008885350cc04739e105e3">feeWarning</a>);</div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> notify = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> entry.<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#adc2dbd0b7399f896ac5e93d338e704f7">lastWarningTime</a> = elapsed;</div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> }</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> <span class="keywordflow">if</span> (notify)</div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> {</div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> JLOG(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a3dfa9976922bab7139cf0754e3e38b6c">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>()) &lt;&lt; <span class="stringliteral">&quot;Load warning: &quot;</span> &lt;&lt; entry;</div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> ++<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac62fab108f293bf17e0035504913eda1">m_stats</a>.<a class="code hl_variable" href="structripple_1_1Resource_1_1Logic_1_1Stats.html#ace41491c727163f20f54995ee50111ce">warn</a>;</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> }</div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> <span class="keywordflow">return</span> notify;</div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> }</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="keywordtype">bool</span></div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#aa45d85b6656c6b464b8e6bec3880e40a"> 505</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#aa45d85b6656c6b464b8e6bec3880e40a">disconnect</a>(<a class="code hl_struct" href="structripple_1_1Resource_1_1Entry.html">Entry</a>&amp; entry)</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> {</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> <span class="keywordflow">if</span> (entry.<a class="code hl_function" href="structripple_1_1Resource_1_1Entry.html#a57a1414566dc5941f2ffd9986fced385">isUnlimited</a>())</div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> </div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> <span class="keywordtype">bool</span> <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#ae12997de115c1cf0032794aa5ea1b15da34078bac5ac1af8f8cb7ab01d090c82e">drop</a>(<span class="keyword">false</span>);</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> <a class="code hl_typedef" href="classbeast_1_1abstract__clock.html#a4e16832b0bdf9392c5138bbbde024d8e">clock_type::time_point</a> <span class="keyword">const</span> now(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>());</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> <span class="keywordtype">int</span> <span class="keyword">const</span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#adf7cd47a7f64ebc05b53627d8209bbec">balance</a>(entry.<a class="code hl_function" href="structripple_1_1Resource_1_1Entry.html#a73c79c68a4fa07e44a288dbfda8501d5">balance</a>(now));</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#adf7cd47a7f64ebc05b53627d8209bbec">balance</a> &gt;= <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#ac4da9b82372d6a029b9cb7329caa6f3ca5c408bda92d525f5d989365db1d6c1e3">dropThreshold</a>)</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> {</div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> JLOG(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a3dfa9976922bab7139cf0754e3e38b6c">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#ad8fefe3e8ad583e1ed1bf02094ac3d8f">warn</a>())</div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> &lt;&lt; <span class="stringliteral">&quot;Consumer entry &quot;</span> &lt;&lt; entry &lt;&lt; <span class="stringliteral">&quot; dropped with balance &quot;</span></div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> &lt;&lt; <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#adf7cd47a7f64ebc05b53627d8209bbec">balance</a> &lt;&lt; <span class="stringliteral">&quot; at or above drop threshold &quot;</span> &lt;&lt; <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#ac4da9b82372d6a029b9cb7329caa6f3ca5c408bda92d525f5d989365db1d6c1e3">dropThreshold</a>;</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> </div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> <span class="comment">// Adding feeDrop at this point keeps the dropped connection</span></div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> <span class="comment">// from re-connecting for at least a little while after it is</span></div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> <span class="comment">// dropped.</span></div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#acd9c2e5ff93cd698cabe63b52f07f140">charge</a>(entry, <a class="code hl_variable" href="namespaceripple_1_1Resource.html#a6eae862122137342f77101165fff66da">feeDrop</a>);</div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> ++<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac62fab108f293bf17e0035504913eda1">m_stats</a>.<a class="code hl_variable" href="structripple_1_1Resource_1_1Logic_1_1Stats.html#aec93f3c9ed7c4abe61430dc5afd6a01e">drop</a>;</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#ae12997de115c1cf0032794aa5ea1b15da34078bac5ac1af8f8cb7ab01d090c82e">drop</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> }</div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple_1_1Resource.html#ae12997de115c1cf0032794aa5ea1b15da34078bac5ac1af8f8cb7ab01d090c82e">drop</a>;</div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> }</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span> </div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> <span class="keywordtype">int</span></div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#adf7cd47a7f64ebc05b53627d8209bbec"> 531</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#adf7cd47a7f64ebc05b53627d8209bbec">balance</a>(<a class="code hl_struct" href="structripple_1_1Resource_1_1Entry.html">Entry</a>&amp; entry)</div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> {</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> <span class="keywordflow">return</span> entry.<a class="code hl_function" href="structripple_1_1Resource_1_1Entry.html#a73c79c68a4fa07e44a288dbfda8501d5">balance</a>(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>());</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> }</div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> </div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> </div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#ada43c39fb474526b30dec07d24ede152"> 540</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#ada43c39fb474526b30dec07d24ede152">writeList</a>(</div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> <a class="code hl_typedef" href="classbeast_1_1abstract__clock.html#a4e16832b0bdf9392c5138bbbde024d8e">clock_type::time_point</a> <span class="keyword">const</span> now,</div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> <a class="code hl_class" href="classbeast_1_1PropertyStream_1_1Set.html">beast::PropertyStream::Set</a>&amp; items,</div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> <a class="code hl_class" href="classbeast_1_1List.html">EntryIntrusiveList</a>&amp; list)</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> {</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; entry : list)</div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span> {</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> <a class="code hl_class" href="classbeast_1_1PropertyStream_1_1Map.html">beast::PropertyStream::Map</a> item(items);</div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> <span class="keywordflow">if</span> (entry.<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a3e780c3b19c2c14ec472886ad9290a8c">refcount</a> != 0)</div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> item[<span class="stringliteral">&quot;count&quot;</span>] = entry.<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#a3e780c3b19c2c14ec472886ad9290a8c">refcount</a>;</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> item[<span class="stringliteral">&quot;name&quot;</span>] = entry.<a class="code hl_function" href="structripple_1_1Resource_1_1Entry.html#a0b974f298dfb9f160e73f4b6a84e5176">to_string</a>();</div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> item[<span class="stringliteral">&quot;balance&quot;</span>] = entry.<a class="code hl_function" href="structripple_1_1Resource_1_1Entry.html#a73c79c68a4fa07e44a288dbfda8501d5">balance</a>(now);</div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> <span class="keywordflow">if</span> (entry.<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#abc6e6439d972b598c2736e92cc3a13b6">remote_balance</a> != 0)</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> item[<span class="stringliteral">&quot;remote_balance&quot;</span>] = entry.<a class="code hl_variable" href="structripple_1_1Resource_1_1Entry.html#abc6e6439d972b598c2736e92cc3a13b6">remote_balance</a>;</div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> }</div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> }</div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span> </div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"><a class="line" href="classripple_1_1Resource_1_1Logic.html#a57448d384be8acc5d540297f8a65c0ae"> 558</a></span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#a57448d384be8acc5d540297f8a65c0ae">onWrite</a>(<a class="code hl_class" href="classbeast_1_1PropertyStream_1_1Map.html">beast::PropertyStream::Map</a>&amp; map)</div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"> 559</span> {</div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span> <a class="code hl_typedef" href="classbeast_1_1abstract__clock.html#a4e16832b0bdf9392c5138bbbde024d8e">clock_type::time_point</a> <span class="keyword">const</span> now(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">m_clock</a>.<a class="code hl_function" href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">now</a>());</div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> </div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> _(<a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">lock_</a>);</div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> </div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> {</div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> <a class="code hl_class" href="classbeast_1_1PropertyStream_1_1Set.html">beast::PropertyStream::Set</a> s(<span class="stringliteral">&quot;inbound&quot;</span>, map);</div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#ada43c39fb474526b30dec07d24ede152">writeList</a>(now, s, <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#ae162b43551e2e59881901e90dbb3f582">inbound_</a>);</div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> }</div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span> </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> <a class="code hl_class" href="classbeast_1_1PropertyStream_1_1Set.html">beast::PropertyStream::Set</a> s(<span class="stringliteral">&quot;outbound&quot;</span>, map);</div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#ada43c39fb474526b30dec07d24ede152">writeList</a>(now, s, <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a776a48f79dcfe151e31934514e91220d">outbound_</a>);</div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span> }</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> </div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> {</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> <a class="code hl_class" href="classbeast_1_1PropertyStream_1_1Set.html">beast::PropertyStream::Set</a> s(<span class="stringliteral">&quot;admin&quot;</span>, map);</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#ada43c39fb474526b30dec07d24ede152">writeList</a>(now, s, <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a2e3685454f12794c714b9133a083d802">admin_</a>);</div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> }</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> </div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> {</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> <a class="code hl_class" href="classbeast_1_1PropertyStream_1_1Set.html">beast::PropertyStream::Set</a> s(<span class="stringliteral">&quot;inactive&quot;</span>, map);</div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span> <a class="code hl_function" href="classripple_1_1Resource_1_1Logic.html#ada43c39fb474526b30dec07d24ede152">writeList</a>(now, s, <a class="code hl_variable" href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331">inactive_</a>);</div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> }</div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> }</div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span>};</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> </div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span>} <span class="comment">// namespace Resource</span></div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span>} <span class="comment">// namespace ripple</span></div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> </div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span><span class="preprocessor">#endif</span></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="abegin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_map/begin.html">std::unordered_map::begin</a></div><div class="ttdeci">T begin(T... args)</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#l00146">json_value.h:147</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#l00038">IPEndpoint.h:39</a></div></div>
<div class="ttc" id="aclassbeast_1_1IP_1_1Endpoint_html_a0a72b96b0bf95c6baf12c51582697fed"><div class="ttname"><a href="classbeast_1_1IP_1_1Endpoint.html#a0a72b96b0bf95c6baf12c51582697fed">beast::IP::Endpoint::address</a></div><div class="ttdeci">Address const &amp; address() const</div><div class="ttdoc">Returns the address portion of this endpoint.</div><div class="ttdef"><b>Definition:</b> <a href="IPEndpoint_8h_source.html#l00076">IPEndpoint.h:76</a></div></div>
<div class="ttc" id="aclassbeast_1_1IP_1_1Endpoint_html_a7336271ad6a45e88f485d8fccc7cd4a2"><div class="ttname"><a href="classbeast_1_1IP_1_1Endpoint.html#a7336271ad6a45e88f485d8fccc7cd4a2">beast::IP::Endpoint::at_port</a></div><div class="ttdeci">Endpoint at_port(Port port) const</div><div class="ttdoc">Returns a new Endpoint with a different port.</div><div class="ttdef"><b>Definition:</b> <a href="IPEndpoint_8h_source.html#l00069">IPEndpoint.h:69</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:59</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#l00327">Journal.h:327</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#l00333">Journal.h:333</a></div></div>
<div class="ttc" id="aclassbeast_1_1Journal_html_ad8fefe3e8ad583e1ed1bf02094ac3d8f"><div class="ttname"><a href="classbeast_1_1Journal.html#ad8fefe3e8ad583e1ed1bf02094ac3d8f">beast::Journal::warn</a></div><div class="ttdeci">Stream warn() const</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00339">Journal.h:339</a></div></div>
<div class="ttc" id="aclassbeast_1_1List_html"><div class="ttname"><a href="classbeast_1_1List.html">beast::List&lt; Entry &gt;</a></div></div>
<div class="ttc" id="aclassbeast_1_1List_html_a052268b3c6b478ceadfc0044e2f44636"><div class="ttname"><a href="classbeast_1_1List.html#a052268b3c6b478ceadfc0044e2f44636">beast::List::iterator_to</a></div><div class="ttdeci">iterator iterator_to(T &amp;element) const noexcept</div><div class="ttdoc">Obtain an iterator from an element.</div><div class="ttdef"><b>Definition:</b> <a href="List_8h_source.html#l00562">List.h:562</a></div></div>
<div class="ttc" id="aclassbeast_1_1List_html_a0ced815cdedb1b2323cd9adf97cca504"><div class="ttname"><a href="classbeast_1_1List.html#a0ced815cdedb1b2323cd9adf97cca504">beast::List::push_back</a></div><div class="ttdeci">iterator push_back(T &amp;element) noexcept</div><div class="ttdoc">Append an element at the end of the list.</div><div class="ttdef"><b>Definition:</b> <a href="List_8h_source.html#l00509">List.h:509</a></div></div>
<div class="ttc" id="aclassbeast_1_1List_html_a2d3c19a2ea6aba941902adcc0c1a5a73"><div class="ttname"><a href="classbeast_1_1List.html#a2d3c19a2ea6aba941902adcc0c1a5a73">beast::List::begin</a></div><div class="ttdeci">iterator begin() noexcept</div><div class="ttdoc">Obtain an iterator to the beginning of the list.</div><div class="ttdef"><b>Definition:</b> <a href="List_8h_source.html#l00367">List.h:367</a></div></div>
<div class="ttc" id="aclassbeast_1_1List_html_a672d23adfca5d4a5e7c4443cf64a8a55"><div class="ttname"><a href="classbeast_1_1List.html#a672d23adfca5d4a5e7c4443cf64a8a55">beast::List::end</a></div><div class="ttdeci">iterator end() noexcept</div><div class="ttdoc">Obtain a iterator to the end of the list.</div><div class="ttdef"><b>Definition:</b> <a href="List_8h_source.html#l00394">List.h:394</a></div></div>
<div class="ttc" id="aclassbeast_1_1List_html_ad1887824b8827b60b3c9fe7ccc09c130"><div class="ttname"><a href="classbeast_1_1List.html#ad1887824b8827b60b3c9fe7ccc09c130">beast::List::size</a></div><div class="ttdeci">size_type size() const noexcept</div><div class="ttdoc">Returns the number of elements in the list.</div><div class="ttdef"><b>Definition:</b> <a href="List_8h_source.html#l00318">List.h:318</a></div></div>
<div class="ttc" id="aclassbeast_1_1List_html_aeed218d106b4ab72b2290ac953f97405"><div class="ttname"><a href="classbeast_1_1List.html#aeed218d106b4ab72b2290ac953f97405">beast::List::erase</a></div><div class="ttdeci">iterator erase(iterator pos) noexcept</div><div class="ttdoc">Remove an element.</div><div class="ttdef"><b>Definition:</b> <a href="List_8h_source.html#l00472">List.h:472</a></div></div>
<div class="ttc" id="aclassbeast_1_1PropertyStream_1_1Map_html"><div class="ttname"><a href="classbeast_1_1PropertyStream_1_1Map.html">beast::PropertyStream::Map</a></div><div class="ttdef"><b>Definition:</b> <a href="PropertyStream_8h_source.html#l00224">PropertyStream.h:225</a></div></div>
<div class="ttc" id="aclassbeast_1_1PropertyStream_1_1Set_html"><div class="ttname"><a href="classbeast_1_1PropertyStream_1_1Set.html">beast::PropertyStream::Set</a></div><div class="ttdef"><b>Definition:</b> <a href="PropertyStream_8h_source.html#l00296">PropertyStream.h:297</a></div></div>
<div class="ttc" id="aclassbeast_1_1abstract__clock_html"><div class="ttname"><a href="classbeast_1_1abstract__clock.html">beast::abstract_clock&lt; std::chrono::steady_clock &gt;</a></div></div>
<div class="ttc" id="aclassbeast_1_1abstract__clock_html_a4e16832b0bdf9392c5138bbbde024d8e"><div class="ttname"><a href="classbeast_1_1abstract__clock.html#a4e16832b0bdf9392c5138bbbde024d8e">beast::abstract_clock&lt; std::chrono::steady_clock &gt;::time_point</a></div><div class="ttdeci">typename Clock::time_point time_point</div><div class="ttdef"><b>Definition:</b> <a href="abstract__clock_8h_source.html#l00063">abstract_clock.h:63</a></div></div>
<div class="ttc" id="aclassbeast_1_1abstract__clock_html_ac9a577663353bfea66a096f12cb85293"><div class="ttname"><a href="classbeast_1_1abstract__clock.html#ac9a577663353bfea66a096f12cb85293">beast::abstract_clock::now</a></div><div class="ttdeci">virtual time_point now() const =0</div><div class="ttdoc">Returns the current time.</div></div>
<div class="ttc" id="aclassbeast_1_1insight_1_1Meter_html"><div class="ttname"><a href="classbeast_1_1insight_1_1Meter.html">beast::insight::Meter</a></div><div class="ttdoc">A metric for measuring an integral value.</div><div class="ttdef"><b>Definition:</b> <a href="Meter_8h_source.html#l00037">Meter.h:38</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#l00030">Charge.h:31</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Charge_html_a02d387c2cf9ed17fa6d471598124564e"><div class="ttname"><a href="classripple_1_1Resource_1_1Charge.html#a02d387c2cf9ed17fa6d471598124564e">ripple::Resource::Charge::value_type</a></div><div class="ttdeci">int value_type</div><div class="ttdoc">The type used to hold a consumption charge.</div><div class="ttdef"><b>Definition:</b> <a href="Charge_8h_source.html#l00034">Charge.h:34</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Charge_html_abeec2cf87ea2c1afd5b33135dfa6253d"><div class="ttname"><a href="classripple_1_1Resource_1_1Charge.html#abeec2cf87ea2c1afd5b33135dfa6253d">ripple::Resource::Charge::cost</a></div><div class="ttdeci">value_type cost() const</div><div class="ttdoc">Return the cost of the charge in Resource::Manager units.</div><div class="ttdef"><b>Definition:</b> <a href="Charge_8cpp_source.html#l00038">Charge.cpp:38</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Consumer_html"><div class="ttname"><a href="classripple_1_1Resource_1_1Consumer.html">ripple::Resource::Consumer</a></div><div class="ttdoc">An endpoint that consumes resources.</div><div class="ttdef"><b>Definition:</b> <a href="Consumer_8h_source.html#l00034">Consumer.h:35</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Consumer_html_a5aa9f758afee2c0944729ae1e95a782f"><div class="ttname"><a href="classripple_1_1Resource_1_1Consumer.html#a5aa9f758afee2c0944729ae1e95a782f">ripple::Resource::Consumer::entry</a></div><div class="ttdeci">Entry &amp; entry()</div><div class="ttdef"><b>Definition:</b> <a href="Consumer_8cpp_source.html#l00138">Consumer.cpp:138</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html">ripple::Resource::Logic</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00040">include/xrpl/resource/detail/Logic.h:41</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a07e2eb5c8d4175cf0a4a85f509376b53"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a07e2eb5c8d4175cf0a4a85f509376b53">ripple::Resource::Logic::newInboundEndpoint</a></div><div class="ttdeci">Consumer newInboundEndpoint(beast::IP::Endpoint const &amp;address)</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00110">include/xrpl/resource/detail/Logic.h:110</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a195a4c392e8d5d8880a7c8b09a16b0f2"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a195a4c392e8d5d8880a7c8b09a16b0f2">ripple::Resource::Logic::importConsumers</a></div><div class="ttdeci">void importConsumers(std::string const &amp;origin, Gossip const &amp;gossip)</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00282">include/xrpl/resource/detail/Logic.h:282</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a238bbab1d75d1426079ba135a1787f25"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a238bbab1d75d1426079ba135a1787f25">ripple::Resource::Logic::acquire</a></div><div class="ttdeci">void acquire(Entry &amp;entry)</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00412">include/xrpl/resource/detail/Logic.h:412</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a2e3685454f12794c714b9133a083d802"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a2e3685454f12794c714b9133a083d802">ripple::Resource::Logic::admin_</a></div><div class="ttdeci">EntryIntrusiveList admin_</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00080">include/xrpl/resource/detail/Logic.h:80</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a3046922fc645a105b96cdc233167c806"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a3046922fc645a105b96cdc233167c806">ripple::Resource::Logic::newUnlimitedEndpoint</a></div><div class="ttdeci">Consumer newUnlimitedEndpoint(beast::IP::Endpoint const &amp;address)</div><div class="ttdoc">Create endpoint that should not have resource limits applied.</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00173">include/xrpl/resource/detail/Logic.h:173</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a309a338bf70f11d9c39fec8914343331"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a309a338bf70f11d9c39fec8914343331">ripple::Resource::Logic::inactive_</a></div><div class="ttdeci">EntryIntrusiveList inactive_</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00083">include/xrpl/resource/detail/Logic.h:83</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a337cbf1c45c5b7a60c2bc5621113c5a3"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a337cbf1c45c5b7a60c2bc5621113c5a3">ripple::Resource::Logic::~Logic</a></div><div class="ttdeci">~Logic()</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00098">include/xrpl/resource/detail/Logic.h:98</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a3dfa9976922bab7139cf0754e3e38b6c"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a3dfa9976922bab7139cf0754e3e38b6c">ripple::Resource::Logic::m_journal</a></div><div class="ttdeci">beast::Journal m_journal</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00062">include/xrpl/resource/detail/Logic.h:62</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a57448d384be8acc5d540297f8a65c0ae"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a57448d384be8acc5d540297f8a65c0ae">ripple::Resource::Logic::onWrite</a></div><div class="ttdeci">void onWrite(beast::PropertyStream::Map &amp;map)</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00558">include/xrpl/resource/detail/Logic.h:558</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a64185b8b932c490346f0a0fe89b40bbe"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a64185b8b932c490346f0a0fe89b40bbe">ripple::Resource::Logic::periodicActivity</a></div><div class="ttdeci">void periodicActivity()</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00342">include/xrpl/resource/detail/Logic.h:342</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a68423e9ac9b9f1da163972ecda648c11"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a68423e9ac9b9f1da163972ecda648c11">ripple::Resource::Logic::table_</a></div><div class="ttdeci">Table table_</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00067">include/xrpl/resource/detail/Logic.h:67</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a6b47a9a2f63cc950895ba67514d72723"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a6b47a9a2f63cc950895ba67514d72723">ripple::Resource::Logic::getJson</a></div><div class="ttdeci">Json::Value getJson()</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00201">include/xrpl/resource/detail/Logic.h:201</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a76b9067846717bd527db0cfd6b811edb"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a76b9067846717bd527db0cfd6b811edb">ripple::Resource::Logic::importTable_</a></div><div class="ttdeci">Imports importTable_</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00086">include/xrpl/resource/detail/Logic.h:86</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a776a48f79dcfe151e31934514e91220d"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a776a48f79dcfe151e31934514e91220d">ripple::Resource::Logic::outbound_</a></div><div class="ttdeci">EntryIntrusiveList outbound_</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00077">include/xrpl/resource/detail/Logic.h:77</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a7e446c761587c1cb096f00cb88f903c0"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a7e446c761587c1cb096f00cb88f903c0">ripple::Resource::Logic::m_clock</a></div><div class="ttdeci">Stopwatch &amp; m_clock</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00061">include/xrpl/resource/detail/Logic.h:61</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_a88c5bb6539e2b72d9768c43b2b79ea5b"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#a88c5bb6539e2b72d9768c43b2b79ea5b">ripple::Resource::Logic::warn</a></div><div class="ttdeci">bool warn(Entry &amp;entry)</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00481">include/xrpl/resource/detail/Logic.h:481</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_aa45d85b6656c6b464b8e6bec3880e40a"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#aa45d85b6656c6b464b8e6bec3880e40a">ripple::Resource::Logic::disconnect</a></div><div class="ttdeci">bool disconnect(Entry &amp;entry)</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00505">include/xrpl/resource/detail/Logic.h:505</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_aaa3910b7bb4d992a913448c49244aa02"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#aaa3910b7bb4d992a913448c49244aa02">ripple::Resource::Logic::exportConsumers</a></div><div class="ttdeci">Gossip exportConsumers()</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00256">include/xrpl/resource/detail/Logic.h:256</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_ab1ce4bc72906e2c8ac05b770b0754465"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#ab1ce4bc72906e2c8ac05b770b0754465">ripple::Resource::Logic::getJson</a></div><div class="ttdeci">Json::Value getJson(int threshold)</div><div class="ttdoc">Returns a Json::objectValue.</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00208">include/xrpl/resource/detail/Logic.h:208</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_abb841fb46d10bc364176a31a82a45438"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#abb841fb46d10bc364176a31a82a45438">ripple::Resource::Logic::Logic</a></div><div class="ttdeci">Logic(beast::insight::Collector::ptr const &amp;collector, clock_type &amp;clock, beast::Journal journal)</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00090">include/xrpl/resource/detail/Logic.h:90</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_abf0d7be081d45a0837aec71f69263514"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#abf0d7be081d45a0837aec71f69263514">ripple::Resource::Logic::newOutboundEndpoint</a></div><div class="ttdeci">Consumer newOutboundEndpoint(beast::IP::Endpoint const &amp;address)</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00140">include/xrpl/resource/detail/Logic.h:140</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_ac357c9604f37854071b5d5b4a29fda4b"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#ac357c9604f37854071b5d5b4a29fda4b">ripple::Resource::Logic::lock_</a></div><div class="ttdeci">std::recursive_mutex lock_</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00064">include/xrpl/resource/detail/Logic.h:64</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_ac62fab108f293bf17e0035504913eda1"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#ac62fab108f293bf17e0035504913eda1">ripple::Resource::Logic::m_stats</a></div><div class="ttdeci">Stats m_stats</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00060">include/xrpl/resource/detail/Logic.h:60</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_acd9c2e5ff93cd698cabe63b52f07f140"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#acd9c2e5ff93cd698cabe63b52f07f140">ripple::Resource::Logic::charge</a></div><div class="ttdeci">Disposition charge(Entry &amp;entry, Charge const &amp;fee, std::string context={})</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00449">include/xrpl/resource/detail/Logic.h:449</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_ada43c39fb474526b30dec07d24ede152"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#ada43c39fb474526b30dec07d24ede152">ripple::Resource::Logic::writeList</a></div><div class="ttdeci">void writeList(clock_type::time_point const now, beast::PropertyStream::Set &amp;items, EntryIntrusiveList &amp;list)</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00540">include/xrpl/resource/detail/Logic.h:540</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_adea7afe7165cb131fad6bd39fc78dd46"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#adea7afe7165cb131fad6bd39fc78dd46">ripple::Resource::Logic::erase</a></div><div class="ttdeci">void erase(Table::iterator iter)</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00400">include/xrpl/resource/detail/Logic.h:400</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_adf7cd47a7f64ebc05b53627d8209bbec"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#adf7cd47a7f64ebc05b53627d8209bbec">ripple::Resource::Logic::balance</a></div><div class="ttdeci">int balance(Entry &amp;entry)</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00531">include/xrpl/resource/detail/Logic.h:531</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_ae162b43551e2e59881901e90dbb3f582"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#ae162b43551e2e59881901e90dbb3f582">ripple::Resource::Logic::inbound_</a></div><div class="ttdeci">EntryIntrusiveList inbound_</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00074">include/xrpl/resource/detail/Logic.h:74</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_aea96963568b141f4fe8490dcef124a4b"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#aea96963568b141f4fe8490dcef124a4b">ripple::Resource::Logic::release</a></div><div class="ttdeci">void release(Entry &amp;entry)</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00419">include/xrpl/resource/detail/Logic.h:419</a></div></div>
<div class="ttc" id="aclassripple_1_1Resource_1_1Logic_html_aef42d962718ad2f7d2c732185e03b218"><div class="ttname"><a href="classripple_1_1Resource_1_1Logic.html#aef42d962718ad2f7d2c732185e03b218">ripple::Resource::Logic::disposition</a></div><div class="ttdeci">static Disposition disposition(int balance)</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00388">include/xrpl/resource/detail/Logic.h:388</a></div></div>
<div class="ttc" id="aclear_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_map/clear.html">std::unordered_map::clear</a></div><div class="ttdeci">T clear(T... args)</div></div>
<div class="ttc" id="aemplace_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_map/emplace.html">std::unordered_map::emplace</a></div><div class="ttdeci">T emplace(T... args)</div></div>
<div class="ttc" id="aend_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_map/end.html">std::unordered_map::end</a></div><div class="ttdeci">T end(T... args)</div></div>
<div class="ttc" id="aerase_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_map/erase.html">std::unordered_map::erase</a></div><div class="ttdeci">T erase(T... args)</div></div>
<div class="ttc" id="afind_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_map/find.html">std::unordered_map::find</a></div><div class="ttdeci">T find(T... args)</div></div>
<div class="ttc" id="alock_guard_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a></div></div>
<div class="ttc" id="amake_tuple_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/tuple/make_tuple.html">std::make_tuple</a></div><div class="ttdeci">T make_tuple(T... args)</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="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#l00044">json_value.h:43</a></div></div>
<div class="ttc" id="anamespaceripple_1_1Resource_html_a21bb0387f51ba0f1dc971bce94ffbac9a13db1e92697b16d8f50c272379548b97"><div class="ttname"><a href="namespaceripple_1_1Resource.html#a21bb0387f51ba0f1dc971bce94ffbac9a13db1e92697b16d8f50c272379548b97">ripple::Resource::kindInbound</a></div><div class="ttdeci">@ kindInbound</div><div class="ttdef"><b>Definition:</b> <a href="Kind_8h_source.html#l00034">Kind.h:34</a></div></div>
<div class="ttc" id="anamespaceripple_1_1Resource_html_a21bb0387f51ba0f1dc971bce94ffbac9aab94c40083a1cddf421ce87b6ad93a8f"><div class="ttname"><a href="namespaceripple_1_1Resource.html#a21bb0387f51ba0f1dc971bce94ffbac9aab94c40083a1cddf421ce87b6ad93a8f">ripple::Resource::kindUnlimited</a></div><div class="ttdeci">@ kindUnlimited</div><div class="ttdef"><b>Definition:</b> <a href="Kind_8h_source.html#l00034">Kind.h:34</a></div></div>
<div class="ttc" id="anamespaceripple_1_1Resource_html_a21bb0387f51ba0f1dc971bce94ffbac9adb9a643d7cf1a539659622a92c5a7378"><div class="ttname"><a href="namespaceripple_1_1Resource.html#a21bb0387f51ba0f1dc971bce94ffbac9adb9a643d7cf1a539659622a92c5a7378">ripple::Resource::kindOutbound</a></div><div class="ttdeci">@ kindOutbound</div><div class="ttdef"><b>Definition:</b> <a href="Kind_8h_source.html#l00034">Kind.h:34</a></div></div>
<div class="ttc" id="anamespaceripple_1_1Resource_html_a52d2f4b00a165185badd31ad55eb2b8c"><div class="ttname"><a href="namespaceripple_1_1Resource.html#a52d2f4b00a165185badd31ad55eb2b8c">ripple::Resource::gossipExpirationSeconds</a></div><div class="ttdeci">std::chrono::seconds constexpr gossipExpirationSeconds</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Tuning_8h_source.html#l00051">include/xrpl/resource/detail/Tuning.h:51</a></div></div>
<div class="ttc" id="anamespaceripple_1_1Resource_html_a6eae862122137342f77101165fff66da"><div class="ttname"><a href="namespaceripple_1_1Resource.html#a6eae862122137342f77101165fff66da">ripple::Resource::feeDrop</a></div><div class="ttdeci">Charge const feeDrop</div></div>
<div class="ttc" id="anamespaceripple_1_1Resource_html_a9bf0bd7a02008885350cc04739e105e3"><div class="ttname"><a href="namespaceripple_1_1Resource.html#a9bf0bd7a02008885350cc04739e105e3">ripple::Resource::feeWarning</a></div><div class="ttdeci">Charge const feeWarning</div></div>
<div class="ttc" id="anamespaceripple_1_1Resource_html_ac4da9b82372d6a029b9cb7329caa6f3ca5c408bda92d525f5d989365db1d6c1e3"><div class="ttname"><a href="namespaceripple_1_1Resource.html#ac4da9b82372d6a029b9cb7329caa6f3ca5c408bda92d525f5d989365db1d6c1e3">ripple::Resource::dropThreshold</a></div><div class="ttdeci">@ dropThreshold</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Tuning_8h_source.html#l00039">include/xrpl/resource/detail/Tuning.h:35</a></div></div>
<div class="ttc" id="anamespaceripple_1_1Resource_html_ac4da9b82372d6a029b9cb7329caa6f3caf2785714036c2bf9cddb23b9769d541b"><div class="ttname"><a href="namespaceripple_1_1Resource.html#ac4da9b82372d6a029b9cb7329caa6f3caf2785714036c2bf9cddb23b9769d541b">ripple::Resource::minimumGossipBalance</a></div><div class="ttdeci">@ minimumGossipBalance</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Tuning_8h_source.html#l00045">include/xrpl/resource/detail/Tuning.h:44</a></div></div>
<div class="ttc" id="anamespaceripple_1_1Resource_html_ac4da9b82372d6a029b9cb7329caa6f3caf9650eae9082653d5c5c741cfdb13d5f"><div class="ttname"><a href="namespaceripple_1_1Resource.html#ac4da9b82372d6a029b9cb7329caa6f3caf9650eae9082653d5c5c741cfdb13d5f">ripple::Resource::warningThreshold</a></div><div class="ttdeci">@ warningThreshold</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Tuning_8h_source.html#l00034">include/xrpl/resource/detail/Tuning.h:31</a></div></div>
<div class="ttc" id="anamespaceripple_1_1Resource_html_ae12997de115c1cf0032794aa5ea1b15d"><div class="ttname"><a href="namespaceripple_1_1Resource.html#ae12997de115c1cf0032794aa5ea1b15d">ripple::Resource::Disposition</a></div><div class="ttdeci">Disposition</div><div class="ttdoc">The disposition of a consumer after applying a load charge.</div><div class="ttdef"><b>Definition:</b> <a href="Disposition_8h_source.html#l00027">Disposition.h:27</a></div></div>
<div class="ttc" id="anamespaceripple_1_1Resource_html_ae12997de115c1cf0032794aa5ea1b15da34078bac5ac1af8f8cb7ab01d090c82e"><div class="ttname"><a href="namespaceripple_1_1Resource.html#ae12997de115c1cf0032794aa5ea1b15da34078bac5ac1af8f8cb7ab01d090c82e">ripple::Resource::drop</a></div><div class="ttdeci">@ drop</div><div class="ttdef"><b>Definition:</b> <a href="Disposition_8h_source.html#l00038">Disposition.h:37</a></div></div>
<div class="ttc" id="anamespaceripple_1_1Resource_html_ae12997de115c1cf0032794aa5ea1b15daadeb01a5ff7ccf891ad10c735db17661"><div class="ttname"><a href="namespaceripple_1_1Resource.html#ae12997de115c1cf0032794aa5ea1b15daadeb01a5ff7ccf891ad10c735db17661">ripple::Resource::ok</a></div><div class="ttdeci">@ ok</div><div class="ttdoc">No action required.</div><div class="ttdef"><b>Definition:</b> <a href="Disposition_8h_source.html#l00032">Disposition.h:29</a></div></div>
<div class="ttc" id="anamespaceripple_1_1Resource_html_ae12997de115c1cf0032794aa5ea1b15daeb2060f947d4923c9f750ee61eccf5ad"><div class="ttname"><a href="namespaceripple_1_1Resource.html#ae12997de115c1cf0032794aa5ea1b15daeb2060f947d4923c9f750ee61eccf5ad">ripple::Resource::warn</a></div><div class="ttdeci">@ warn</div><div class="ttdoc">Consumer should be disconnected for excess consumption.</div><div class="ttdef"><b>Definition:</b> <a href="Disposition_8h_source.html#l00036">Disposition.h:33</a></div></div>
<div class="ttc" id="anamespaceripple_1_1Resource_html_afb1e95c59140206fe975158f4cde3fd3"><div class="ttname"><a href="namespaceripple_1_1Resource.html#afb1e95c59140206fe975158f4cde3fd3">ripple::Resource::secondsUntilExpiration</a></div><div class="ttdeci">std::chrono::seconds constexpr secondsUntilExpiration</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Tuning_8h_source.html#l00048">include/xrpl/resource/detail/Tuning.h:48</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#l00026">algorithm.h:26</a></div></div>
<div class="ttc" id="anamespaceripple_html_abfbcd3fa60b2ddb83f5b2991900fe153"><div class="ttname"><a href="namespaceripple.html#abfbcd3fa60b2ddb83f5b2991900fe153">ripple::Stopwatch</a></div><div class="ttdeci">beast::abstract_clock&lt; std::chrono::steady_clock &gt; Stopwatch</div><div class="ttdoc">A clock for measuring elapsed time.</div><div class="ttdef"><b>Definition:</b> <a href="chrono_8h_source.html#l00113">chrono.h:113</a></div></div>
<div class="ttc" id="arecursive_mutex_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/recursive_mutex.html">std::recursive_mutex</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; Collector &gt;</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Entry_html"><div class="ttname"><a href="structripple_1_1Resource_1_1Entry.html">ripple::Resource::Entry</a></div><div class="ttdef"><b>Definition:</b> <a href="Entry_8h_source.html#l00037">Entry.h:38</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Entry_html_a0b974f298dfb9f160e73f4b6a84e5176"><div class="ttname"><a href="structripple_1_1Resource_1_1Entry.html#a0b974f298dfb9f160e73f4b6a84e5176">ripple::Resource::Entry::to_string</a></div><div class="ttdeci">std::string to_string() const</div><div class="ttdef"><b>Definition:</b> <a href="Entry_8h_source.html#l00054">Entry.h:54</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Entry_html_a36405d4dc065cdecf488e9e803220d23"><div class="ttname"><a href="structripple_1_1Resource_1_1Entry.html#a36405d4dc065cdecf488e9e803220d23">ripple::Resource::Entry::key</a></div><div class="ttdeci">Key const * key</div><div class="ttdef"><b>Definition:</b> <a href="Entry_8h_source.html#l00086">Entry.h:86</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Entry_html_a3e780c3b19c2c14ec472886ad9290a8c"><div class="ttname"><a href="structripple_1_1Resource_1_1Entry.html#a3e780c3b19c2c14ec472886ad9290a8c">ripple::Resource::Entry::refcount</a></div><div class="ttdeci">int refcount</div><div class="ttdef"><b>Definition:</b> <a href="Entry_8h_source.html#l00089">Entry.h:89</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Entry_html_a57a1414566dc5941f2ffd9986fced385"><div class="ttname"><a href="structripple_1_1Resource_1_1Entry.html#a57a1414566dc5941f2ffd9986fced385">ripple::Resource::Entry::isUnlimited</a></div><div class="ttdeci">bool isUnlimited() const</div><div class="ttdoc">Returns true if this connection should have no resource limits appliedit is still possible for certa...</div><div class="ttdef"><b>Definition:</b> <a href="Entry_8h_source.html#l00065">Entry.h:65</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Entry_html_a630a55b81eb0ae18c45e83b253bdbd05"><div class="ttname"><a href="structripple_1_1Resource_1_1Entry.html#a630a55b81eb0ae18c45e83b253bdbd05">ripple::Resource::Entry::add</a></div><div class="ttdeci">int add(int charge, clock_type::time_point const now)</div><div class="ttdef"><b>Definition:</b> <a href="Entry_8h_source.html#l00080">Entry.h:80</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Entry_html_a73c79c68a4fa07e44a288dbfda8501d5"><div class="ttname"><a href="structripple_1_1Resource_1_1Entry.html#a73c79c68a4fa07e44a288dbfda8501d5">ripple::Resource::Entry::balance</a></div><div class="ttdeci">int balance(clock_type::time_point const now)</div><div class="ttdef"><b>Definition:</b> <a href="Entry_8h_source.html#l00072">Entry.h:72</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Entry_html_a7f29a0594727601ebd4269bb6e217eca"><div class="ttname"><a href="structripple_1_1Resource_1_1Entry.html#a7f29a0594727601ebd4269bb6e217eca">ripple::Resource::Entry::whenExpires</a></div><div class="ttdeci">clock_type::time_point whenExpires</div><div class="ttdef"><b>Definition:</b> <a href="Entry_8h_source.html#l00101">Entry.h:101</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Entry_html_abc6e6439d972b598c2736e92cc3a13b6"><div class="ttname"><a href="structripple_1_1Resource_1_1Entry.html#abc6e6439d972b598c2736e92cc3a13b6">ripple::Resource::Entry::remote_balance</a></div><div class="ttdeci">int remote_balance</div><div class="ttdef"><b>Definition:</b> <a href="Entry_8h_source.html#l00095">Entry.h:95</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Entry_html_adc2dbd0b7399f896ac5e93d338e704f7"><div class="ttname"><a href="structripple_1_1Resource_1_1Entry.html#adc2dbd0b7399f896ac5e93d338e704f7">ripple::Resource::Entry::lastWarningTime</a></div><div class="ttdeci">clock_type::time_point lastWarningTime</div><div class="ttdef"><b>Definition:</b> <a href="Entry_8h_source.html#l00098">Entry.h:98</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Gossip_1_1Item_html"><div class="ttname"><a href="structripple_1_1Resource_1_1Gossip_1_1Item.html">ripple::Resource::Gossip::Item</a></div><div class="ttdoc">Describes a single consumer.</div><div class="ttdef"><b>Definition:</b> <a href="Gossip_8h_source.html#l00034">Gossip.h:35</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Gossip_1_1Item_html_a26ea56ffacbf146a58fe458c8a94cc3d"><div class="ttname"><a href="structripple_1_1Resource_1_1Gossip_1_1Item.html#a26ea56ffacbf146a58fe458c8a94cc3d">ripple::Resource::Gossip::Item::balance</a></div><div class="ttdeci">int balance</div><div class="ttdef"><b>Definition:</b> <a href="Gossip_8h_source.html#l00038">Gossip.h:38</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Gossip_1_1Item_html_a2da7a8b0b12fc95bdd8eaded4e65cb89"><div class="ttname"><a href="structripple_1_1Resource_1_1Gossip_1_1Item.html#a2da7a8b0b12fc95bdd8eaded4e65cb89">ripple::Resource::Gossip::Item::address</a></div><div class="ttdeci">beast::IP::Endpoint address</div><div class="ttdef"><b>Definition:</b> <a href="Gossip_8h_source.html#l00039">Gossip.h:39</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Gossip_html"><div class="ttname"><a href="structripple_1_1Resource_1_1Gossip.html">ripple::Resource::Gossip</a></div><div class="ttdoc">Data format for exchanging consumption information across peers.</div><div class="ttdef"><b>Definition:</b> <a href="Gossip_8h_source.html#l00029">Gossip.h:30</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Gossip_html_a8c788bd6a0e2d50da642c5b5f26e688f"><div class="ttname"><a href="structripple_1_1Resource_1_1Gossip.html#a8c788bd6a0e2d50da642c5b5f26e688f">ripple::Resource::Gossip::items</a></div><div class="ttdeci">std::vector&lt; Item &gt; items</div><div class="ttdef"><b>Definition:</b> <a href="Gossip_8h_source.html#l00042">Gossip.h:42</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Import_1_1Item_html"><div class="ttname"><a href="structripple_1_1Resource_1_1Import_1_1Item.html">ripple::Resource::Import::Item</a></div><div class="ttdef"><b>Definition:</b> <a href="Import_8h_source.html#l00032">Import.h:33</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Import_1_1Item_html_a57c30c59038c92c9cff4b3d291dd38e5"><div class="ttname"><a href="structripple_1_1Resource_1_1Import_1_1Item.html#a57c30c59038c92c9cff4b3d291dd38e5">ripple::Resource::Import::Item::balance</a></div><div class="ttdeci">int balance</div><div class="ttdef"><b>Definition:</b> <a href="Import_8h_source.html#l00036">Import.h:36</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Import_1_1Item_html_aa6de5d7c0a723a5c87524f68225974c5"><div class="ttname"><a href="structripple_1_1Resource_1_1Import_1_1Item.html#aa6de5d7c0a723a5c87524f68225974c5">ripple::Resource::Import::Item::consumer</a></div><div class="ttdeci">Consumer consumer</div><div class="ttdef"><b>Definition:</b> <a href="Import_8h_source.html#l00037">Import.h:37</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Import_html"><div class="ttname"><a href="structripple_1_1Resource_1_1Import.html">ripple::Resource::Import</a></div><div class="ttdoc">A set of imported consumer data from a gossip origin.</div><div class="ttdef"><b>Definition:</b> <a href="Import_8h_source.html#l00030">Import.h:31</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Key_html_afc16c2cbfed9837b2f1eb9554c0f21e3"><div class="ttname"><a href="structripple_1_1Resource_1_1Key.html#afc16c2cbfed9837b2f1eb9554c0f21e3">ripple::Resource::Key::kind</a></div><div class="ttdeci">Kind kind</div><div class="ttdef"><b>Definition:</b> <a href="Key_8h_source.html#l00033">Key.h:33</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Logic_1_1Stats_html"><div class="ttname"><a href="structripple_1_1Resource_1_1Logic_1_1Stats.html">ripple::Resource::Logic::Stats</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00048">include/xrpl/resource/detail/Logic.h:49</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Logic_1_1Stats_html_a71c447d75d99a75a1f792879c8adbf5e"><div class="ttname"><a href="structripple_1_1Resource_1_1Logic_1_1Stats.html#a71c447d75d99a75a1f792879c8adbf5e">ripple::Resource::Logic::Stats::Stats</a></div><div class="ttdeci">Stats(beast::insight::Collector::ptr const &amp;collector)</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00050">include/xrpl/resource/detail/Logic.h:50</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Logic_1_1Stats_html_ace41491c727163f20f54995ee50111ce"><div class="ttname"><a href="structripple_1_1Resource_1_1Logic_1_1Stats.html#ace41491c727163f20f54995ee50111ce">ripple::Resource::Logic::Stats::warn</a></div><div class="ttdeci">beast::insight::Meter warn</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00056">include/xrpl/resource/detail/Logic.h:56</a></div></div>
<div class="ttc" id="astructripple_1_1Resource_1_1Logic_1_1Stats_html_aec93f3c9ed7c4abe61430dc5afd6a01e"><div class="ttname"><a href="structripple_1_1Resource_1_1Logic_1_1Stats.html#aec93f3c9ed7c4abe61430dc5afd6a01e">ripple::Resource::Logic::Stats::drop</a></div><div class="ttdeci">beast::insight::Meter drop</div><div class="ttdef"><b>Definition:</b> <a href="include_2xrpl_2resource_2detail_2Logic_8h_source.html#l00057">include/xrpl/resource/detail/Logic.h:57</a></div></div>
<div class="ttc" id="aswap_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a></div><div class="ttdeci">T swap(T... args)</div></div>
<div class="ttc" id="aunordered_map_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_map.html">std::unordered_map</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.5
</small></address>
</body>
</html>