Files
rippled/classripple_1_1HashRouter.html
2025-05-29 21:00:28 +00:00

625 lines
37 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.5"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>rippled: ripple::HashRouter Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">rippled
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.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="namespaceripple.html">ripple</a></li><li class="navelem"><a class="el" href="classripple_1_1HashRouter.html">HashRouter</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classripple_1_1HashRouter-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">ripple::HashRouter Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Routing table for objects identified by hash.
<a href="classripple_1_1HashRouter.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="HashRouter_8h_source.html">HashRouter.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for ripple::HashRouter:</div>
<div class="dyncontent">
<div class="center"><img src="classripple_1_1HashRouter__coll__graph.png" border="0" usemap="#aripple_1_1HashRouter_coll__map" alt="Collaboration graph"/></div>
<map name="aripple_1_1HashRouter_coll__map" id="aripple_1_1HashRouter_coll__map">
<area shape="rect" title="Routing table for objects identified by hash." alt="" coords="1435,96,1577,121"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/thread/mutex.html" title=" " alt="" coords="1084,39,1176,64"/>
<area shape="rect" href="structripple_1_1HashRouter_1_1Setup.html" title="Structure used to customize HashRouter behavior." alt="" coords="1059,89,1201,129"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/chrono/duration.html" title=" " alt="" coords="600,49,755,75"/>
<area shape="rect" href="classbeast_1_1detail_1_1aged__unordered__container.html" title=" " alt="" coords="991,199,1269,298"/>
<area shape="rect" href="classbeast_1_1detail_1_1aged__unordered__container_1_1chronological__t.html" title=" " alt="" coords="574,99,781,183"/>
<area shape="rect" href="classbeast_1_1detail_1_1aged__unordered__container_1_1config__t.html" title=" " alt="" coords="582,207,773,291"/>
<area shape="rect" href="classbeast_1_1detail_1_1aged__unordered__container_1_1ValueHash.html" title=" " alt="" coords="203,5,394,89"/>
<area shape="rect" title=" " alt="" coords="45,35,100,60"/>
<area shape="rect" href="classbeast_1_1detail_1_1aged__unordered__container_1_1KeyValueEqual.html" title=" " alt="" coords="197,113,400,197"/>
<area shape="rect" title=" " alt="" coords="31,143,114,168"/>
<area shape="rect" href="classbeast_1_1detail_1_1empty__base__optimization.html" title=" " alt="" coords="189,221,408,276"/>
<area shape="rect" title=" " alt="" coords="5,236,140,261"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/utility/functional/reference_wrapper.html" title=" " alt="" coords="203,301,394,341"/>
<area shape="rect" href="classbeast_1_1detail_1_1aged__unordered__container_1_1Buckets.html" title=" " alt="" coords="582,315,773,399"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/container/vector.html" title=" " alt="" coords="198,365,399,449"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/types/conditional.html" title=" " alt="" coords="504,423,851,639"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter_1_1Entry.html">Entry</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An entry in the routing table. <a href="classripple_1_1HashRouter_1_1Entry.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structripple_1_1HashRouter_1_1Setup.html">Setup</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure used to customize <a class="el" href="classripple_1_1HashRouter.html">HashRouter</a> behavior. <a href="structripple_1_1HashRouter_1_1Setup.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:ae1bb71697fff314fed4cdffde40d581e"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#ae1bb71697fff314fed4cdffde40d581e">PeerShortID</a> = <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a></td></tr>
<tr class="separator:ae1bb71697fff314fed4cdffde40d581e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ab92a77a3cef7ecb5a22992141db1e87a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#ab92a77a3cef7ecb5a22992141db1e87a">HashRouter</a> (<a class="el" href="structripple_1_1HashRouter_1_1Setup.html">Setup</a> const &amp;setup, <a class="el" href="namespaceripple.html#abfbcd3fa60b2ddb83f5b2991900fe153">Stopwatch</a> &amp;clock)</td></tr>
<tr class="separator:ab92a77a3cef7ecb5a22992141db1e87a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae7731ba4560541aaedde24f06290551"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1HashRouter.html">HashRouter</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#aae7731ba4560541aaedde24f06290551">operator=</a> (<a class="el" href="classripple_1_1HashRouter.html">HashRouter</a> const &amp;)=delete</td></tr>
<tr class="separator:aae7731ba4560541aaedde24f06290551"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d75b6afc4fb2aa4b1f7e6b9f3f497e2"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#a7d75b6afc4fb2aa4b1f7e6b9f3f497e2">~HashRouter</a> ()=default</td></tr>
<tr class="separator:a7d75b6afc4fb2aa4b1f7e6b9f3f497e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af21ce5a3efbbd0d4e7eca2685b6af1c6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#af21ce5a3efbbd0d4e7eca2685b6af1c6">addSuppression</a> (<a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;key)</td></tr>
<tr class="separator:af21ce5a3efbbd0d4e7eca2685b6af1c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86c862f1b0722d061b3724ff34a53572"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#a86c862f1b0722d061b3724ff34a53572">addSuppressionPeer</a> (<a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;key, <a class="el" href="classripple_1_1HashRouter.html#ae1bb71697fff314fed4cdffde40d581e">PeerShortID</a> peer)</td></tr>
<tr class="separator:a86c862f1b0722d061b3724ff34a53572"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7ef4afb150d0fda3aa3e97e3d23fe2a"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; bool, <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt; <a class="el" href="classbeast_1_1abstract__clock.html#a4e16832b0bdf9392c5138bbbde024d8e">Stopwatch::time_point</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#aa7ef4afb150d0fda3aa3e97e3d23fe2a">addSuppressionPeerWithStatus</a> (<a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;key, <a class="el" href="classripple_1_1HashRouter.html#ae1bb71697fff314fed4cdffde40d581e">PeerShortID</a> peer)</td></tr>
<tr class="memdesc:aa7ef4afb150d0fda3aa3e97e3d23fe2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a suppression peer and get message's relay status. <a href="classripple_1_1HashRouter.html#aa7ef4afb150d0fda3aa3e97e3d23fe2a">More...</a><br /></td></tr>
<tr class="separator:aa7ef4afb150d0fda3aa3e97e3d23fe2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac29c2160c4d24ff6536c5a562b627a4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#aac29c2160c4d24ff6536c5a562b627a4">addSuppressionPeer</a> (<a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;key, <a class="el" href="classripple_1_1HashRouter.html#ae1bb71697fff314fed4cdffde40d581e">PeerShortID</a> peer, int &amp;flags)</td></tr>
<tr class="separator:aac29c2160c4d24ff6536c5a562b627a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a2ef462b7dc7e845d7c0fa55cdb3665"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#a2a2ef462b7dc7e845d7c0fa55cdb3665">shouldProcess</a> (<a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;key, <a class="el" href="classripple_1_1HashRouter.html#ae1bb71697fff314fed4cdffde40d581e">PeerShortID</a> peer, int &amp;flags, <a class="elRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::seconds</a> tx_interval)</td></tr>
<tr class="separator:a2a2ef462b7dc7e845d7c0fa55cdb3665"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac43309b8c10713823bdc233f39931472"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#ac43309b8c10713823bdc233f39931472">setFlags</a> (<a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;key, int flags)</td></tr>
<tr class="memdesc:ac43309b8c10713823bdc233f39931472"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the flags on a hash. <a href="classripple_1_1HashRouter.html#ac43309b8c10713823bdc233f39931472">More...</a><br /></td></tr>
<tr class="separator:ac43309b8c10713823bdc233f39931472"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34019a21932ce1a1c6850da761d8bbb6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#a34019a21932ce1a1c6850da761d8bbb6">getFlags</a> (<a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;key)</td></tr>
<tr class="separator:a34019a21932ce1a1c6850da761d8bbb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29980c0f77dcc002ef322c23080f3266"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt; <a class="elRef" href="http://en.cppreference.com/w/cpp/container/set.html">std::set</a>&lt; <a class="el" href="classripple_1_1HashRouter.html#ae1bb71697fff314fed4cdffde40d581e">PeerShortID</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#a29980c0f77dcc002ef322c23080f3266">shouldRelay</a> (<a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;key)</td></tr>
<tr class="memdesc:a29980c0f77dcc002ef322c23080f3266"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines whether the hashed item should be relayed. <a href="classripple_1_1HashRouter.html#a29980c0f77dcc002ef322c23080f3266">More...</a><br /></td></tr>
<tr class="separator:a29980c0f77dcc002ef322c23080f3266"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:ad292b17376920b23d1ee3748f2b76d76"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="el" href="classripple_1_1HashRouter_1_1Entry.html">Entry</a> &amp;, bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#ad292b17376920b23d1ee3748f2b76d76">emplace</a> (<a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;)</td></tr>
<tr class="separator:ad292b17376920b23d1ee3748f2b76d76"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a311812f9ac5539ce4d2f500283d67c96"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/thread/mutex.html">std::mutex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#a311812f9ac5539ce4d2f500283d67c96">mutex_</a></td></tr>
<tr class="separator:a311812f9ac5539ce4d2f500283d67c96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8763061841ab69068e159b458bf07a43"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structripple_1_1HashRouter_1_1Setup.html">Setup</a> const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#a8763061841ab69068e159b458bf07a43">setup_</a></td></tr>
<tr class="separator:a8763061841ab69068e159b458bf07a43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b438816ee148190c798135febda93eb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacebeast.html#af6181fa93ab6095c2364cc166ad6eca3">beast::aged_unordered_map</a>&lt; <a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>, <a class="el" href="classripple_1_1HashRouter_1_1Entry.html">Entry</a>, <a class="el" href="classbeast_1_1abstract__clock.html#ab2db1e4273a58b6431b330e3c5ebd07f">Stopwatch::clock_type</a>, <a class="el" href="classripple_1_1hardened__hash.html">hardened_hash</a>&lt; <a class="el" href="namespaceripple.html#ac9b07f23404494644c7cfe94facbdd4b">strong_hash</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1HashRouter.html#a1b438816ee148190c798135febda93eb">suppressionMap_</a></td></tr>
<tr class="separator:a1b438816ee148190c798135febda93eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p >Routing table for objects identified by hash. </p>
<p >This table keeps track of which hashes have been received by which peers. It is used to manage the routing and broadcasting of messages in the peer to peer overlay. </p>
<p class="definition">Definition at line <a class="el" href="HashRouter_8h_source.html#l00056">56</a> of file <a class="el" href="HashRouter_8h_source.html">HashRouter.h</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="ae1bb71697fff314fed4cdffde40d581e" name="ae1bb71697fff314fed4cdffde40d581e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1bb71697fff314fed4cdffde40d581e">&#9670;&#160;</a></span>PeerShortID</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classripple_1_1HashRouter.html#ae1bb71697fff314fed4cdffde40d581e">ripple::HashRouter::PeerShortID</a> = <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="HashRouter_8h_source.html#l00060">60</a> of file <a class="el" href="HashRouter_8h_source.html">HashRouter.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ab92a77a3cef7ecb5a22992141db1e87a" name="ab92a77a3cef7ecb5a22992141db1e87a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab92a77a3cef7ecb5a22992141db1e87a">&#9670;&#160;</a></span>HashRouter()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ripple::HashRouter::HashRouter </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structripple_1_1HashRouter_1_1Setup.html">Setup</a> const &amp;&#160;</td>
<td class="paramname"><em>setup</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespaceripple.html#abfbcd3fa60b2ddb83f5b2991900fe153">Stopwatch</a> &amp;&#160;</td>
<td class="paramname"><em>clock</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="HashRouter_8h_source.html#l00165">165</a> of file <a class="el" href="HashRouter_8h_source.html">HashRouter.h</a>.</p>
</div>
</div>
<a id="a7d75b6afc4fb2aa4b1f7e6b9f3f497e2" name="a7d75b6afc4fb2aa4b1f7e6b9f3f497e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d75b6afc4fb2aa4b1f7e6b9f3f497e2">&#9670;&#160;</a></span>~HashRouter()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual ripple::HashRouter::~HashRouter </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aae7731ba4560541aaedde24f06290551" name="aae7731ba4560541aaedde24f06290551"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae7731ba4560541aaedde24f06290551">&#9670;&#160;</a></span>operator=()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1HashRouter.html">HashRouter</a> &amp; ripple::HashRouter::operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1HashRouter.html">HashRouter</a> const &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af21ce5a3efbbd0d4e7eca2685b6af1c6" name="af21ce5a3efbbd0d4e7eca2685b6af1c6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af21ce5a3efbbd0d4e7eca2685b6af1c6">&#9670;&#160;</a></span>addSuppression()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ripple::HashRouter::addSuppression </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;&#160;</td>
<td class="paramname"><em>key</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="HashRouter_8cpp_source.html#l00044">44</a> of file <a class="el" href="HashRouter_8cpp_source.html">HashRouter.cpp</a>.</p>
</div>
</div>
<a id="a86c862f1b0722d061b3724ff34a53572" name="a86c862f1b0722d061b3724ff34a53572"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86c862f1b0722d061b3724ff34a53572">&#9670;&#160;</a></span>addSuppressionPeer() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ripple::HashRouter::addSuppressionPeer </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1HashRouter.html#ae1bb71697fff314fed4cdffde40d581e">PeerShortID</a>&#160;</td>
<td class="paramname"><em>peer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="HashRouter_8cpp_source.html#l00052">52</a> of file <a class="el" href="HashRouter_8cpp_source.html">HashRouter.cpp</a>.</p>
</div>
</div>
<a id="aa7ef4afb150d0fda3aa3e97e3d23fe2a" name="aa7ef4afb150d0fda3aa3e97e3d23fe2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7ef4afb150d0fda3aa3e97e3d23fe2a">&#9670;&#160;</a></span>addSuppressionPeerWithStatus()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; bool, <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt; <a class="el" href="classbeast_1_1abstract__clock.html#a4e16832b0bdf9392c5138bbbde024d8e">Stopwatch::time_point</a> &gt; &gt; ripple::HashRouter::addSuppressionPeerWithStatus </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1HashRouter.html#ae1bb71697fff314fed4cdffde40d581e">PeerShortID</a>&#160;</td>
<td class="paramname"><em>peer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a suppression peer and get message's relay status. </p>
<p >Return pair: element 1: true if the peer is added. element 2: optional is seated to the relay time point or is unseated if has not relayed yet. </p>
<p class="definition">Definition at line <a class="el" href="HashRouter_8cpp_source.html#l00058">58</a> of file <a class="el" href="HashRouter_8cpp_source.html">HashRouter.cpp</a>.</p>
</div>
</div>
<a id="aac29c2160c4d24ff6536c5a562b627a4" name="aac29c2160c4d24ff6536c5a562b627a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac29c2160c4d24ff6536c5a562b627a4">&#9670;&#160;</a></span>addSuppressionPeer() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ripple::HashRouter::addSuppressionPeer </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1HashRouter.html#ae1bb71697fff314fed4cdffde40d581e">PeerShortID</a>&#160;</td>
<td class="paramname"><em>peer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>flags</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="HashRouter_8cpp_source.html#l00068">68</a> of file <a class="el" href="HashRouter_8cpp_source.html">HashRouter.cpp</a>.</p>
</div>
</div>
<a id="a2a2ef462b7dc7e845d7c0fa55cdb3665" name="a2a2ef462b7dc7e845d7c0fa55cdb3665"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a2ef462b7dc7e845d7c0fa55cdb3665">&#9670;&#160;</a></span>shouldProcess()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ripple::HashRouter::shouldProcess </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1HashRouter.html#ae1bb71697fff314fed4cdffde40d581e">PeerShortID</a>&#160;</td>
<td class="paramname"><em>peer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>flags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::seconds</a>&#160;</td>
<td class="paramname"><em>tx_interval</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="HashRouter_8cpp_source.html#l00079">79</a> of file <a class="el" href="HashRouter_8cpp_source.html">HashRouter.cpp</a>.</p>
</div>
</div>
<a id="ac43309b8c10713823bdc233f39931472" name="ac43309b8c10713823bdc233f39931472"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac43309b8c10713823bdc233f39931472">&#9670;&#160;</a></span>setFlags()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ripple::HashRouter::setFlags </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>flags</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the flags on a hash. </p>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the flags were changed. <code>false</code> if unchanged. </dd></dl>
<p class="definition">Definition at line <a class="el" href="HashRouter_8cpp_source.html#l00103">103</a> of file <a class="el" href="HashRouter_8cpp_source.html">HashRouter.cpp</a>.</p>
</div>
</div>
<a id="a34019a21932ce1a1c6850da761d8bbb6" name="a34019a21932ce1a1c6850da761d8bbb6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a34019a21932ce1a1c6850da761d8bbb6">&#9670;&#160;</a></span>getFlags()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ripple::HashRouter::getFlags </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;&#160;</td>
<td class="paramname"><em>key</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="HashRouter_8cpp_source.html#l00095">95</a> of file <a class="el" href="HashRouter_8cpp_source.html">HashRouter.cpp</a>.</p>
</div>
</div>
<a id="a29980c0f77dcc002ef322c23080f3266" name="a29980c0f77dcc002ef322c23080f3266"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a29980c0f77dcc002ef322c23080f3266">&#9670;&#160;</a></span>shouldRelay()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">auto ripple::HashRouter::shouldRelay </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;&#160;</td>
<td class="paramname"><em>key</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Determines whether the hashed item should be relayed. </p>
<p >Effects: </p><pre class="fragment">If the item should be relayed, this function will not
return a seated optional again until the relay time has expired.
The internal set of peers will also be reset.
</pre> <dl class="section return"><dt>Returns</dt><dd>A <code><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a></code> set of peers which do not need to be relayed to. If the result is unseated, the item should <em>not</em> be relayed. </dd></dl>
<p class="definition">Definition at line <a class="el" href="HashRouter_8cpp_source.html#l00119">119</a> of file <a class="el" href="HashRouter_8cpp_source.html">HashRouter.cpp</a>.</p>
</div>
</div>
<a id="ad292b17376920b23d1ee3748f2b76d76" name="ad292b17376920b23d1ee3748f2b76d76"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad292b17376920b23d1ee3748f2b76d76">&#9670;&#160;</a></span>emplace()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto ripple::HashRouter::emplace </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> const &amp;&#160;</td>
<td class="paramname"><em>key</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="HashRouter_8cpp_source.html#l00026">26</a> of file <a class="el" href="HashRouter_8cpp_source.html">HashRouter.cpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a311812f9ac5539ce4d2f500283d67c96" name="a311812f9ac5539ce4d2f500283d67c96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a311812f9ac5539ce4d2f500283d67c96">&#9670;&#160;</a></span>mutex_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/thread/mutex.html">std::mutex</a> ripple::HashRouter::mutex_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">mutable</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="HashRouter_8h_source.html#l00232">232</a> of file <a class="el" href="HashRouter_8h_source.html">HashRouter.h</a>.</p>
</div>
</div>
<a id="a8763061841ab69068e159b458bf07a43" name="a8763061841ab69068e159b458bf07a43"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8763061841ab69068e159b458bf07a43">&#9670;&#160;</a></span>setup_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structripple_1_1HashRouter_1_1Setup.html">Setup</a> const ripple::HashRouter::setup_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="HashRouter_8h_source.html#l00235">235</a> of file <a class="el" href="HashRouter_8h_source.html">HashRouter.h</a>.</p>
</div>
</div>
<a id="a1b438816ee148190c798135febda93eb" name="a1b438816ee148190c798135febda93eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b438816ee148190c798135febda93eb">&#9670;&#160;</a></span>suppressionMap_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacebeast.html#af6181fa93ab6095c2364cc166ad6eca3">beast::aged_unordered_map</a>&lt; <a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a>, <a class="el" href="classripple_1_1HashRouter_1_1Entry.html">Entry</a>, <a class="el" href="classbeast_1_1abstract__clock.html#ab2db1e4273a58b6431b330e3c5ebd07f">Stopwatch::clock_type</a>, <a class="el" href="classripple_1_1hardened__hash.html">hardened_hash</a>&lt;<a class="el" href="namespaceripple.html#ac9b07f23404494644c7cfe94facbdd4b">strong_hash</a>&gt; &gt; ripple::HashRouter::suppressionMap_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="HashRouter_8h_source.html#l00243">243</a> of file <a class="el" href="HashRouter_8h_source.html">HashRouter.h</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.5
</small></address>
</body>
</html>