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

320 lines
18 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>rippled: ripple::PeerSet Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">rippled
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceripple.html">ripple</a></li><li class="navelem"><a class="el" href="classripple_1_1PeerSet.html">PeerSet</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classripple_1_1PeerSet-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">ripple::PeerSet Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div></div>
</div><!--header-->
<div class="contents">
<p>Supports data retrieval by managing a set of peers.
<a href="classripple_1_1PeerSet.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="PeerSet_8h_source.html">PeerSet.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ripple::PeerSet:</div>
<div class="dyncontent">
<div class="center"><img src="classripple_1_1PeerSet__inherit__graph.png" border="0" usemap="#aripple_1_1PeerSet_inherit__map" alt="Inheritance graph"/></div>
<map name="aripple_1_1PeerSet_inherit__map" id="aripple_1_1PeerSet_inherit__map">
<area shape="rect" title="Supports data retrieval by managing a set of peers." alt="" coords="214,5,331,31"/>
<area shape="rect" href="classripple_1_1DummyPeerSet.html" title=" " alt="" coords="5,79,175,104"/>
<area shape="poly" title=" " alt="" coords="232,38,121,81,119,76,230,33"/>
<area shape="rect" href="classripple_1_1PeerSetImpl.html" title=" " alt="" coords="199,79,346,104"/>
<area shape="poly" title=" " alt="" coords="275,44,275,79,270,79,270,44"/>
<area shape="rect" href="structripple_1_1test_1_1TestPeerSet.html" title="Simulate a peerSet that supplies peers to ledger replay subtasks." alt="" coords="370,79,546,104"/>
<area shape="poly" title=" " alt="" coords="316,33,429,76,427,81,314,38"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aed73adc53a472315823d2386af51012b" id="r_aed73adc53a472315823d2386af51012b"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1PeerSet.html#aed73adc53a472315823d2386af51012b">~PeerSet</a> ()=default</td></tr>
<tr class="separator:aed73adc53a472315823d2386af51012b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ec0f2c9ea5c123121145dfc61388c12" id="r_a3ec0f2c9ea5c123121145dfc61388c12"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1PeerSet.html#a3ec0f2c9ea5c123121145dfc61388c12">addPeers</a> (<a class="elRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> limit, <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a>&lt; bool(<a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1Peer.html">Peer</a> &gt; const &amp;)&gt; hasItem, <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a>&lt; void(<a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1Peer.html">Peer</a> &gt; const &amp;)&gt; onPeerAdded)=0</td></tr>
<tr class="memdesc:a3ec0f2c9ea5c123121145dfc61388c12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Try add more peers. <br /></td></tr>
<tr class="separator:a3ec0f2c9ea5c123121145dfc61388c12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a751ba29d7fa5e1411ddd406e84f84d67" id="r_a751ba29d7fa5e1411ddd406e84f84d67"><td class="memTemplParams" colspan="2">template&lt;typename MessageType &gt; </td></tr>
<tr class="memitem:a751ba29d7fa5e1411ddd406e84f84d67"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classripple_1_1PeerSet.html#a751ba29d7fa5e1411ddd406e84f84d67">sendRequest</a> (MessageType const &amp;message, <a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1Peer.html">Peer</a> &gt; const &amp;peer)</td></tr>
<tr class="memdesc:a751ba29d7fa5e1411ddd406e84f84d67"><td class="mdescLeft">&#160;</td><td class="mdescRight">send a message <br /></td></tr>
<tr class="separator:a751ba29d7fa5e1411ddd406e84f84d67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91ee198dcb5053d841a2d220ca662ba7" id="r_a91ee198dcb5053d841a2d220ca662ba7"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1PeerSet.html#a91ee198dcb5053d841a2d220ca662ba7">sendRequest</a> (::google::protobuf::Message const &amp;message, protocol::MessageType type, <a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1Peer.html">Peer</a> &gt; const &amp;peer)=0</td></tr>
<tr class="separator:a91ee198dcb5053d841a2d220ca662ba7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19e0c6ddb4adc29007d8702b8bd40916" id="r_a19e0c6ddb4adc29007d8702b8bd40916"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/container/set.html">std::set</a>&lt; <a class="el" href="classripple_1_1Peer.html#a56cc3cdd9c73921f23cb43a2bfa696a1">Peer::id_t</a> &gt; const &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1PeerSet.html#a19e0c6ddb4adc29007d8702b8bd40916">getPeerIds</a> () const =0</td></tr>
<tr class="memdesc:a19e0c6ddb4adc29007d8702b8bd40916"><td class="mdescLeft">&#160;</td><td class="mdescRight">get the set of ids of previously added peers <br /></td></tr>
<tr class="separator:a19e0c6ddb4adc29007d8702b8bd40916"><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>Supports data retrieval by managing a set of peers. </p>
<p>When desired data (such as a ledger or a transaction set) is missing locally it can be obtained by querying connected peers. This class manages common aspects of the retrieval. Callers maintain the set by adding and removing peers depending on whether the peers have useful information.</p>
<p>The data is represented by its hash. </p>
<p class="definition">Definition at line <a class="el" href="PeerSet_8h_source.html#l00020">20</a> of file <a class="el" href="PeerSet_8h_source.html">PeerSet.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aed73adc53a472315823d2386af51012b" name="aed73adc53a472315823d2386af51012b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed73adc53a472315823d2386af51012b">&#9670;&#160;</a></span>~PeerSet()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual ripple::PeerSet::~PeerSet </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="a3ec0f2c9ea5c123121145dfc61388c12" name="a3ec0f2c9ea5c123121145dfc61388c12"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ec0f2c9ea5c123121145dfc61388c12">&#9670;&#160;</a></span>addPeers()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void ripple::PeerSet::addPeers </td>
<td>(</td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a>&#160;</td>
<td class="paramname"><em>limit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a>&lt; bool(<a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1Peer.html">Peer</a> &gt; const &amp;)&gt;&#160;</td>
<td class="paramname"><em>hasItem</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a>&lt; void(<a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1Peer.html">Peer</a> &gt; const &amp;)&gt;&#160;</td>
<td class="paramname"><em>onPeerAdded</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Try add more peers. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">limit</td><td>number of peers to add </td></tr>
<tr><td class="paramname">hasItem</td><td>callback that helps to select peers </td></tr>
<tr><td class="paramname">onPeerAdded</td><td>callback called when a peer is added </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="structripple_1_1test_1_1TestPeerSet.html#a24a2832c1d285a0c81fb5411792645b8">ripple::test::TestPeerSet</a>, <a class="el" href="classripple_1_1PeerSetImpl.html#a3fa1774a60d7d1dd5e1049f627db3a36">ripple::PeerSetImpl</a>, and <a class="el" href="classripple_1_1DummyPeerSet.html#a3bdffec7a1fbc933d20a00b5ac17534d">ripple::DummyPeerSet</a>.</p>
</div>
</div>
<a id="a751ba29d7fa5e1411ddd406e84f84d67" name="a751ba29d7fa5e1411ddd406e84f84d67"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a751ba29d7fa5e1411ddd406e84f84d67">&#9670;&#160;</a></span>sendRequest() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename MessageType &gt; </div>
<table class="memname">
<tr>
<td class="memname">void ripple::PeerSet::sendRequest </td>
<td>(</td>
<td class="paramtype">MessageType const &amp;&#160;</td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1Peer.html">Peer</a> &gt; const &amp;&#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>send a message </p>
<p class="definition">Definition at line <a class="el" href="PeerSet_8h_source.html#l00040">40</a> of file <a class="el" href="PeerSet_8h_source.html">PeerSet.h</a>.</p>
</div>
</div>
<a id="a91ee198dcb5053d841a2d220ca662ba7" name="a91ee198dcb5053d841a2d220ca662ba7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91ee198dcb5053d841a2d220ca662ba7">&#9670;&#160;</a></span>sendRequest() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void ripple::PeerSet::sendRequest </td>
<td>(</td>
<td class="paramtype">::google::protobuf::Message const &amp;&#160;</td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">protocol::MessageType&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>&lt; <a class="el" href="classripple_1_1Peer.html">Peer</a> &gt; const &amp;&#160;</td>
<td class="paramname"><em>peer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Implemented in <a class="el" href="classripple_1_1PeerSetImpl.html#a7b81fc46938e71c3af2befee4ea824a8">ripple::PeerSetImpl</a>, <a class="el" href="classripple_1_1DummyPeerSet.html#a4caf45ed3abda910abd2a6193e1f5ff3">ripple::DummyPeerSet</a>, and <a class="el" href="structripple_1_1test_1_1TestPeerSet.html#a7cd356ffd4275c4238124677dbe992d3">ripple::test::TestPeerSet</a>.</p>
</div>
</div>
<a id="a19e0c6ddb4adc29007d8702b8bd40916" name="a19e0c6ddb4adc29007d8702b8bd40916"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19e0c6ddb4adc29007d8702b8bd40916">&#9670;&#160;</a></span>getPeerIds()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/container/set.html">std::set</a>&lt; <a class="el" href="classripple_1_1Peer.html#a56cc3cdd9c73921f23cb43a2bfa696a1">Peer::id_t</a> &gt; const &amp; ripple::PeerSet::getPeerIds </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>get the set of ids of previously added peers </p>
<p>Implemented in <a class="el" href="structripple_1_1test_1_1TestPeerSet.html#ae2219852ebf7c6a76cbe930b76780811">ripple::test::TestPeerSet</a>, <a class="el" href="classripple_1_1PeerSetImpl.html#ab7f50468a49ec1710f95fcb42fce10b1">ripple::PeerSetImpl</a>, and <a class="el" href="classripple_1_1DummyPeerSet.html#a702cd2490b72fa679e9fd452fdc94008">ripple::DummyPeerSet</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>