mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
2086 lines
129 KiB
HTML
2086 lines
129 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.17"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>rippled: ripple::Consensus< Adaptor > Class Template 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 style="height: 56px;">
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">rippled
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.17 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search');
|
|
$(document).ready(function() { init_search(); });
|
|
});
|
|
/* @license-end */</script>
|
|
<div id="main-nav"></div>
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div id="nav-path" class="navpath">
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="namespaceripple.html">ripple</a></li><li class="navelem"><a class="el" href="classripple_1_1Consensus.html">Consensus</a></li> </ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#nested-classes">Classes</a> |
|
|
<a href="#pub-types">Public Types</a> |
|
|
<a href="#pub-methods">Public Member Functions</a> |
|
|
<a href="#pri-types">Private Types</a> |
|
|
<a href="#pri-methods">Private Member Functions</a> |
|
|
<a href="#pri-attribs">Private Attributes</a> |
|
|
<a href="classripple_1_1Consensus-members.html">List of all members</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">ripple::Consensus< Adaptor > Class Template Reference</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>Generic implementation of consensus algorithm.
|
|
<a href="classripple_1_1Consensus.html#details">More...</a></p>
|
|
<div class="dynheader">
|
|
Collaboration diagram for ripple::Consensus< Adaptor >:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="classripple_1_1Consensus__coll__graph.png" border="0" usemap="#ripple_1_1Consensus_3_01Adaptor_01_4_coll__map" alt="Collaboration graph"/></div>
|
|
<map name="ripple_1_1Consensus_3_01Adaptor_01_4_coll__map" id="ripple_1_1Consensus_3_01Adaptor_01_4_coll__map">
|
|
<area shape="rect" title="Generic implementation of consensus algorithm." alt="" coords="991,457,1139,498"/>
|
|
<area shape="rect" href="http://en.cppreference.com/w/cpp/container/unordered_map.html" title=" " alt="" coords="608,5,781,61"/>
|
|
<area shape="rect" href="http://en.cppreference.com/w/cpp/container/deque.html" title=" " alt="" coords="261,16,475,43"/>
|
|
<area shape="rect" href="structripple_1_1ConsensusCloseTimes.html" title="Stores the set of initial close times." alt="" coords="588,91,801,117"/>
|
|
<area shape="rect" href="http://en.cppreference.com/w/cpp/container/map.html" title=" " alt="" coords="285,67,451,109"/>
|
|
<area shape="rect" href="http://en.cppreference.com/w/cpp/chrono/time_point.html" title=" " alt="" coords="5,75,177,101"/>
|
|
<area shape="rect" href="http://en.cppreference.com/w/cpp/chrono/time_point.html" title=" " alt="" coords="282,142,454,183"/>
|
|
<area shape="rect" href="classbeast_1_1abstract__clock.html" title=" " alt="" coords="614,219,775,275"/>
|
|
<area shape="rect" href="http://en.cppreference.com/w/cpp/chrono/duration.html" title=" " alt="" coords="276,324,460,351"/>
|
|
<area shape="rect" href="classripple_1_1ConsensusTimer.html" title="Measures the duration of phases of consensus." alt="" coords="607,361,782,388"/>
|
|
<area shape="rect" href="http://en.cppreference.com/w/cpp/container/unordered_map.html" title=" " alt="" coords="613,412,777,468"/>
|
|
<area shape="rect" href="http://en.cppreference.com/w/cpp/chrono/duration.html" title=" " alt="" coords="617,493,773,534"/>
|
|
<area shape="rect" href="http://en.cppreference.com/w/cpp/types/size_t.html" title=" " alt="" coords="651,559,739,585"/>
|
|
<area shape="rect" href="http://en.cppreference.com/w/cpp/container/unordered_map.html" title=" " alt="" coords="588,610,801,651"/>
|
|
<area shape="rect" href="classbeast_1_1Journal.html" title="A generic endpoint for log messages." alt="" coords="639,676,750,703"/>
|
|
<area shape="rect" href="classbeast_1_1Journal_1_1Sink.html" title="Abstraction for the underlying message destination." alt="" coords="295,676,441,703"/>
|
|
<area shape="rect" href="http://en.cppreference.com/w/cpp/container/unordered_set.html" title=" " alt="" coords="623,727,766,769"/>
|
|
<area shape="rect" href="http://en.cppreference.com/w/cpp/utility/optional.html" title=" " alt="" coords="617,793,772,834"/>
|
|
<area shape="rect" href="classripple_1_1Consensus_1_1MonitoredMode.html" title=" " alt="" coords="595,858,795,899"/>
|
|
</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 name="nested-classes"></a>
|
|
Classes</h2></td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus_1_1MonitoredMode.html">MonitoredMode</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
|
|
Public Types</h2></td></tr>
|
|
<tr class="memitem:afe915e894470ce19e551b21b503826ed"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#afe915e894470ce19e551b21b503826ed">clock_type</a> = <a class="el" href="classbeast_1_1abstract__clock.html">beast::abstract_clock</a>< <a class="elRef" href="http://en.cppreference.com/w/cpp/chrono/steady_clock.html">std::chrono::steady_clock</a> ></td></tr>
|
|
<tr class="memdesc:afe915e894470ce19e551b21b503826ed"><td class="mdescLeft"> </td><td class="mdescRight">Clock type for measuring time within the consensus code. <a href="classripple_1_1Consensus.html#afe915e894470ce19e551b21b503826ed">More...</a><br /></td></tr>
|
|
<tr class="separator:afe915e894470ce19e551b21b503826ed"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
|
Public Member Functions</h2></td></tr>
|
|
<tr class="memitem:a837ef9ac79284d6eb64d0ca4c5dd13bc"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a837ef9ac79284d6eb64d0ca4c5dd13bc">Consensus</a> (<a class="el" href="classripple_1_1Consensus.html">Consensus</a> &&) noexcept=default</td></tr>
|
|
<tr class="separator:a837ef9ac79284d6eb64d0ca4c5dd13bc"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ade8b4954a44f6b8bc30afbd0415704db"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#ade8b4954a44f6b8bc30afbd0415704db">Consensus</a> (<a class="el" href="classripple_1_1Consensus.html#afe915e894470ce19e551b21b503826ed">clock_type</a> const &clock, Adaptor &adaptor, <a class="el" href="classbeast_1_1Journal.html">beast::Journal</a> j)</td></tr>
|
|
<tr class="memdesc:ade8b4954a44f6b8bc30afbd0415704db"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="classripple_1_1Consensus.html#ade8b4954a44f6b8bc30afbd0415704db">More...</a><br /></td></tr>
|
|
<tr class="separator:ade8b4954a44f6b8bc30afbd0415704db"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae860970b8a78fda5497221c1a8bf1b98"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#ae860970b8a78fda5497221c1a8bf1b98">startRound</a> (<a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> const &now, typename Ledger_t::ID const &<a class="el" href="classripple_1_1Consensus.html#a641a3e0e3bb00ef33619c4ef9a26bbed">prevLedgerID</a>, <a class="el" href="classripple_1_1Consensus.html#ab3549c5ca51ce1c6fcbb4ed8ccc65d75">Ledger_t</a> prevLedger, <a class="el" href="namespaceripple.html#a7750eec5e079354285f1d60cfd0247ca">hash_set</a>< <a class="el" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a> > const &nowUntrusted, bool proposing)</td></tr>
|
|
<tr class="memdesc:ae860970b8a78fda5497221c1a8bf1b98"><td class="mdescLeft"> </td><td class="mdescRight">Kick-off the next round of consensus. <a href="classripple_1_1Consensus.html#ae860970b8a78fda5497221c1a8bf1b98">More...</a><br /></td></tr>
|
|
<tr class="separator:ae860970b8a78fda5497221c1a8bf1b98"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac847edb496ffd3e8cecf636c56ccb0b0"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#ac847edb496ffd3e8cecf636c56ccb0b0">peerProposal</a> (<a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> const &now, <a class="el" href="classripple_1_1Consensus.html#a357a8b2f6eadd8e3c50da583189d4555">PeerPosition_t</a> const &newProposal)</td></tr>
|
|
<tr class="memdesc:ac847edb496ffd3e8cecf636c56ccb0b0"><td class="mdescLeft"> </td><td class="mdescRight">A peer has proposed a new position, adjust our tracking. <a href="classripple_1_1Consensus.html#ac847edb496ffd3e8cecf636c56ccb0b0">More...</a><br /></td></tr>
|
|
<tr class="separator:ac847edb496ffd3e8cecf636c56ccb0b0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a1d3b6552f4cbf49c31cf7032d68bfbce"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a1d3b6552f4cbf49c31cf7032d68bfbce">timerEntry</a> (<a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> const &now)</td></tr>
|
|
<tr class="memdesc:a1d3b6552f4cbf49c31cf7032d68bfbce"><td class="mdescLeft"> </td><td class="mdescRight">Call periodically to drive consensus forward. <a href="classripple_1_1Consensus.html#a1d3b6552f4cbf49c31cf7032d68bfbce">More...</a><br /></td></tr>
|
|
<tr class="separator:a1d3b6552f4cbf49c31cf7032d68bfbce"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9dffbdf2708f81eee49bed08891a7b9a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a9dffbdf2708f81eee49bed08891a7b9a">gotTxSet</a> (<a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> const &now, <a class="el" href="classripple_1_1Consensus.html#a524b889667609917d080a6ec775ab2e4">TxSet_t</a> const &txSet)</td></tr>
|
|
<tr class="memdesc:a9dffbdf2708f81eee49bed08891a7b9a"><td class="mdescLeft"> </td><td class="mdescRight">Process a transaction set acquired from the network. <a href="classripple_1_1Consensus.html#a9dffbdf2708f81eee49bed08891a7b9a">More...</a><br /></td></tr>
|
|
<tr class="separator:a9dffbdf2708f81eee49bed08891a7b9a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6d167e182528e6ba3192a40c8de4eae5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a6d167e182528e6ba3192a40c8de4eae5">simulate</a> (<a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> const &now, <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>< <a class="elRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::milliseconds</a> > consensusDelay)</td></tr>
|
|
<tr class="memdesc:a6d167e182528e6ba3192a40c8de4eae5"><td class="mdescLeft"> </td><td class="mdescRight">Simulate the consensus process without any network traffic. <a href="classripple_1_1Consensus.html#a6d167e182528e6ba3192a40c8de4eae5">More...</a><br /></td></tr>
|
|
<tr class="separator:a6d167e182528e6ba3192a40c8de4eae5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a641a3e0e3bb00ef33619c4ef9a26bbed"><td class="memItemLeft" align="right" valign="top">Ledger_t::ID </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a641a3e0e3bb00ef33619c4ef9a26bbed">prevLedgerID</a> () const</td></tr>
|
|
<tr class="memdesc:a641a3e0e3bb00ef33619c4ef9a26bbed"><td class="mdescLeft"> </td><td class="mdescRight">Get the previous ledger ID. <a href="classripple_1_1Consensus.html#a641a3e0e3bb00ef33619c4ef9a26bbed">More...</a><br /></td></tr>
|
|
<tr class="separator:a641a3e0e3bb00ef33619c4ef9a26bbed"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ab3d8f48bde5fac064433c5fb02187ec4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceripple.html#a77adb10ef53a2e25195ccd38b46bfe9b">ConsensusPhase</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#ab3d8f48bde5fac064433c5fb02187ec4">phase</a> () const</td></tr>
|
|
<tr class="separator:ab3d8f48bde5fac064433c5fb02187ec4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6e81235f0c5f91c23cbe1938ffe8a9e3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classJson_1_1Value.html">Json::Value</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a6e81235f0c5f91c23cbe1938ffe8a9e3">getJson</a> (bool full) const</td></tr>
|
|
<tr class="memdesc:a6e81235f0c5f91c23cbe1938ffe8a9e3"><td class="mdescLeft"> </td><td class="mdescRight">Get the <a class="el" href="namespaceJson.html" title="JSON (JavaScript Object Notation).">Json</a> state of the consensus process. <a href="classripple_1_1Consensus.html#a6e81235f0c5f91c23cbe1938ffe8a9e3">More...</a><br /></td></tr>
|
|
<tr class="separator:a6e81235f0c5f91c23cbe1938ffe8a9e3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-types"></a>
|
|
Private Types</h2></td></tr>
|
|
<tr class="memitem:ab3549c5ca51ce1c6fcbb4ed8ccc65d75"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#ab3549c5ca51ce1c6fcbb4ed8ccc65d75">Ledger_t</a> = typename Adaptor::Ledger_t</td></tr>
|
|
<tr class="separator:ab3549c5ca51ce1c6fcbb4ed8ccc65d75"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a524b889667609917d080a6ec775ab2e4"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a524b889667609917d080a6ec775ab2e4">TxSet_t</a> = typename Adaptor::TxSet_t</td></tr>
|
|
<tr class="separator:a524b889667609917d080a6ec775ab2e4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac0595ebca5fc6577d86cb4b4dddaef3e"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a> = typename Adaptor::NodeID_t</td></tr>
|
|
<tr class="separator:ac0595ebca5fc6577d86cb4b4dddaef3e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a756a605e09b99b2a7d49a941a3055433"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a756a605e09b99b2a7d49a941a3055433">Tx_t</a> = typename TxSet_t::Tx</td></tr>
|
|
<tr class="separator:a756a605e09b99b2a7d49a941a3055433"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a357a8b2f6eadd8e3c50da583189d4555"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a357a8b2f6eadd8e3c50da583189d4555">PeerPosition_t</a> = typename Adaptor::PeerPosition_t</td></tr>
|
|
<tr class="separator:a357a8b2f6eadd8e3c50da583189d4555"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a31c72c3e674fa81eaf2491557e51786a"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a31c72c3e674fa81eaf2491557e51786a">Proposal_t</a> = <a class="el" href="classripple_1_1ConsensusProposal.html">ConsensusProposal</a>< <a class="el" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a>, typename Ledger_t::ID, typename TxSet_t::ID ></td></tr>
|
|
<tr class="separator:a31c72c3e674fa81eaf2491557e51786a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad0357314ce3da5e84d4b4fdadb07f11b"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#ad0357314ce3da5e84d4b4fdadb07f11b">Result</a> = <a class="el" href="structripple_1_1ConsensusResult.html">ConsensusResult</a>< Adaptor ></td></tr>
|
|
<tr class="separator:ad0357314ce3da5e84d4b4fdadb07f11b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
|
|
Private Member Functions</h2></td></tr>
|
|
<tr class="memitem:aaa6eed1569253686d382e3f85b92acf8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#aaa6eed1569253686d382e3f85b92acf8">startRoundInternal</a> (<a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> const &now, typename Ledger_t::ID const &<a class="el" href="classripple_1_1Consensus.html#a641a3e0e3bb00ef33619c4ef9a26bbed">prevLedgerID</a>, <a class="el" href="classripple_1_1Consensus.html#ab3549c5ca51ce1c6fcbb4ed8ccc65d75">Ledger_t</a> const &prevLedger, <a class="el" href="namespaceripple.html#a33f8b6e68b5f63faf2e9755cc251563e">ConsensusMode</a> mode)</td></tr>
|
|
<tr class="separator:aaa6eed1569253686d382e3f85b92acf8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a91c38c78ada592aae6c3b8b67085c6e4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a91c38c78ada592aae6c3b8b67085c6e4">handleWrongLedger</a> (typename Ledger_t::ID const &lgrId)</td></tr>
|
|
<tr class="separator:a91c38c78ada592aae6c3b8b67085c6e4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa918eecfee1d4f424a17a7e8b6211cc1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#aa918eecfee1d4f424a17a7e8b6211cc1">checkLedger</a> ()</td></tr>
|
|
<tr class="memdesc:aa918eecfee1d4f424a17a7e8b6211cc1"><td class="mdescLeft"> </td><td class="mdescRight">Check if our previous ledger matches the network's. <a href="classripple_1_1Consensus.html#aa918eecfee1d4f424a17a7e8b6211cc1">More...</a><br /></td></tr>
|
|
<tr class="separator:aa918eecfee1d4f424a17a7e8b6211cc1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a1316dae522dbe158d2c7ceef87d426fd"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a1316dae522dbe158d2c7ceef87d426fd">playbackProposals</a> ()</td></tr>
|
|
<tr class="memdesc:a1316dae522dbe158d2c7ceef87d426fd"><td class="mdescLeft"> </td><td class="mdescRight">If we radically changed our consensus context for some reason, we need to replay recent proposals so that they're not lost. <a href="classripple_1_1Consensus.html#a1316dae522dbe158d2c7ceef87d426fd">More...</a><br /></td></tr>
|
|
<tr class="separator:a1316dae522dbe158d2c7ceef87d426fd"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac93a6d481982ad06bcb8722eae97417e"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#ac93a6d481982ad06bcb8722eae97417e">peerProposalInternal</a> (<a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> const &now, <a class="el" href="classripple_1_1Consensus.html#a357a8b2f6eadd8e3c50da583189d4555">PeerPosition_t</a> const &newProposal)</td></tr>
|
|
<tr class="memdesc:ac93a6d481982ad06bcb8722eae97417e"><td class="mdescLeft"> </td><td class="mdescRight">Handle a replayed or a new peer proposal. <a href="classripple_1_1Consensus.html#ac93a6d481982ad06bcb8722eae97417e">More...</a><br /></td></tr>
|
|
<tr class="separator:ac93a6d481982ad06bcb8722eae97417e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8a0dcd0e9a733e910fe18b07aee659e2"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a8a0dcd0e9a733e910fe18b07aee659e2">phaseOpen</a> ()</td></tr>
|
|
<tr class="memdesc:a8a0dcd0e9a733e910fe18b07aee659e2"><td class="mdescLeft"> </td><td class="mdescRight">Handle pre-close phase. <a href="classripple_1_1Consensus.html#a8a0dcd0e9a733e910fe18b07aee659e2">More...</a><br /></td></tr>
|
|
<tr class="separator:a8a0dcd0e9a733e910fe18b07aee659e2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:abd84b31f54fb4fa5d27475a1f9df86ee"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#abd84b31f54fb4fa5d27475a1f9df86ee">phaseEstablish</a> ()</td></tr>
|
|
<tr class="memdesc:abd84b31f54fb4fa5d27475a1f9df86ee"><td class="mdescLeft"> </td><td class="mdescRight">Handle establish phase. <a href="classripple_1_1Consensus.html#abd84b31f54fb4fa5d27475a1f9df86ee">More...</a><br /></td></tr>
|
|
<tr class="separator:abd84b31f54fb4fa5d27475a1f9df86ee"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa94afd9386801e101c02ae927ceec23e"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#aa94afd9386801e101c02ae927ceec23e">shouldPause</a> () const</td></tr>
|
|
<tr class="memdesc:aa94afd9386801e101c02ae927ceec23e"><td class="mdescLeft"> </td><td class="mdescRight">Evaluate whether pausing increases likelihood of validation. <a href="classripple_1_1Consensus.html#aa94afd9386801e101c02ae927ceec23e">More...</a><br /></td></tr>
|
|
<tr class="separator:aa94afd9386801e101c02ae927ceec23e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a4598700d99a01a00a32535173117ae12"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a4598700d99a01a00a32535173117ae12">closeLedger</a> ()</td></tr>
|
|
<tr class="separator:a4598700d99a01a00a32535173117ae12"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a23aa1cff2c0b9ba53cf472dc0b53ac30"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a23aa1cff2c0b9ba53cf472dc0b53ac30">updateOurPositions</a> ()</td></tr>
|
|
<tr class="separator:a23aa1cff2c0b9ba53cf472dc0b53ac30"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a498092766e111e7e2ac715d572318a27"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a498092766e111e7e2ac715d572318a27">haveConsensus</a> ()</td></tr>
|
|
<tr class="separator:a498092766e111e7e2ac715d572318a27"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a7cb6b51c2126cd4637c0e14cf39638f4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a7cb6b51c2126cd4637c0e14cf39638f4">createDisputes</a> (<a class="el" href="classripple_1_1Consensus.html#a524b889667609917d080a6ec775ab2e4">TxSet_t</a> const &o)</td></tr>
|
|
<tr class="separator:a7cb6b51c2126cd4637c0e14cf39638f4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a4e782139b66fec214ed2b12adef662ac"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a4e782139b66fec214ed2b12adef662ac">updateDisputes</a> (<a class="el" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a> const &node, <a class="el" href="classripple_1_1Consensus.html#a524b889667609917d080a6ec775ab2e4">TxSet_t</a> const &other)</td></tr>
|
|
<tr class="separator:a4e782139b66fec214ed2b12adef662ac"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8910d52e827ffa8f0a5f2418855d596d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a8910d52e827ffa8f0a5f2418855d596d">leaveConsensus</a> ()</td></tr>
|
|
<tr class="separator:a8910d52e827ffa8f0a5f2418855d596d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9639282cdda2fcd103490c15c08b9af7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a9639282cdda2fcd103490c15c08b9af7">asCloseTime</a> (<a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> raw) const</td></tr>
|
|
<tr class="separator:a9639282cdda2fcd103490c15c08b9af7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
|
|
Private Attributes</h2></td></tr>
|
|
<tr class="memitem:aaddd7a137e45ca83bbcc528a16838cf1"><td class="memItemLeft" align="right" valign="top">Adaptor & </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#aaddd7a137e45ca83bbcc528a16838cf1">adaptor_</a></td></tr>
|
|
<tr class="separator:aaddd7a137e45ca83bbcc528a16838cf1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a369fcc4a40027db6c9097b06f1ca64e0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceripple.html#a77adb10ef53a2e25195ccd38b46bfe9b">ConsensusPhase</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a369fcc4a40027db6c9097b06f1ca64e0">phase_</a> {<a class="el" href="namespaceripple.html#a77adb10ef53a2e25195ccd38b46bfe9ba3e4d891a5df3d6d0d7dd9432a1bc6470">ConsensusPhase::accepted</a>}</td></tr>
|
|
<tr class="separator:a369fcc4a40027db6c9097b06f1ca64e0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:acf06d247ad9b6c9091ebf59ca95411c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1Consensus_1_1MonitoredMode.html">MonitoredMode</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#acf06d247ad9b6c9091ebf59ca95411c0">mode_</a> {<a class="el" href="namespaceripple.html#a33f8b6e68b5f63faf2e9755cc251563eaea5234685f43dcab142e132c0e7be2ce">ConsensusMode::observing</a>}</td></tr>
|
|
<tr class="separator:acf06d247ad9b6c9091ebf59ca95411c0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a71fb63f2ff10ce119f37f64cbb91f629"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a71fb63f2ff10ce119f37f64cbb91f629">firstRound_</a> = true</td></tr>
|
|
<tr class="separator:a71fb63f2ff10ce119f37f64cbb91f629"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aff1c99a173d5d811e14738a48ffe7f74"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#aff1c99a173d5d811e14738a48ffe7f74">haveCloseTimeConsensus_</a> = false</td></tr>
|
|
<tr class="separator:aff1c99a173d5d811e14738a48ffe7f74"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a46b3b59f24d1b45310a7b0b9dff3177d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1Consensus.html#afe915e894470ce19e551b21b503826ed">clock_type</a> const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a46b3b59f24d1b45310a7b0b9dff3177d">clock_</a></td></tr>
|
|
<tr class="separator:a46b3b59f24d1b45310a7b0b9dff3177d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a26179e53b3c8d203c7f4774016ac72c4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a26179e53b3c8d203c7f4774016ac72c4">convergePercent_</a> {0}</td></tr>
|
|
<tr class="separator:a26179e53b3c8d203c7f4774016ac72c4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a24fad80b40d58dac52455f01b3d2e43a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1ConsensusTimer.html">ConsensusTimer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a24fad80b40d58dac52455f01b3d2e43a">openTime_</a></td></tr>
|
|
<tr class="separator:a24fad80b40d58dac52455f01b3d2e43a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac277e949a79266c8073af837324d4f07"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1NetClock.html#afe3767203cd971a00067671641bc7e16">NetClock::duration</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#ac277e949a79266c8073af837324d4f07">closeResolution_</a> = <a class="el" href="namespaceripple.html#a8d9f578e31d5fdf0e82150bc1a4ce374">ledgerDefaultTimeResolution</a></td></tr>
|
|
<tr class="separator:ac277e949a79266c8073af837324d4f07"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af9ae5c2370cdba83e51f4b0bd0269bb5"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::milliseconds</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#af9ae5c2370cdba83e51f4b0bd0269bb5">prevRoundTime_</a></td></tr>
|
|
<tr class="separator:af9ae5c2370cdba83e51f4b0bd0269bb5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a921fea6c8ce957db08f8f0e6216f158a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a921fea6c8ce957db08f8f0e6216f158a">now_</a></td></tr>
|
|
<tr class="separator:a921fea6c8ce957db08f8f0e6216f158a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3e7e737e0e20f72f6e6f56b6387902cb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a3e7e737e0e20f72f6e6f56b6387902cb">prevCloseTime_</a></td></tr>
|
|
<tr class="separator:a3e7e737e0e20f72f6e6f56b6387902cb"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:afe9ffe7340cdb8c89133cb8e9c362996"><td class="memItemLeft" align="right" valign="top">Ledger_t::ID </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#afe9ffe7340cdb8c89133cb8e9c362996">prevLedgerID_</a></td></tr>
|
|
<tr class="separator:afe9ffe7340cdb8c89133cb8e9c362996"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a524a13145148ff9d6e69328577a11446"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1Consensus.html#ab3549c5ca51ce1c6fcbb4ed8ccc65d75">Ledger_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a524a13145148ff9d6e69328577a11446">previousLedger_</a></td></tr>
|
|
<tr class="separator:a524a13145148ff9d6e69328577a11446"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ab57a91d996ce21835688096fc17de88b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceripple.html#a46c521271235f4e2715d7fa8b68940ca">hash_map</a>< typename TxSet_t::ID, const <a class="el" href="classripple_1_1Consensus.html#a524b889667609917d080a6ec775ab2e4">TxSet_t</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#ab57a91d996ce21835688096fc17de88b">acquired_</a></td></tr>
|
|
<tr class="separator:ab57a91d996ce21835688096fc17de88b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:afa98029589f3d8025211f44f70484b3e"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>< <a class="el" href="classripple_1_1Consensus.html#ad0357314ce3da5e84d4b4fdadb07f11b">Result</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#afa98029589f3d8025211f44f70484b3e">result_</a></td></tr>
|
|
<tr class="separator:afa98029589f3d8025211f44f70484b3e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aedc9943cfe16c077edd70659be0123e1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structripple_1_1ConsensusCloseTimes.html">ConsensusCloseTimes</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#aedc9943cfe16c077edd70659be0123e1">rawCloseTimes_</a></td></tr>
|
|
<tr class="separator:aedc9943cfe16c077edd70659be0123e1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad005b2fb12d340c6f0fa6a59e720a642"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceripple.html#a46c521271235f4e2715d7fa8b68940ca">hash_map</a>< <a class="el" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a>, <a class="el" href="classripple_1_1Consensus.html#a357a8b2f6eadd8e3c50da583189d4555">PeerPosition_t</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#ad005b2fb12d340c6f0fa6a59e720a642">currPeerPositions_</a></td></tr>
|
|
<tr class="separator:ad005b2fb12d340c6f0fa6a59e720a642"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a696880af1d64c2d9271a3bb5477aaf45"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceripple.html#a46c521271235f4e2715d7fa8b68940ca">hash_map</a>< <a class="el" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a>, <a class="elRef" href="http://en.cppreference.com/w/cpp/container/deque.html">std::deque</a>< <a class="el" href="classripple_1_1Consensus.html#a357a8b2f6eadd8e3c50da583189d4555">PeerPosition_t</a> > > </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a696880af1d64c2d9271a3bb5477aaf45">recentPeerPositions_</a></td></tr>
|
|
<tr class="separator:a696880af1d64c2d9271a3bb5477aaf45"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a952cc0a61b025adf8197a9022d70fa12"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a952cc0a61b025adf8197a9022d70fa12">prevProposers_</a> = 0</td></tr>
|
|
<tr class="separator:a952cc0a61b025adf8197a9022d70fa12"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:afddcd72ee9347a65b160636404308df9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceripple.html#a7750eec5e079354285f1d60cfd0247ca">hash_set</a>< <a class="el" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#afddcd72ee9347a65b160636404308df9">deadNodes_</a></td></tr>
|
|
<tr class="separator:afddcd72ee9347a65b160636404308df9"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a0e680e53d4bb507d9d2c69f6ee1d65b8"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classbeast_1_1Journal.html">beast::Journal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Consensus.html#a0e680e53d4bb507d9d2c69f6ee1d65b8">j_</a></td></tr>
|
|
<tr class="separator:a0e680e53d4bb507d9d2c69f6ee1d65b8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><h3>template<class Adaptor><br />
|
|
class ripple::Consensus< Adaptor ></h3>
|
|
|
|
<p>Generic implementation of consensus algorithm. </p>
|
|
<p>Achieves consensus on the next ledger.</p>
|
|
<p>Two things need consensus:</p>
|
|
<ol type="1">
|
|
<li>The set of transactions included in the ledger.</li>
|
|
<li>The close time for the ledger.</li>
|
|
</ol>
|
|
<p>The basic flow:</p>
|
|
<ol type="1">
|
|
<li>A call to <code>startRound</code> places the node in the <code>Open</code> phase. In this phase, the node is waiting for transactions to include in its open ledger.</li>
|
|
<li>Successive calls to <code>timerEntry</code> check if the node can close the ledger. Once the node <code>Close</code>s the open ledger, it transitions to the <code>Establish</code> phase. In this phase, the node shares/receives peer proposals on which transactions should be accepted in the closed ledger.</li>
|
|
<li>During a subsequent call to <code>timerEntry</code>, the node determines it has reached consensus with its peers on which transactions to include. It transitions to the <code>Accept</code> phase. In this phase, the node works on applying the transactions to the prior ledger to generate a new closed ledger. Once the new ledger is completed, the node shares the validated ledger with the network, does some book-keeping, then makes a call to <code>startRound</code> to start the cycle again.</li>
|
|
</ol>
|
|
<p>This class uses a generic interface to allow adapting <a class="el" href="classripple_1_1Consensus.html" title="Generic implementation of consensus algorithm.">Consensus</a> for specific applications. The Adaptor template implements a set of helper functions that plug the consensus algorithm into a specific application. It also identifies the types that play important roles in <a class="el" href="classripple_1_1Consensus.html" title="Generic implementation of consensus algorithm.">Consensus</a> (transactions, ledgers, ...). The code stubs below outline the interface and type requirements. The traits types must be copy constructible and assignable.</p>
|
|
<dl class="section warning"><dt>Warning</dt><dd>The generic implementation is not thread safe and the public methods are not intended to be run concurrently. When in a concurrent environment, the application is responsible for ensuring thread-safety. Simply locking whenever touching the <a class="el" href="classripple_1_1Consensus.html" title="Generic implementation of consensus algorithm.">Consensus</a> instance is one option.</dd></dl>
|
|
<div class="fragment"><div class="line"><span class="comment">// A single transaction</span></div>
|
|
<div class="line"><span class="keyword">struct </span>Tx</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="comment">// Unique identifier of transaction</span></div>
|
|
<div class="line"> <span class="keyword">using</span> ID = ...;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> ID id() <span class="keyword">const</span>;</div>
|
|
<div class="line"> </div>
|
|
<div class="line">};</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// A set of transactions</span></div>
|
|
<div class="line"><span class="keyword">struct </span>TxSet</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="comment">// Unique ID of TxSet (not of Tx)</span></div>
|
|
<div class="line"> <span class="keyword">using</span> ID = ...;</div>
|
|
<div class="line"> <span class="comment">// Type of individual transaction comprising the TxSet</span></div>
|
|
<div class="line"> <span class="keyword">using</span> Tx = Tx;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keywordtype">bool</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/experimental/fs/exists.html">exists</a>(Tx::ID <span class="keyword">const</span> &) <span class="keyword">const</span>;</div>
|
|
<div class="line"> <span class="comment">// Return value should have semantics like Tx const *</span></div>
|
|
<div class="line"> Tx <span class="keyword">const</span> * <a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/find.html">find</a>(Tx::ID <span class="keyword">const</span> &) <span class="keyword">const</span> ;</div>
|
|
<div class="line"> ID <span class="keyword">const</span> & id() <span class="keyword">const</span>;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Return set of transactions that are not common to this set or other</span></div>
|
|
<div class="line"> <span class="comment">// boolean indicates which set it was in</span></div>
|
|
<div class="line"> <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/map.html">std::map<Tx::ID, bool></a> <a class="code" href="namespaceripple.html#ad584345ad1d39fa2234a298a991f8e66">compare</a>(TxSet <span class="keyword">const</span> & other) <span class="keyword">const</span>;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// A mutable view of transactions</span></div>
|
|
<div class="line"> <span class="keyword">struct </span>MutableTxSet</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> MutableTxSet(TxSet <span class="keyword">const</span> &);</div>
|
|
<div class="line"> <span class="keywordtype">bool</span> insert(Tx <span class="keyword">const</span> &);</div>
|
|
<div class="line"> <span class="keywordtype">bool</span> <a class="code" href="namespaceripple.html#aa761b49f905eb9fd8c8ae754a0eb7504">erase</a>(Tx::ID <span class="keyword">const</span> &);</div>
|
|
<div class="line"> };</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Construct from a mutable view.</span></div>
|
|
<div class="line"> TxSet(MutableTxSet <span class="keyword">const</span> &);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Alternatively, if the TxSet is itself mutable</span></div>
|
|
<div class="line"> <span class="comment">// just alias MutableTxSet = TxSet</span></div>
|
|
<div class="line"> </div>
|
|
<div class="line">};</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Agreed upon state that consensus transactions will modify</span></div>
|
|
<div class="line"><span class="keyword">struct </span>Ledger</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="keyword">using</span> ID = ...;</div>
|
|
<div class="line"> <span class="keyword">using</span> Seq = ...;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Unique identifier of ledger</span></div>
|
|
<div class="line"> ID <span class="keyword">const</span> id() <span class="keyword">const</span>;</div>
|
|
<div class="line"> Seq seq() <span class="keyword">const</span>;</div>
|
|
<div class="line"> <span class="keyword">auto</span> closeTimeResolution() <span class="keyword">const</span>;</div>
|
|
<div class="line"> <span class="keyword">auto</span> closeAgree() <span class="keyword">const</span>;</div>
|
|
<div class="line"> <span class="keyword">auto</span> closeTime() <span class="keyword">const</span>;</div>
|
|
<div class="line"> <span class="keyword">auto</span> parentCloseTime() <span class="keyword">const</span>;</div>
|
|
<div class="line"> <a class="code" href="classJson_1_1Value.html">Json::Value</a> <a class="code" href="classripple_1_1Consensus.html#a6e81235f0c5f91c23cbe1938ffe8a9e3">getJson</a>() <span class="keyword">const</span>;</div>
|
|
<div class="line">};</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Wraps a peer's ConsensusProposal</span></div>
|
|
<div class="line"><span class="keyword">struct </span>PeerPosition</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> ConsensusProposal<</div>
|
|
<div class="line"> <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>, <span class="comment">//NodeID,</span></div>
|
|
<div class="line"> <span class="keyword">typename</span> Ledger::ID,</div>
|
|
<div class="line"> <span class="keyword">typename</span> TxSet::ID> <span class="keyword">const</span> &</div>
|
|
<div class="line"> <a class="code" href="namespaceripple.html#ad5143ceada01141772ae4aab984f94bdab314439bc1697845de3749d51dca7c15">proposal</a>() <span class="keyword">const</span>;</div>
|
|
<div class="line"> </div>
|
|
<div class="line">};</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keyword">class </span>Adaptor</div>
|
|
<div class="line">{</div>
|
|
<div class="line"><span class="keyword">public</span>:</div>
|
|
<div class="line"> <span class="comment">//-----------------------------------------------------------------------</span></div>
|
|
<div class="line"> <span class="comment">// Define consensus types</span></div>
|
|
<div class="line"> <span class="keyword">using</span> <a class="code" href="classripple_1_1Consensus.html#ab3549c5ca51ce1c6fcbb4ed8ccc65d75">Ledger_t</a> = Ledger;</div>
|
|
<div class="line"> <span class="keyword">using</span> <a class="code" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a> = <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>;</div>
|
|
<div class="line"> <span class="keyword">using</span> <a class="code" href="classripple_1_1Consensus.html#a524b889667609917d080a6ec775ab2e4">TxSet_t</a> = TxSet;</div>
|
|
<div class="line"> <span class="keyword">using</span> <a class="code" href="classripple_1_1Consensus.html#a357a8b2f6eadd8e3c50da583189d4555">PeerPosition_t</a> = PeerPosition;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">//-----------------------------------------------------------------------</span></div>
|
|
<div class="line"> <span class="comment">//</span></div>
|
|
<div class="line"> <span class="comment">// Attempt to acquire a specific ledger.</span></div>
|
|
<div class="line"> <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<Ledger></a> acquireLedger(Ledger::ID <span class="keyword">const</span> & ledgerID);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Acquire the transaction set associated with a proposed position.</span></div>
|
|
<div class="line"> <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<TxSet></a> acquireTxSet(TxSet::ID <span class="keyword">const</span> & setID);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Whether any transactions are in the open ledger</span></div>
|
|
<div class="line"> <span class="keywordtype">bool</span> hasOpenTransactions() <span class="keyword">const</span>;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Number of proposers that have validated the given ledger</span></div>
|
|
<div class="line"> <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> proposersValidated(Ledger::ID <span class="keyword">const</span> & prevLedger) <span class="keyword">const</span>;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Number of proposers that have validated a ledger descended from the</span></div>
|
|
<div class="line"> <span class="comment">// given ledger; if prevLedger.id() != prevLedgerID, use prevLedgerID</span></div>
|
|
<div class="line"> <span class="comment">// for the determination</span></div>
|
|
<div class="line"> <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> proposersFinished(Ledger <span class="keyword">const</span> & prevLedger,</div>
|
|
<div class="line"> Ledger::ID <span class="keyword">const</span> & prevLedger) <span class="keyword">const</span>;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Return the ID of the last closed (and validated) ledger that the</span></div>
|
|
<div class="line"> <span class="comment">// application thinks consensus should use as the prior ledger.</span></div>
|
|
<div class="line"> Ledger::ID getPrevLedger(Ledger::ID <span class="keyword">const</span> & <a class="code" href="classripple_1_1Consensus.html#a641a3e0e3bb00ef33619c4ef9a26bbed">prevLedgerID</a>,</div>
|
|
<div class="line"> Ledger <span class="keyword">const</span> & prevLedger,</div>
|
|
<div class="line"> Mode mode);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Called whenever consensus operating mode changes</span></div>
|
|
<div class="line"> <span class="keywordtype">void</span> onModeChange(<a class="code" href="namespaceripple.html#a33f8b6e68b5f63faf2e9755cc251563e">ConsensusMode</a> before, <a class="code" href="namespaceripple.html#a33f8b6e68b5f63faf2e9755cc251563e">ConsensusMode</a> <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Called when ledger closes</span></div>
|
|
<div class="line"> <a class="code" href="classripple_1_1Consensus.html#ad0357314ce3da5e84d4b4fdadb07f11b">Result</a> onClose(Ledger <span class="keyword">const</span> &, Ledger <span class="keyword">const</span> & prev, Mode mode);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Called when ledger is accepted by consensus</span></div>
|
|
<div class="line"> <span class="keywordtype">void</span> onAccept(<a class="code" href="classripple_1_1Consensus.html#ad0357314ce3da5e84d4b4fdadb07f11b">Result</a> <span class="keyword">const</span> & result,</div>
|
|
<div class="line"> RCLCxLedger <span class="keyword">const</span> & prevLedger,</div>
|
|
<div class="line"> <a class="code" href="classripple_1_1NetClock.html#afe3767203cd971a00067671641bc7e16">NetClock::duration</a> closeResolution,</div>
|
|
<div class="line"> CloseTimes <span class="keyword">const</span> & rawCloseTimes,</div>
|
|
<div class="line"> Mode <span class="keyword">const</span> & mode);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Called when ledger was forcibly accepted by consensus via the simulate</span></div>
|
|
<div class="line"> <span class="comment">// function.</span></div>
|
|
<div class="line"> <span class="keywordtype">void</span> onForceAccept(<a class="code" href="classripple_1_1Consensus.html#ad0357314ce3da5e84d4b4fdadb07f11b">Result</a> <span class="keyword">const</span> & result,</div>
|
|
<div class="line"> RCLCxLedger <span class="keyword">const</span> & prevLedger,</div>
|
|
<div class="line"> <a class="code" href="classripple_1_1NetClock.html#afe3767203cd971a00067671641bc7e16">NetClock::duration</a> closeResolution,</div>
|
|
<div class="line"> CloseTimes <span class="keyword">const</span> & rawCloseTimes,</div>
|
|
<div class="line"> Mode <span class="keyword">const</span> & mode);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Propose the position to peers.</span></div>
|
|
<div class="line"> <span class="keywordtype">void</span> propose(ConsensusProposal<...> <span class="keyword">const</span> & pos);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Share a received peer proposal with other peer's.</span></div>
|
|
<div class="line"> <span class="keywordtype">void</span> share(<a class="code" href="classripple_1_1Consensus.html#a357a8b2f6eadd8e3c50da583189d4555">PeerPosition_t</a> <span class="keyword">const</span> & prop);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Share a disputed transaction with peers</span></div>
|
|
<div class="line"> <span class="keywordtype">void</span> share(Txn <span class="keyword">const</span> & tx);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Share given transaction set with peers</span></div>
|
|
<div class="line"> <span class="keywordtype">void</span> share(TxSet <span class="keyword">const</span> &s);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="comment">// Consensus timing parameters and constants</span></div>
|
|
<div class="line"> ConsensusParms <span class="keyword">const</span> &</div>
|
|
<div class="line"> parms() <span class="keyword">const</span>;</div>
|
|
<div class="line">};</div>
|
|
</div><!-- fragment --><dl class="tparams"><dt>Template Parameters</dt><dd>
|
|
<table class="tparams">
|
|
<tr><td class="paramname">Adaptor</td><td>Defines types and provides helper functions needed to adapt <a class="el" href="classripple_1_1Consensus.html" title="Generic implementation of consensus algorithm.">Consensus</a> to the larger application. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l00284">284</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
</div><h2 class="groupheader">Member Typedef Documentation</h2>
|
|
<a id="ab3549c5ca51ce1c6fcbb4ed8ccc65d75"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ab3549c5ca51ce1c6fcbb4ed8ccc65d75">◆ </a></span>Ledger_t</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">using <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::<a class="el" href="classripple_1_1Consensus.html#ab3549c5ca51ce1c6fcbb4ed8ccc65d75">Ledger_t</a> = typename Adaptor::Ledger_t</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="Consensus_8h_source.html#l00286">286</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a524b889667609917d080a6ec775ab2e4"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a524b889667609917d080a6ec775ab2e4">◆ </a></span>TxSet_t</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">using <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::<a class="el" href="classripple_1_1Consensus.html#a524b889667609917d080a6ec775ab2e4">TxSet_t</a> = typename Adaptor::TxSet_t</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="Consensus_8h_source.html#l00287">287</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ac0595ebca5fc6577d86cb4b4dddaef3e"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ac0595ebca5fc6577d86cb4b4dddaef3e">◆ </a></span>NodeID_t</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">using <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::<a class="el" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a> = typename Adaptor::NodeID_t</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="Consensus_8h_source.html#l00288">288</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a756a605e09b99b2a7d49a941a3055433"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a756a605e09b99b2a7d49a941a3055433">◆ </a></span>Tx_t</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">using <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::<a class="el" href="classripple_1_1Consensus.html#a756a605e09b99b2a7d49a941a3055433">Tx_t</a> = typename TxSet_t::Tx</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="Consensus_8h_source.html#l00289">289</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a357a8b2f6eadd8e3c50da583189d4555"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a357a8b2f6eadd8e3c50da583189d4555">◆ </a></span>PeerPosition_t</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">using <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::<a class="el" href="classripple_1_1Consensus.html#a357a8b2f6eadd8e3c50da583189d4555">PeerPosition_t</a> = typename Adaptor::PeerPosition_t</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="Consensus_8h_source.html#l00290">290</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a31c72c3e674fa81eaf2491557e51786a"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a31c72c3e674fa81eaf2491557e51786a">◆ </a></span>Proposal_t</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">using <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::<a class="el" href="classripple_1_1Consensus.html#a31c72c3e674fa81eaf2491557e51786a">Proposal_t</a> = <a class="el" href="classripple_1_1ConsensusProposal.html">ConsensusProposal</a>< <a class="el" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a>, typename Ledger_t::ID, typename TxSet_t::ID></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="Consensus_8h_source.html#l00294">294</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ad0357314ce3da5e84d4b4fdadb07f11b"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ad0357314ce3da5e84d4b4fdadb07f11b">◆ </a></span>Result</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">using <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::<a class="el" href="classripple_1_1Consensus.html#ad0357314ce3da5e84d4b4fdadb07f11b">Result</a> = <a class="el" href="structripple_1_1ConsensusResult.html">ConsensusResult</a><Adaptor></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="Consensus_8h_source.html#l00296">296</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="afe915e894470ce19e551b21b503826ed"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#afe915e894470ce19e551b21b503826ed">◆ </a></span>clock_type</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">using <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::<a class="el" href="classripple_1_1Consensus.html#afe915e894470ce19e551b21b503826ed">clock_type</a> = <a class="el" href="classbeast_1_1abstract__clock.html">beast::abstract_clock</a><<a class="elRef" href="http://en.cppreference.com/w/cpp/chrono/steady_clock.html">std::chrono::steady_clock</a>></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Clock type for measuring time within the consensus code. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l00324">324</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
|
<a id="a837ef9ac79284d6eb64d0ca4c5dd13bc"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a837ef9ac79284d6eb64d0ca4c5dd13bc">◆ </a></span>Consensus() <span class="overload">[1/2]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::<a class="el" href="classripple_1_1Consensus.html">Consensus</a> </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1Consensus.html">Consensus</a>< Adaptor > && </td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">default</span><span class="mlabel">noexcept</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ade8b4954a44f6b8bc30afbd0415704db"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ade8b4954a44f6b8bc30afbd0415704db">◆ </a></span>Consensus() <span class="overload">[2/2]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::<a class="el" href="classripple_1_1Consensus.html">Consensus</a> </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1Consensus.html#afe915e894470ce19e551b21b503826ed">clock_type</a> const & </td>
|
|
<td class="paramname"><em>clock</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">Adaptor & </td>
|
|
<td class="paramname"><em>adaptor</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="classbeast_1_1Journal.html">beast::Journal</a> </td>
|
|
<td class="paramname"><em>j</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Constructor. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">clock</td><td>The clock used to internally sample consensus progress </td></tr>
|
|
<tr><td class="paramname">adaptor</td><td>The instance of the adaptor class </td></tr>
|
|
<tr><td class="paramname">j</td><td>The journal to log debug output </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l00605">605</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Member Function Documentation</h2>
|
|
<a id="ae860970b8a78fda5497221c1a8bf1b98"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ae860970b8a78fda5497221c1a8bf1b98">◆ </a></span>startRound()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::startRound </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> const & </td>
|
|
<td class="paramname"><em>now</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">typename Ledger_t::ID const & </td>
|
|
<td class="paramname"><em>prevLedgerID</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1Consensus.html#ab3549c5ca51ce1c6fcbb4ed8ccc65d75">Ledger_t</a> </td>
|
|
<td class="paramname"><em>prevLedger</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="namespaceripple.html#a7750eec5e079354285f1d60cfd0247ca">hash_set</a>< <a class="el" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a> > const & </td>
|
|
<td class="paramname"><em>nowUntrusted</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">bool </td>
|
|
<td class="paramname"><em>proposing</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Kick-off the next round of consensus. </p>
|
|
<p>Called by the client code to start each round of consensus.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">now</td><td>The network adjusted time </td></tr>
|
|
<tr><td class="paramname">prevLedgerID</td><td>the ID of the last ledger </td></tr>
|
|
<tr><td class="paramname">prevLedger</td><td>The last ledger </td></tr>
|
|
<tr><td class="paramname">nowUntrusted</td><td>ID of nodes that are newly untrusted this round </td></tr>
|
|
<tr><td class="paramname">proposing</td><td>Whether we want to send proposals to peers this round.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section note"><dt>Note</dt><dd><b>prevLedgerID</b> is not required to the ID of <b>prevLedger</b> since the ID may be known locally before the contents of the ledger arrive </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l00616">616</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ac847edb496ffd3e8cecf636c56ccb0b0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ac847edb496ffd3e8cecf636c56ccb0b0">◆ </a></span>peerProposal()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::peerProposal </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> const & </td>
|
|
<td class="paramname"><em>now</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1Consensus.html#a357a8b2f6eadd8e3c50da583189d4555">PeerPosition_t</a> const & </td>
|
|
<td class="paramname"><em>newProposal</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>A peer has proposed a new position, adjust our tracking. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">now</td><td>The network adjusted time </td></tr>
|
|
<tr><td class="paramname">newProposal</td><td>The new proposal from a peer </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>Whether we should do delayed relay of this proposal. </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l00700">700</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a1d3b6552f4cbf49c31cf7032d68bfbce"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a1d3b6552f4cbf49c31cf7032d68bfbce">◆ </a></span>timerEntry()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::timerEntry </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> const & </td>
|
|
<td class="paramname"><em>now</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Call periodically to drive consensus forward. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">now</td><td>The network adjusted time </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l00815">815</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a9dffbdf2708f81eee49bed08891a7b9a"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a9dffbdf2708f81eee49bed08891a7b9a">◆ </a></span>gotTxSet()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::gotTxSet </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> const & </td>
|
|
<td class="paramname"><em>now</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1Consensus.html#a524b889667609917d080a6ec775ab2e4">TxSet_t</a> const & </td>
|
|
<td class="paramname"><em>txSet</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Process a transaction set acquired from the network. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">now</td><td>The network adjusted time </td></tr>
|
|
<tr><td class="paramname">txSet</td><td>the transaction set </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l00838">838</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a6d167e182528e6ba3192a40c8de4eae5"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6d167e182528e6ba3192a40c8de4eae5">◆ </a></span>simulate()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::simulate </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> const & </td>
|
|
<td class="paramname"><em>now</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>< <a class="elRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::milliseconds</a> > </td>
|
|
<td class="paramname"><em>consensusDelay</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Simulate the consensus process without any network traffic. </p>
|
|
<p>The end result, is that consensus begins and completes as if everyone had agreed with whatever we propose.</p>
|
|
<p>This function is only called from the rpc "ledger_accept" path with the server in standalone mode and SHOULD NOT be used during the normal consensus process.</p>
|
|
<p>Simulate will call onForceAccept since clients are manually driving consensus to the accept phase.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">now</td><td>The current network adjusted time. </td></tr>
|
|
<tr><td class="paramname">consensusDelay</td><td>Duration to delay between closing and accepting the ledger. Uses 100ms if unspecified. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l00884">884</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a641a3e0e3bb00ef33619c4ef9a26bbed"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a641a3e0e3bb00ef33619c4ef9a26bbed">◆ </a></span>prevLedgerID()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">Ledger_t::ID <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::prevLedgerID </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td> const</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Get the previous ledger ID. </p>
|
|
<p>The previous ledger is the last ledger seen by the consensus code and should correspond to the most recent validated ledger seen by this peer.</p>
|
|
<dl class="section return"><dt>Returns</dt><dd>ID of previous ledger </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l00412">412</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ab3d8f48bde5fac064433c5fb02187ec4"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ab3d8f48bde5fac064433c5fb02187ec4">◆ </a></span>phase()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="namespaceripple.html#a77adb10ef53a2e25195ccd38b46bfe9b">ConsensusPhase</a> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::phase </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td> const</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l00418">418</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a6e81235f0c5f91c23cbe1938ffe8a9e3"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6e81235f0c5f91c23cbe1938ffe8a9e3">◆ </a></span>getJson()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="classJson_1_1Value.html">Json::Value</a> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::getJson </td>
|
|
<td>(</td>
|
|
<td class="paramtype">bool </td>
|
|
<td class="paramname"><em>full</em></td><td>)</td>
|
|
<td> const</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Get the <a class="el" href="namespaceJson.html" title="JSON (JavaScript Object Notation).">Json</a> state of the consensus process. </p>
|
|
<p>Called by the consensus_info <a class="el" href="namespaceripple_1_1RPC.html">RPC</a>.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">full</td><td>True if verbose response desired. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="namespaceJson.html" title="JSON (JavaScript Object Notation).">Json</a> state. </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l00908">908</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aaa6eed1569253686d382e3f85b92acf8"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aaa6eed1569253686d382e3f85b92acf8">◆ </a></span>startRoundInternal()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::startRoundInternal </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> const & </td>
|
|
<td class="paramname"><em>now</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">typename Ledger_t::ID const & </td>
|
|
<td class="paramname"><em>prevLedgerID</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1Consensus.html#ab3549c5ca51ce1c6fcbb4ed8ccc65d75">Ledger_t</a> const & </td>
|
|
<td class="paramname"><em>prevLedger</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="namespaceripple.html#a33f8b6e68b5f63faf2e9755cc251563e">ConsensusMode</a> </td>
|
|
<td class="paramname"><em>mode</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</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="Consensus_8h_source.html#l00662">662</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a91c38c78ada592aae6c3b8b67085c6e4"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a91c38c78ada592aae6c3b8b67085c6e4">◆ </a></span>handleWrongLedger()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::handleWrongLedger </td>
|
|
<td>(</td>
|
|
<td class="paramtype">typename Ledger_t::ID const & </td>
|
|
<td class="paramname"><em>lgrId</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="Consensus_8h_source.html#l01006">1006</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aa918eecfee1d4f424a17a7e8b6211cc1"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa918eecfee1d4f424a17a7e8b6211cc1">◆ </a></span>checkLedger()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::checkLedger</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>Check if our previous ledger matches the network's. </p>
|
|
<p>If the previous ledger differs, we are no longer in sync with the network and need to bow out/switch modes. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l01051">1051</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a1316dae522dbe158d2c7ceef87d426fd"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a1316dae522dbe158d2c7ceef87d426fd">◆ </a></span>playbackProposals()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::playbackProposals</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>If we radically changed our consensus context for some reason, we need to replay recent proposals so that they're not lost. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l01074">1074</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ac93a6d481982ad06bcb8722eae97417e"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ac93a6d481982ad06bcb8722eae97417e">◆ </a></span>peerProposalInternal()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::peerProposalInternal </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> const & </td>
|
|
<td class="paramname"><em>now</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1Consensus.html#a357a8b2f6eadd8e3c50da583189d4555">PeerPosition_t</a> const & </td>
|
|
<td class="paramname"><em>newProposal</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</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>Handle a replayed or a new peer proposal. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l00720">720</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a8a0dcd0e9a733e910fe18b07aee659e2"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a8a0dcd0e9a733e910fe18b07aee659e2">◆ </a></span>phaseOpen()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::phaseOpen</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>Handle pre-close phase. </p>
|
|
<p>In the pre-close phase, the ledger is open as we wait for new transactions. After enough time has elapsed, we will close the ledger, switch to the establish phase and start the consensus process. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l01091">1091</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="abd84b31f54fb4fa5d27475a1f9df86ee"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#abd84b31f54fb4fa5d27475a1f9df86ee">◆ </a></span>phaseEstablish()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::phaseEstablish</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>Handle establish phase. </p>
|
|
<p>In the establish phase, the ledger has closed and we work with peers to reach consensus. Update our position only on the timer, and in this phase.</p>
|
|
<p>If we have consensus, move to the accepted phase. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l01258">1258</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aa94afd9386801e101c02ae927ceec23e"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa94afd9386801e101c02ae927ceec23e">◆ </a></span>shouldPause()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::shouldPause</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>Evaluate whether pausing increases likelihood of validation. </p>
|
|
<p>As a validator that has previously synced to the network, if our most recent locally-validated ledger did not also achieve full validation, then consider pausing for awhile based on the state of other validators.</p>
|
|
<p>Pausing may be beneficial in this situation if at least one validator is known to be on a sequence number earlier than ours. The minimum number of validators on the same sequence number does not guarantee consensus, and waiting for all validators may be too time-consuming. Therefore, a variable threshold is enacted based on the number of ledgers past network validation that we are on. For the first phase, the threshold is also the minimum required for quorum. For the last, no online validators can have a lower sequence number. For intermediate phases, the threshold is linear between the minimum required for quorum and 100%. For example, with 3 total phases and a quorum of 80%, the 2nd phase would be 90%. Once the final phase is reached, if consensus still fails to occur, the cycle is begun again at phase 1.</p>
|
|
<dl class="section return"><dt>Returns</dt><dd>Whether to pause to wait for lagging proposers. </dd></dl>
|
|
<p>Maximum phase with distinct thresholds to determine how many validators must be on our same ledger sequence number. The threshold for the 1st (0) phase is >= the minimum number that can achieve quorum. Threshold for the maximum phase is 100% of all trusted validators. Progression from min to max phase is simply linear. If there are 5 phases (maxPausePhase = 4) and minimum quorum is 80%, then thresholds progress as follows: 0: >=80% 1: >=85% 2: >=90% 3: >=95% 4: =100%</p>
|
|
<p>No particular threshold guarantees consensus. Lower thresholds are easier to achieve than higher, but higher thresholds are more likely to reach consensus. Cycle through the phases if lack of synchronization continues.</p>
|
|
<p>Current information indicates that no phase is likely to be intrinsically better than any other: the lower the threshold, the less likely that up-to-date nodes will be able to reach consensus without the laggards. But the higher the threshold, the longer the likely resulting pause. 100% is slightly less desirable in the long run because the potential of a single dawdling peer to slow down everything else. So if we accept that no phase is any better than any other phase, but that all of them will potentially enable us to arrive at consensus, cycling through them seems to be appropriate. Further, if we do reach the point of having to cycle back around, then it's likely that something else out of the scope of this delay mechanism is wrong with the network.</p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="Consensus_8h_source.html#l01144">1144</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a4598700d99a01a00a32535173117ae12"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a4598700d99a01a00a32535173117ae12">◆ </a></span>closeLedger()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::closeLedger</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="Consensus_8h_source.html#l01306">1306</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a23aa1cff2c0b9ba53cf472dc0b53ac30"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a23aa1cff2c0b9ba53cf472dc0b53ac30">◆ </a></span>updateOurPositions()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::updateOurPositions</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="Consensus_8h_source.html#l01359">1359</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a498092766e111e7e2ac715d572318a27"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a498092766e111e7e2ac715d572318a27">◆ </a></span>haveConsensus()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::haveConsensus</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="Consensus_8h_source.html#l01543">1543</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a7cb6b51c2126cd4637c0e14cf39638f4"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a7cb6b51c2126cd4637c0e14cf39638f4">◆ </a></span>createDisputes()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::createDisputes </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1Consensus.html#a524b889667609917d080a6ec775ab2e4">TxSet_t</a> const & </td>
|
|
<td class="paramname"><em>o</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="Consensus_8h_source.html#l01618">1618</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a4e782139b66fec214ed2b12adef662ac"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a4e782139b66fec214ed2b12adef662ac">◆ </a></span>updateDisputes()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::updateDisputes </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a> const & </td>
|
|
<td class="paramname"><em>node</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1Consensus.html#a524b889667609917d080a6ec775ab2e4">TxSet_t</a> const & </td>
|
|
<td class="paramname"><em>other</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</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="Consensus_8h_source.html#l01677">1677</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a8910d52e827ffa8f0a5f2418855d596d"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a8910d52e827ffa8f0a5f2418855d596d">◆ </a></span>leaveConsensus()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::leaveConsensus</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="Consensus_8h_source.html#l01601">1601</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a9639282cdda2fcd103490c15c08b9af7"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a9639282cdda2fcd103490c15c08b9af7">◆ </a></span>asCloseTime()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::asCloseTime </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> </td>
|
|
<td class="paramname"><em>raw</em></td><td>)</td>
|
|
<td> const</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="Consensus_8h_source.html#l01696">1696</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Member Data Documentation</h2>
|
|
<a id="aaddd7a137e45ca83bbcc528a16838cf1"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aaddd7a137e45ca83bbcc528a16838cf1">◆ </a></span>adaptor_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">Adaptor& <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::adaptor_</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="Consensus_8h_source.html#l00541">541</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a369fcc4a40027db6c9097b06f1ca64e0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a369fcc4a40027db6c9097b06f1ca64e0">◆ </a></span>phase_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="namespaceripple.html#a77adb10ef53a2e25195ccd38b46bfe9b">ConsensusPhase</a> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::phase_ {<a class="el" href="namespaceripple.html#a77adb10ef53a2e25195ccd38b46bfe9ba3e4d891a5df3d6d0d7dd9432a1bc6470">ConsensusPhase::accepted</a>}</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="Consensus_8h_source.html#l00543">543</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="acf06d247ad9b6c9091ebf59ca95411c0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#acf06d247ad9b6c9091ebf59ca95411c0">◆ </a></span>mode_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="classripple_1_1Consensus_1_1MonitoredMode.html">MonitoredMode</a> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::mode_ {<a class="el" href="namespaceripple.html#a33f8b6e68b5f63faf2e9755cc251563eaea5234685f43dcab142e132c0e7be2ce">ConsensusMode::observing</a>}</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="Consensus_8h_source.html#l00544">544</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a71fb63f2ff10ce119f37f64cbb91f629"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a71fb63f2ff10ce119f37f64cbb91f629">◆ </a></span>firstRound_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::firstRound_ = true</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="Consensus_8h_source.html#l00545">545</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aff1c99a173d5d811e14738a48ffe7f74"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aff1c99a173d5d811e14738a48ffe7f74">◆ </a></span>haveCloseTimeConsensus_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::haveCloseTimeConsensus_ = false</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="Consensus_8h_source.html#l00546">546</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a46b3b59f24d1b45310a7b0b9dff3177d"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a46b3b59f24d1b45310a7b0b9dff3177d">◆ </a></span>clock_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="classripple_1_1Consensus.html#afe915e894470ce19e551b21b503826ed">clock_type</a> const& <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::clock_</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="Consensus_8h_source.html#l00548">548</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a26179e53b3c8d203c7f4774016ac72c4"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a26179e53b3c8d203c7f4774016ac72c4">◆ </a></span>convergePercent_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::convergePercent_ {0}</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="Consensus_8h_source.html#l00552">552</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a24fad80b40d58dac52455f01b3d2e43a"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a24fad80b40d58dac52455f01b3d2e43a">◆ </a></span>openTime_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="classripple_1_1ConsensusTimer.html">ConsensusTimer</a> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::openTime_</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="Consensus_8h_source.html#l00555">555</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ac277e949a79266c8073af837324d4f07"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ac277e949a79266c8073af837324d4f07">◆ </a></span>closeResolution_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="classripple_1_1NetClock.html#afe3767203cd971a00067671641bc7e16">NetClock::duration</a> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::closeResolution_ = <a class="el" href="namespaceripple.html#a8d9f578e31d5fdf0e82150bc1a4ce374">ledgerDefaultTimeResolution</a></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="Consensus_8h_source.html#l00557">557</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="af9ae5c2370cdba83e51f4b0bd0269bb5"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af9ae5c2370cdba83e51f4b0bd0269bb5">◆ </a></span>prevRoundTime_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<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/chrono/duration.html">std::chrono::milliseconds</a> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::prevRoundTime_</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="Consensus_8h_source.html#l00560">560</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a921fea6c8ce957db08f8f0e6216f158a"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a921fea6c8ce957db08f8f0e6216f158a">◆ </a></span>now_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::now_</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="Consensus_8h_source.html#l00567">567</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a3e7e737e0e20f72f6e6f56b6387902cb"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a3e7e737e0e20f72f6e6f56b6387902cb">◆ </a></span>prevCloseTime_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="classripple_1_1NetClock.html#a4c2428e178dca6689fa3fb4be0657107">NetClock::time_point</a> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::prevCloseTime_</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="Consensus_8h_source.html#l00568">568</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="afe9ffe7340cdb8c89133cb8e9c362996"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#afe9ffe7340cdb8c89133cb8e9c362996">◆ </a></span>prevLedgerID_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">Ledger_t::ID <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::prevLedgerID_</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="Consensus_8h_source.html#l00574">574</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a524a13145148ff9d6e69328577a11446"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a524a13145148ff9d6e69328577a11446">◆ </a></span>previousLedger_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="classripple_1_1Consensus.html#ab3549c5ca51ce1c6fcbb4ed8ccc65d75">Ledger_t</a> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::previousLedger_</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="Consensus_8h_source.html#l00576">576</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ab57a91d996ce21835688096fc17de88b"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ab57a91d996ce21835688096fc17de88b">◆ </a></span>acquired_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="namespaceripple.html#a46c521271235f4e2715d7fa8b68940ca">hash_map</a><typename TxSet_t::ID, const <a class="el" href="classripple_1_1Consensus.html#a524b889667609917d080a6ec775ab2e4">TxSet_t</a>> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::acquired_</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="Consensus_8h_source.html#l00579">579</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="afa98029589f3d8025211f44f70484b3e"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#afa98029589f3d8025211f44f70484b3e">◆ </a></span>result_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<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/utility/optional.html">std::optional</a><<a class="el" href="classripple_1_1Consensus.html#ad0357314ce3da5e84d4b4fdadb07f11b">Result</a>> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::result_</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="Consensus_8h_source.html#l00581">581</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aedc9943cfe16c077edd70659be0123e1"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aedc9943cfe16c077edd70659be0123e1">◆ </a></span>rawCloseTimes_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="structripple_1_1ConsensusCloseTimes.html">ConsensusCloseTimes</a> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::rawCloseTimes_</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="Consensus_8h_source.html#l00582">582</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ad005b2fb12d340c6f0fa6a59e720a642"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ad005b2fb12d340c6f0fa6a59e720a642">◆ </a></span>currPeerPositions_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="namespaceripple.html#a46c521271235f4e2715d7fa8b68940ca">hash_map</a><<a class="el" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a>, <a class="el" href="classripple_1_1Consensus.html#a357a8b2f6eadd8e3c50da583189d4555">PeerPosition_t</a>> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::currPeerPositions_</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="Consensus_8h_source.html#l00588">588</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a696880af1d64c2d9271a3bb5477aaf45"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a696880af1d64c2d9271a3bb5477aaf45">◆ </a></span>recentPeerPositions_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="namespaceripple.html#a46c521271235f4e2715d7fa8b68940ca">hash_map</a><<a class="el" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a>, <a class="elRef" href="http://en.cppreference.com/w/cpp/container/deque.html">std::deque</a><<a class="el" href="classripple_1_1Consensus.html#a357a8b2f6eadd8e3c50da583189d4555">PeerPosition_t</a>> > <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::recentPeerPositions_</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="Consensus_8h_source.html#l00592">592</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a952cc0a61b025adf8197a9022d70fa12"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a952cc0a61b025adf8197a9022d70fa12">◆ </a></span>prevProposers_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<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/types/size_t.html">std::size_t</a> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::prevProposers_ = 0</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="Consensus_8h_source.html#l00595">595</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="afddcd72ee9347a65b160636404308df9"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#afddcd72ee9347a65b160636404308df9">◆ </a></span>deadNodes_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="namespaceripple.html#a7750eec5e079354285f1d60cfd0247ca">hash_set</a><<a class="el" href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">NodeID_t</a>> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::deadNodes_</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="Consensus_8h_source.html#l00598">598</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a0e680e53d4bb507d9d2c69f6ee1d65b8"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a0e680e53d4bb507d9d2c69f6ee1d65b8">◆ </a></span>j_</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<class Adaptor > </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">const <a class="el" href="classbeast_1_1Journal.html">beast::Journal</a> <a class="el" href="classripple_1_1Consensus.html">ripple::Consensus</a>< Adaptor >::j_</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="Consensus_8h_source.html#l00601">601</a> of file <a class="el" href="Consensus_8h_source.html">Consensus.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
<div class="ttc" id="afind_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/find.html">std::find</a></div><div class="ttdeci">T find(T... args)</div></div>
|
|
<div class="ttc" id="aclassripple_1_1Consensus_html_a6e81235f0c5f91c23cbe1938ffe8a9e3"><div class="ttname"><a href="classripple_1_1Consensus.html#a6e81235f0c5f91c23cbe1938ffe8a9e3">ripple::Consensus::getJson</a></div><div class="ttdeci">Json::Value getJson(bool full) const</div><div class="ttdoc">Get the Json state of the consensus process.</div><div class="ttdef"><b>Definition:</b> <a href="Consensus_8h_source.html#l00908">Consensus.h:908</a></div></div>
|
|
<div class="ttc" id="aclassripple_1_1Consensus_html_ad0357314ce3da5e84d4b4fdadb07f11b"><div class="ttname"><a href="classripple_1_1Consensus.html#ad0357314ce3da5e84d4b4fdadb07f11b">ripple::Consensus::Result</a></div><div class="ttdeci">ConsensusResult< Adaptor > Result</div><div class="ttdef"><b>Definition:</b> <a href="Consensus_8h_source.html#l00296">Consensus.h:296</a></div></div>
|
|
<div class="ttc" id="anamespaceripple_html_aa761b49f905eb9fd8c8ae754a0eb7504"><div class="ttname"><a href="namespaceripple.html#aa761b49f905eb9fd8c8ae754a0eb7504">ripple::erase</a></div><div class="ttdeci">void erase(STObject &st, TypedField< U > const &f)</div><div class="ttdoc">Remove a field in an STObject.</div><div class="ttdef"><b>Definition:</b> <a href="STExchange_8h_source.html#l00171">STExchange.h:171</a></div></div>
|
|
<div class="ttc" id="anamespaceripple_html_ad584345ad1d39fa2234a298a991f8e66"><div class="ttname"><a href="namespaceripple.html#ad584345ad1d39fa2234a298a991f8e66">ripple::compare</a></div><div class="ttdeci">int compare(base_uint< Bits, Tag > const &a, base_uint< Bits, Tag > const &b)</div><div class="ttdef"><b>Definition:</b> <a href="base__uint_8h_source.html#l00553">base_uint.h:553</a></div></div>
|
|
<div class="ttc" id="aclassripple_1_1Consensus_html_a641a3e0e3bb00ef33619c4ef9a26bbed"><div class="ttname"><a href="classripple_1_1Consensus.html#a641a3e0e3bb00ef33619c4ef9a26bbed">ripple::Consensus::prevLedgerID</a></div><div class="ttdeci">Ledger_t::ID prevLedgerID() const</div><div class="ttdoc">Get the previous ledger ID.</div><div class="ttdef"><b>Definition:</b> <a href="Consensus_8h_source.html#l00412">Consensus.h:412</a></div></div>
|
|
<div class="ttc" id="aclassripple_1_1Consensus_html_ac0595ebca5fc6577d86cb4b4dddaef3e"><div class="ttname"><a href="classripple_1_1Consensus.html#ac0595ebca5fc6577d86cb4b4dddaef3e">ripple::Consensus::NodeID_t</a></div><div class="ttdeci">typename Adaptor::NodeID_t NodeID_t</div><div class="ttdef"><b>Definition:</b> <a href="Consensus_8h_source.html#l00288">Consensus.h:288</a></div></div>
|
|
<div class="ttc" id="anamespaceripple_html_ad5143ceada01141772ae4aab984f94bdab314439bc1697845de3749d51dca7c15"><div class="ttname"><a href="namespaceripple.html#ad5143ceada01141772ae4aab984f94bdab314439bc1697845de3749d51dca7c15">ripple::HashPrefix::proposal</a></div><div class="ttdeci">@ proposal</div><div class="ttdoc">proposal for signing</div></div>
|
|
<div class="ttc" id="ainteger_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a></div></div>
|
|
<div class="ttc" id="amap_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/map.html">std::map</a></div><div class="ttdoc">STL class.</div></div>
|
|
<div class="ttc" id="aclassripple_1_1Consensus_html_ab3549c5ca51ce1c6fcbb4ed8ccc65d75"><div class="ttname"><a href="classripple_1_1Consensus.html#ab3549c5ca51ce1c6fcbb4ed8ccc65d75">ripple::Consensus::Ledger_t</a></div><div class="ttdeci">typename Adaptor::Ledger_t Ledger_t</div><div class="ttdef"><b>Definition:</b> <a href="Consensus_8h_source.html#l00286">Consensus.h:286</a></div></div>
|
|
<div class="ttc" id="aclassripple_1_1Consensus_html_a357a8b2f6eadd8e3c50da583189d4555"><div class="ttname"><a href="classripple_1_1Consensus.html#a357a8b2f6eadd8e3c50da583189d4555">ripple::Consensus::PeerPosition_t</a></div><div class="ttdeci">typename Adaptor::PeerPosition_t PeerPosition_t</div><div class="ttdef"><b>Definition:</b> <a href="Consensus_8h_source.html#l00290">Consensus.h:290</a></div></div>
|
|
<div class="ttc" id="anamespaceripple_html_a33f8b6e68b5f63faf2e9755cc251563e"><div class="ttname"><a href="namespaceripple.html#a33f8b6e68b5f63faf2e9755cc251563e">ripple::ConsensusMode</a></div><div class="ttdeci">ConsensusMode</div><div class="ttdoc">Represents how a node currently participates in Consensus.</div><div class="ttdef"><b>Definition:</b> <a href="ConsensusTypes_8h_source.html#l00055">ConsensusTypes.h:55</a></div></div>
|
|
<div class="ttc" id="aoptional_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a></div></div>
|
|
<div class="ttc" id="anamespaceripple_html_aebcc26ebe20ddcd3bcbfd5402e0acb89"><div class="ttname"><a href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">ripple::after</a></div><div class="ttdeci">static bool after(NetClock::time_point now, std::uint32_t mark)</div><div class="ttdoc">Has the specified time passed?</div><div class="ttdef"><b>Definition:</b> <a href="Escrow_8cpp_source.html#l00088">Escrow.cpp:88</a></div></div>
|
|
<div class="ttc" id="asize_t_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div></div>
|
|
<div class="ttc" id="aclassripple_1_1Consensus_html_a524b889667609917d080a6ec775ab2e4"><div class="ttname"><a href="classripple_1_1Consensus.html#a524b889667609917d080a6ec775ab2e4">ripple::Consensus::TxSet_t</a></div><div class="ttdeci">typename Adaptor::TxSet_t TxSet_t</div><div class="ttdef"><b>Definition:</b> <a href="Consensus_8h_source.html#l00287">Consensus.h:287</a></div></div>
|
|
<div class="ttc" id="aclassripple_1_1NetClock_html_afe3767203cd971a00067671641bc7e16"><div class="ttname"><a href="classripple_1_1NetClock.html#afe3767203cd971a00067671641bc7e16">ripple::NetClock::duration</a></div><div class="ttdeci">std::chrono::duration< rep, period > duration</div><div class="ttdef"><b>Definition:</b> <a href="chrono_8h_source.html#l00055">chrono.h:55</a></div></div>
|
|
<div class="ttc" id="aexists_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/experimental/fs/exists.html">std::experimental::filesystem::exists</a></div><div class="ttdeci">T exists(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#l00145">json_value.h:145</a></div></div>
|
|
<!-- start footer part -->
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated by  <a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
</a> 1.8.17
|
|
</small></address>
|
|
</body>
|
|
</html>
|