This commit is contained in:
intelliot
2023-04-20 18:40:39 +00:00
parent b905804594
commit aba93717f2
6 changed files with 891 additions and 895 deletions

View File

@@ -2554,7 +2554,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a1dd0f5cbae7e22dcd6832624f0a16e79"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a1dd0f5cbae7e22dcd6832624f0a16e79">ripple::LedgerMaster::getNeededValidations</a></div><div class="ttdeci">std::size_t getNeededValidations()</div><div class="ttdoc">Determines how many validations are needed to fully validate a ledger.</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l01036">LedgerMaster.cpp:1036</a></div></div> <div class="ttc" id="aclassripple_1_1LedgerMaster_html_a1dd0f5cbae7e22dcd6832624f0a16e79"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a1dd0f5cbae7e22dcd6832624f0a16e79">ripple::LedgerMaster::getNeededValidations</a></div><div class="ttdeci">std::size_t getNeededValidations()</div><div class="ttdoc">Determines how many validations are needed to fully validate a ledger.</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l01036">LedgerMaster.cpp:1036</a></div></div>
<div class="ttc" id="aclassbeast_1_1abstract__clock_html"><div class="ttname"><a href="classbeast_1_1abstract__clock.html">beast::abstract_clock&lt; std::chrono::steady_clock &gt;</a></div></div> <div class="ttc" id="aclassbeast_1_1abstract__clock_html"><div class="ttname"><a href="classbeast_1_1abstract__clock.html">beast::abstract_clock&lt; std::chrono::steady_clock &gt;</a></div></div>
<div class="ttc" id="amemory_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/memory.html">memory</a></div></div> <div class="ttc" id="amemory_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/memory.html">memory</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a0937f06a5eddf696521deaef47192a32"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a0937f06a5eddf696521deaef47192a32">ripple::ValidatorList::negativeUNLFilter</a></div><div class="ttdeci">std::vector&lt; std::shared_ptr&lt; STValidation &gt; &gt; negativeUNLFilter(std::vector&lt; std::shared_ptr&lt; STValidation &gt;&gt; &amp;&amp;validations) const</div><div class="ttdoc">Remove validations that are from validators on the negative UNL.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01958">ValidatorList.cpp:1958</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a0937f06a5eddf696521deaef47192a32"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a0937f06a5eddf696521deaef47192a32">ripple::ValidatorList::negativeUNLFilter</a></div><div class="ttdeci">std::vector&lt; std::shared_ptr&lt; STValidation &gt; &gt; negativeUNLFilter(std::vector&lt; std::shared_ptr&lt; STValidation &gt;&gt; &amp;&amp;validations) const</div><div class="ttdoc">Remove validations that are from validators on the negative UNL.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01954">ValidatorList.cpp:1954</a></div></div>
<div class="ttc" id="anamespaceripple_html_ae93a0ce909950194e6f9aaed7579ea74"><div class="ttname"><a href="namespaceripple.html#ae93a0ce909950194e6f9aaed7579ea74">ripple::areCompatible</a></div><div class="ttdeci">bool areCompatible(ReadView const &amp;validLedger, ReadView const &amp;testLedger, beast::Journal::Stream &amp;s, const char *reason)</div><div class="ttdoc">Return false if the test ledger is provably incompatible with the valid ledger, that is,...</div><div class="ttdef"><b>Definition:</b> <a href="View_8cpp_source.html#l00482">View.cpp:482</a></div></div> <div class="ttc" id="anamespaceripple_html_ae93a0ce909950194e6f9aaed7579ea74"><div class="ttname"><a href="namespaceripple.html#ae93a0ce909950194e6f9aaed7579ea74">ripple::areCompatible</a></div><div class="ttdeci">bool areCompatible(ReadView const &amp;validLedger, ReadView const &amp;testLedger, beast::Journal::Stream &amp;s, const char *reason)</div><div class="ttdoc">Return false if the test ledger is provably incompatible with the valid ledger, that is,...</div><div class="ttdef"><b>Definition:</b> <a href="View_8cpp_source.html#l00482">View.cpp:482</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a472f0a396bcdde5d66d860d0d5642923"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a472f0a396bcdde5d66d860d0d5642923">ripple::LedgerMaster::mAdvanceThread</a></div><div class="ttdeci">bool mAdvanceThread</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8h_source.html#l00371">LedgerMaster.h:371</a></div></div> <div class="ttc" id="aclassripple_1_1LedgerMaster_html_a472f0a396bcdde5d66d860d0d5642923"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a472f0a396bcdde5d66d860d0d5642923">ripple::LedgerMaster::mAdvanceThread</a></div><div class="ttdeci">bool mAdvanceThread</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8h_source.html#l00371">LedgerMaster.h:371</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a168ff9afab04a717a7dacbca1927566c"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a168ff9afab04a717a7dacbca1927566c">ripple::LedgerMaster::checkAccept</a></div><div class="ttdeci">void checkAccept(std::shared_ptr&lt; Ledger const &gt; const &amp;ledger)</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l01042">LedgerMaster.cpp:1042</a></div></div> <div class="ttc" id="aclassripple_1_1LedgerMaster_html_a168ff9afab04a717a7dacbca1927566c"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a168ff9afab04a717a7dacbca1927566c">ripple::LedgerMaster::checkAccept</a></div><div class="ttdeci">void checkAccept(std::shared_ptr&lt; Ledger const &gt; const &amp;ledger)</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l01042">LedgerMaster.cpp:1042</a></div></div>

View File

@@ -1780,283 +1780,279 @@ $(function() {
<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> effectiveUnlSize,</div> <div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> effectiveUnlSize,</div>
<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> seenSize)</div> <div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> seenSize)</div>
<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;{</div> <div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;{</div>
<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; <span class="comment">// Do not use achievable quorum until lists from all configured</span></div> <div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; <span class="comment">// Use quorum if specified via command line.</span></div>
<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="comment">// publishers are available</span></div> <div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1ValidatorList.html#ac3b9186600dcd1c5326c80af17165741">minimumQuorum_</a> &gt; 0)</div>
<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; list : <a class="code" href="classripple_1_1ValidatorList.html#aebd0354cf915b7c82161dca56c5c378b">publisherLists_</a>)</div> <div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; {</div>
<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; {</div> <div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; JLOG(<a class="code" href="classripple_1_1ValidatorList.html#acedaeedad936d4e850ade479e3de91cf">j_</a>.<a class="code" href="classbeast_1_1Journal.html#ad8fefe3e8ad583e1ed1bf02094ac3d8f">warn</a>()) &lt;&lt; <span class="stringliteral">&quot;Using potentially unsafe quorum of &quot;</span></div>
<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; <span class="keywordflow">if</span> (list.second.status != <a class="code" href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4ae4894ca167b08880bfc35862f18575eb">PublisherStatus::available</a>)</div> <div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; &lt;&lt; *<a class="code" href="classripple_1_1ValidatorList.html#ac3b9186600dcd1c5326c80af17165741">minimumQuorum_</a></div>
<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; <span class="keywordflow">return</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/numeric_limits/max.html">std::numeric_limits&lt;std::size_t&gt;::max</a>();</div> <div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; &lt;&lt; <span class="stringliteral">&quot; as specified on the command line&quot;</span>;</div>
<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; }</div> <div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; <span class="keywordflow">return</span> *<a class="code" href="classripple_1_1ValidatorList.html#ac3b9186600dcd1c5326c80af17165741">minimumQuorum_</a>;</div>
<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; </div> <div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; }</div>
<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; <span class="comment">// Use an 80% quorum to balance fork safety, liveness, and required UNL</span></div> <div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; </div>
<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <span class="comment">// overlap.</span></div> <div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <span class="comment">// Do not use achievable quorum until lists from all configured</span></div>
<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; <span class="comment">//</span></div> <div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; <span class="comment">// publishers are available</span></div>
<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <span class="comment">// Theorem 8 of the Analysis of the XRP Ledger Consensus Protocol</span></div> <div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; list : <a class="code" href="classripple_1_1ValidatorList.html#aebd0354cf915b7c82161dca56c5c378b">publisherLists_</a>)</div>
<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; <span class="comment">// (https://arxiv.org/abs/1802.07242) says:</span></div> <div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; {</div>
<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; <span class="comment">// XRP LCP guarantees fork safety if Oi,j &gt; nj/2 + ni qi + ti,j</span></div> <div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; <span class="keywordflow">if</span> (list.second.status != <a class="code" href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4ae4894ca167b08880bfc35862f18575eb">PublisherStatus::available</a>)</div>
<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <span class="comment">// for every pair of nodes Pi, Pj.</span></div> <div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <span class="keywordflow">return</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/numeric_limits/max.html">std::numeric_limits&lt;std::size_t&gt;::max</a>();</div>
<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <span class="comment">//</span></div> <div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; }</div>
<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; <span class="comment">// ni: size of Pi&#39;s UNL</span></div> <div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; </div>
<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <span class="comment">// nj: size of Pj&#39;s UNL</span></div> <div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <span class="comment">// Use an 80% quorum to balance fork safety, liveness, and required UNL</span></div>
<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; <span class="comment">// Oi,j: number of validators in both UNLs</span></div> <div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; <span class="comment">// overlap.</span></div>
<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <span class="comment">// qi: validation quorum for Pi&#39;s UNL</span></div> <div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <span class="comment">// ti, tj: maximum number of allowed Byzantine faults in Pi and Pj&#39;s</span></div> <div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <span class="comment">// Theorem 8 of the Analysis of the XRP Ledger Consensus Protocol</span></div>
<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; <span class="comment">// UNLs ti,j: min{ti, tj, Oi,j}</span></div> <div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; <span class="comment">// (https://arxiv.org/abs/1802.07242) says:</span></div>
<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; <span class="comment">//</span></div> <div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; <span class="comment">// XRP LCP guarantees fork safety if Oi,j &gt; nj/2 + ni qi + ti,j</span></div>
<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; <span class="comment">// Assume ni &lt; nj, meaning and ti,j = ti</span></div> <div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; <span class="comment">// for every pair of nodes Pi, Pj.</span></div>
<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; <span class="comment">//</span></div> <div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; <span class="comment">// For qi = .8*ni, we make ti &lt;= .2*ni</span></div> <div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; <span class="comment">// ni: size of Pi&#39;s UNL</span></div>
<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="comment">// (We could make ti lower and tolerate less UNL overlap. However in</span></div> <div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="comment">// nj: size of Pj&#39;s UNL</span></div>
<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <span class="comment">// order to prioritize safety over liveness, we need ti &gt;= ni - qi)</span></div> <div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <span class="comment">// Oi,j: number of validators in both UNLs</span></div>
<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; <span class="comment">//</span></div> <div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; <span class="comment">// qi: validation quorum for Pi&#39;s UNL</span></div>
<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; <span class="comment">// An 80% quorum allows two UNLs to safely have &lt; .2*ni unique</span></div> <div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; <span class="comment">// ti, tj: maximum number of allowed Byzantine faults in Pi and Pj&#39;s</span></div>
<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; <span class="comment">// validators between them:</span></div> <div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; <span class="comment">// UNLs ti,j: min{ti, tj, Oi,j}</span></div>
<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; <span class="comment">//</span></div> <div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; <span class="comment">// pi = ni - Oi,j</span></div> <div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; <span class="comment">// Assume ni &lt; nj, meaning and ti,j = ti</span></div>
<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; <span class="comment">// pj = nj - Oi,j</span></div> <div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; <span class="comment">//</span></div> <div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; <span class="comment">// For qi = .8*ni, we make ti &lt;= .2*ni</span></div>
<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; <span class="comment">// Oi,j &gt; nj/2 + ni qi + ti,j</span></div> <div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; <span class="comment">// (We could make ti lower and tolerate less UNL overlap. However in</span></div>
<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; <span class="comment">// ni - pi &gt; (ni - pi + pj)/2 + ni .8*ni + .2*ni</span></div> <div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; <span class="comment">// order to prioritize safety over liveness, we need ti &gt;= ni - qi)</span></div>
<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; <span class="comment">// pi + pj &lt; .2*ni</span></div> <div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; <span class="comment">//</span></div> <div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; <span class="comment">// An 80% quorum allows two UNLs to safely have &lt; .2*ni unique</span></div>
<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="comment">// Note that the negative UNL protocol introduced the</span></div> <div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="comment">// validators between them:</span></div>
<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; <span class="comment">// AbsoluteMinimumQuorum which is 60% of the original UNL size. The</span></div> <div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; <span class="comment">// effective quorum should not be lower than it.</span></div> <div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; <span class="comment">// pi = ni - Oi,j</span></div>
<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; <span class="keyword">auto</span> <a class="code" href="classripple_1_1ValidatorList.html#ad28f57783826e0b090713c89265c81e4">quorum</a> = <span class="keyword">static_cast&lt;</span><a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a><span class="keyword">&gt;</span>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a>(</div> <div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; <span class="comment">// pj = nj - Oi,j</span></div>
<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/numeric/math/ceil.html">std::ceil</a>(effectiveUnlSize * 0.8f), <a class="codeRef" href="http://en.cppreference.com/w/cpp/numeric/math/ceil.html">std::ceil</a>(unlSize * 0.6f)));</div> <div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; </div> <div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; <span class="comment">// Oi,j &gt; nj/2 + ni qi + ti,j</span></div>
<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; <span class="comment">// Use lower quorum specified via command line if the normal quorum</span></div> <div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; <span class="comment">// ni - pi &gt; (ni - pi + pj)/2 + ni .8*ni + .2*ni</span></div>
<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; <span class="comment">// appears unreachable based on the number of recently received</span></div> <div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; <span class="comment">// pi + pj &lt; .2*ni</span></div>
<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; <span class="comment">// validations.</span></div> <div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1ValidatorList.html#ac3b9186600dcd1c5326c80af17165741">minimumQuorum_</a> &amp;&amp; *<a class="code" href="classripple_1_1ValidatorList.html#ac3b9186600dcd1c5326c80af17165741">minimumQuorum_</a> &lt; <a class="code" href="classripple_1_1ValidatorList.html#ad28f57783826e0b090713c89265c81e4">quorum</a> &amp;&amp; seenSize &lt; <a class="code" href="classripple_1_1ValidatorList.html#ad28f57783826e0b090713c89265c81e4">quorum</a>)</div> <div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; <span class="comment">// Note that the negative UNL protocol introduced the</span></div>
<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; {</div> <div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; <span class="comment">// AbsoluteMinimumQuorum which is 60% of the original UNL size. The</span></div>
<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#ad28f57783826e0b090713c89265c81e4">quorum</a> = *<a class="code" href="classripple_1_1ValidatorList.html#ac3b9186600dcd1c5326c80af17165741">minimumQuorum_</a>;</div> <div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; <span class="comment">// effective quorum should not be lower than it.</span></div>
<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; </div> <div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a><span class="keyword">&gt;</span>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a>(</div>
<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; JLOG(<a class="code" href="classripple_1_1ValidatorList.html#acedaeedad936d4e850ade479e3de91cf">j_</a>.<a class="code" href="classbeast_1_1Journal.html#ad8fefe3e8ad583e1ed1bf02094ac3d8f">warn</a>()) &lt;&lt; <span class="stringliteral">&quot;Using unsafe quorum of &quot;</span> &lt;&lt; <a class="code" href="classripple_1_1ValidatorList.html#ad28f57783826e0b090713c89265c81e4">quorum</a></div> <div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/numeric/math/ceil.html">std::ceil</a>(effectiveUnlSize * 0.8f), <a class="codeRef" href="http://en.cppreference.com/w/cpp/numeric/math/ceil.html">std::ceil</a>(unlSize * 0.6f)));</div>
<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; &lt;&lt; <span class="stringliteral">&quot; as specified in the command line&quot;</span>;</div> <div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;}</div>
<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; }</div> <div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; </div>
<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; </div> <div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;<a class="code" href="structripple_1_1TrustChanges.html">TrustChanges</a></div>
<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1ValidatorList.html#ad28f57783826e0b090713c89265c81e4">quorum</a>;</div> <div class="line"><a name="l01769"></a><span class="lineno"><a class="line" href="classripple_1_1ValidatorList.html#aa4813b41483e2df542ce2731fb7b5f5d"> 1769</a></span>&#160;<a class="code" href="classripple_1_1ValidatorList.html#aa4813b41483e2df542ce2731fb7b5f5d">ValidatorList::updateTrusted</a>(</div>
<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160;}</div> <div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set.html">hash_set&lt;NodeID&gt;</a> <span class="keyword">const</span>&amp; seenValidators,</div>
<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; </div> <div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a> closeTime,</div>
<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;<a class="code" href="structripple_1_1TrustChanges.html">TrustChanges</a></div> <div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; <a class="code" href="classripple_1_1NetworkOPs.html">NetworkOPs</a>&amp; ops,</div>
<div class="line"><a name="l01773"></a><span class="lineno"><a class="line" href="classripple_1_1ValidatorList.html#aa4813b41483e2df542ce2731fb7b5f5d"> 1773</a></span>&#160;<a class="code" href="classripple_1_1ValidatorList.html#aa4813b41483e2df542ce2731fb7b5f5d">ValidatorList::updateTrusted</a>(</div> <div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; <a class="code" href="classripple_1_1Overlay.html">Overlay</a>&amp; overlay,</div>
<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set.html">hash_set&lt;NodeID&gt;</a> <span class="keyword">const</span>&amp; seenValidators,</div> <div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; <a class="code" href="classripple_1_1HashRouter.html">HashRouter</a>&amp; hashRouter)</div>
<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a> closeTime,</div> <div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;{</div>
<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <a class="code" href="classripple_1_1NetworkOPs.html">NetworkOPs</a>&amp; ops,</div> <div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <span class="keyword">using namespace </span>std::chrono_literals;</div>
<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; <a class="code" href="classripple_1_1Overlay.html">Overlay</a>&amp; overlay,</div> <div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1ValidatorList.html#a390041ee5976df2e6b170a3c6eed5de5">timeKeeper_</a>.<a class="code" href="classripple_1_1TimeKeeper.html#af1b5d38f3ba1bcacfbb7a89979af70e4">now</a>() &gt; closeTime + 30s)</div>
<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; <a class="code" href="classripple_1_1HashRouter.html">HashRouter</a>&amp; hashRouter)</div> <div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; closeTime = <a class="code" href="classripple_1_1ValidatorList.html#a390041ee5976df2e6b170a3c6eed5de5">timeKeeper_</a>.<a class="code" href="classripple_1_1TimeKeeper.html#af1b5d38f3ba1bcacfbb7a89979af70e4">now</a>();</div>
<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;{</div> <div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; </div>
<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; <span class="keyword">using namespace </span>std::chrono_literals;</div> <div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock{<a class="code" href="classripple_1_1ValidatorList.html#a94f8763278cc8e85a241cfccaed69183">mutex_</a>};</div>
<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1ValidatorList.html#a390041ee5976df2e6b170a3c6eed5de5">timeKeeper_</a>.<a class="code" href="classripple_1_1TimeKeeper.html#af1b5d38f3ba1bcacfbb7a89979af70e4">now</a>() &gt; closeTime + 30s)</div> <div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; </div>
<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; closeTime = <a class="code" href="classripple_1_1ValidatorList.html#a390041ee5976df2e6b170a3c6eed5de5">timeKeeper_</a>.<a class="code" href="classripple_1_1TimeKeeper.html#af1b5d38f3ba1bcacfbb7a89979af70e4">now</a>();</div> <div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; <span class="comment">// Rotate pending and remove expired published lists</span></div>
<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; </div> <div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; <span class="keywordtype">bool</span> good = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock{<a class="code" href="classripple_1_1ValidatorList.html#a94f8763278cc8e85a241cfccaed69183">mutex_</a>};</div> <div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; [pubKey, collection] : <a class="code" href="classripple_1_1ValidatorList.html#aebd0354cf915b7c82161dca56c5c378b">publisherLists_</a>)</div>
<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; </div> <div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; {</div>
<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; <span class="comment">// Rotate pending and remove expired published lists</span></div> <div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; {</div>
<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; <span class="keywordtype">bool</span> good = <span class="keyword">true</span>;</div> <div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; <span class="keyword">auto</span>&amp; remaining = collection.remaining;</div>
<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; [pubKey, collection] : <a class="code" href="classripple_1_1ValidatorList.html#aebd0354cf915b7c82161dca56c5c378b">publisherLists_</a>)</div> <div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> firstIter = remaining.begin();</div>
<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; {</div> <div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; <span class="keyword">auto</span> iter = firstIter;</div>
<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; {</div> <div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; <span class="keywordflow">if</span> (iter != remaining.end() &amp;&amp; iter-&gt;second.validFrom &lt;= closeTime)</div>
<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; <span class="keyword">auto</span>&amp; remaining = collection.remaining;</div> <div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; {</div>
<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> firstIter = remaining.begin();</div> <div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160; <span class="comment">// Find the LAST candidate that is ready to go live.</span></div>
<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; <span class="keyword">auto</span> iter = firstIter;</div> <div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> next = <a class="codeRef" href="http://en.cppreference.com/w/cpp/iterator/next.html">std::next</a>(iter); next != remaining.end() &amp;&amp;</div>
<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; <span class="keywordflow">if</span> (iter != remaining.end() &amp;&amp; iter-&gt;second.validFrom &lt;= closeTime)</div> <div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; next-&gt;second.validFrom &lt;= closeTime;</div>
<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; {</div> <div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; ++iter, ++next)</div>
<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160; <span class="comment">// Find the LAST candidate that is ready to go live.</span></div> <div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160; {</div>
<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> next = <a class="codeRef" href="http://en.cppreference.com/w/cpp/iterator/next.html">std::next</a>(iter); next != remaining.end() &amp;&amp;</div> <div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; assert(<a class="codeRef" href="http://en.cppreference.com/w/cpp/iterator/next.html">std::next</a>(iter) == next);</div>
<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; next-&gt;second.validFrom &lt;= closeTime;</div> <div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; }</div>
<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; ++iter, ++next)</div> <div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; assert(iter != remaining.end());</div>
<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; {</div> <div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; </div>
<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; assert(<a class="codeRef" href="http://en.cppreference.com/w/cpp/iterator/next.html">std::next</a>(iter) == next);</div> <div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; <span class="comment">// Rotate the pending list in to current</span></div>
<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; }</div> <div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; <span class="keyword">auto</span> sequence = iter-&gt;first;</div>
<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; assert(iter != remaining.end());</div> <div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; <span class="keyword">auto</span>&amp; candidate = iter-&gt;second;</div>
<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; </div> <div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; <span class="keyword">auto</span>&amp; <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a> = collection.current;</div>
<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; <span class="comment">// Rotate the pending list in to current</span></div> <div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; assert(candidate.validFrom &lt;= closeTime);</div>
<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; <span class="keyword">auto</span> sequence = iter-&gt;first;</div> <div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; </div>
<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; <span class="keyword">auto</span>&amp; candidate = iter-&gt;second;</div> <div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> oldList = <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>.list;</div>
<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; <span class="keyword">auto</span>&amp; <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a> = collection.current;</div> <div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a> = std::move(candidate);</div>
<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; assert(candidate.validFrom &lt;= closeTime);</div> <div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; <span class="keywordflow">if</span> (collection.status != <a class="code" href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4ae4894ca167b08880bfc35862f18575eb">PublisherStatus::available</a>)</div>
<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; </div> <div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; collection.status = <a class="code" href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4ae4894ca167b08880bfc35862f18575eb">PublisherStatus::available</a>;</div>
<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> oldList = <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>.list;</div> <div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; assert(<a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>.sequence == sequence);</div>
<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a> = std::move(candidate);</div> <div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; <span class="comment">// If the list is expired, remove the validators so they don&#39;t</span></div>
<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; <span class="keywordflow">if</span> (collection.status != <a class="code" href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4ae4894ca167b08880bfc35862f18575eb">PublisherStatus::available</a>)</div> <div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; <span class="comment">// get processed in. The expiration check below will do the rest</span></div>
<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; collection.status = <a class="code" href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4ae4894ca167b08880bfc35862f18575eb">PublisherStatus::available</a>;</div> <div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; <span class="comment">// of the work</span></div>
<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; assert(<a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>.sequence == sequence);</div> <div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>.validUntil &lt;= closeTime)</div>
<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; <span class="comment">// If the list is expired, remove the validators so they don&#39;t</span></div> <div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>.list.clear();</div>
<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; <span class="comment">// get processed in. The expiration check below will do the rest</span></div> <div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; </div>
<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; <span class="comment">// of the work</span></div> <div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#a3728d8811726a5ffb23bcd5c21d235a3">updatePublisherList</a>(pubKey, <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>, oldList, lock);</div>
<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>.validUntil &lt;= closeTime)</div> <div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; </div>
<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160; <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>.list.clear();</div> <div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160; <span class="comment">// Only broadcast the current, which will consequently only</span></div>
<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; </div> <div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; <span class="comment">// send to peers that don&#39;t understand v2, or which are</span></div>
<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#a3728d8811726a5ffb23bcd5c21d235a3">updatePublisherList</a>(pubKey, <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>, oldList, lock);</div> <div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; <span class="comment">// unknown (unlikely). Those that do understand v2 should</span></div>
<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; </div> <div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; <span class="comment">// already have this list and are in the process of</span></div>
<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; <span class="comment">// Only broadcast the current, which will consequently only</span></div> <div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; <span class="comment">// switching themselves.</span></div>
<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; <span class="comment">// send to peers that don&#39;t understand v2, or which are</span></div> <div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#a0db3ac667949c8002894beb011f7f139">broadcastBlobs</a>(</div>
<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; <span class="comment">// unknown (unlikely). Those that do understand v2 should</span></div> <div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; pubKey,</div>
<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; <span class="comment">// already have this list and are in the process of</span></div> <div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; collection,</div>
<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; <span class="comment">// switching themselves.</span></div> <div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; sequence,</div>
<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#a0db3ac667949c8002894beb011f7f139">broadcastBlobs</a>(</div> <div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>.hash,</div>
<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; pubKey,</div> <div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; overlay,</div>
<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; collection,</div> <div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; hashRouter,</div>
<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; sequence,</div> <div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#acedaeedad936d4e850ade479e3de91cf">j_</a>);</div>
<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>.hash,</div> <div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; </div>
<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; overlay,</div> <div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; <span class="comment">// Erase any candidates that we skipped over, plus this one</span></div>
<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; hashRouter,</div> <div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; remaining.erase(firstIter, <a class="codeRef" href="http://en.cppreference.com/w/cpp/iterator/next.html">std::next</a>(iter));</div>
<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#acedaeedad936d4e850ade479e3de91cf">j_</a>);</div> <div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; }</div>
<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; </div> <div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; }</div>
<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; <span class="comment">// Erase any candidates that we skipped over, plus this one</span></div> <div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; <span class="comment">// Remove if expired</span></div>
<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; remaining.erase(firstIter, <a class="codeRef" href="http://en.cppreference.com/w/cpp/iterator/next.html">std::next</a>(iter));</div> <div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; <span class="keywordflow">if</span> (collection.status == <a class="code" href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4ae4894ca167b08880bfc35862f18575eb">PublisherStatus::available</a> &amp;&amp;</div>
<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; }</div> <div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; collection.current.validUntil &lt;= closeTime)</div>
<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; }</div> <div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; {</div>
<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; <span class="comment">// Remove if expired</span></div> <div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#a9d3a6dfa4f7ffe2717513369298e7268">removePublisherList</a>(lock, pubKey, <a class="code" href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4ac4bfb2a0bab0e91bc7dcfbe3bbec246e">PublisherStatus::expired</a>);</div>
<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; <span class="keywordflow">if</span> (collection.status == <a class="code" href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4ae4894ca167b08880bfc35862f18575eb">PublisherStatus::available</a> &amp;&amp;</div> <div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; ops.<a class="code" href="classripple_1_1NetworkOPs.html#a3b837bd8b8633d45d7e5f26961fab856">setUNLBlocked</a>();</div>
<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; collection.current.validUntil &lt;= closeTime)</div> <div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; }</div>
<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; {</div> <div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; <span class="keywordflow">if</span> (collection.status != <a class="code" href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4ae4894ca167b08880bfc35862f18575eb">PublisherStatus::available</a>)</div>
<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#a9d3a6dfa4f7ffe2717513369298e7268">removePublisherList</a>(lock, pubKey, <a class="code" href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4ac4bfb2a0bab0e91bc7dcfbe3bbec246e">PublisherStatus::expired</a>);</div> <div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; good = <span class="keyword">false</span>;</div>
<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; ops.<a class="code" href="classripple_1_1NetworkOPs.html#a3b837bd8b8633d45d7e5f26961fab856">setUNLBlocked</a>();</div> <div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; }</div>
<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; }</div> <div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; <span class="keywordflow">if</span> (good)</div>
<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; <span class="keywordflow">if</span> (collection.status != <a class="code" href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4ae4894ca167b08880bfc35862f18575eb">PublisherStatus::available</a>)</div> <div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; ops.<a class="code" href="classripple_1_1NetworkOPs.html#ace637a61664a15f70bc362f2ad1101e9">clearUNLBlocked</a>();</div>
<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; good = <span class="keyword">false</span>;</div> <div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; </div>
<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; }</div> <div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; <a class="code" href="structripple_1_1TrustChanges.html">TrustChanges</a> trustChanges;</div>
<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; <span class="keywordflow">if</span> (good)</div> <div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; </div>
<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; ops.<a class="code" href="classripple_1_1NetworkOPs.html#ace637a61664a15f70bc362f2ad1101e9">clearUNLBlocked</a>();</div> <div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; <span class="keyword">auto</span> it = <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>.cbegin();</div>
<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; </div> <div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; <span class="keywordflow">while</span> (it != <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>.cend())</div>
<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; <a class="code" href="structripple_1_1TrustChanges.html">TrustChanges</a> trustChanges;</div> <div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; {</div>
<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; </div> <div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classripple_1_1ValidatorList.html#a4489b055e951d0923286cffecd9dee46">keyListings_</a>.count(*it) || <a class="code" href="classripple_1_1ValidatorList.html#a19f4cc404400551b2a39c7c5a137e01f">validatorManifests_</a>.<a class="code" href="classripple_1_1ManifestCache.html#a6494e744b90cbecd735b460fcd7be82f">revoked</a>(*it))</div>
<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; <span class="keyword">auto</span> it = <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>.cbegin();</div> <div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; {</div>
<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; <span class="keywordflow">while</span> (it != <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>.cend())</div> <div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; trustChanges.<a class="code" href="structripple_1_1TrustChanges.html#a968f2c3bdc3420ca645ad54a5be5c6d9">removed</a>.insert(<a class="code" href="namespaceripple.html#a984ddd646f1e1a5032a9a17f96c6fc55">calcNodeID</a>(*it));</div>
<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; {</div> <div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; it = <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>.erase(it);</div>
<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classripple_1_1ValidatorList.html#a4489b055e951d0923286cffecd9dee46">keyListings_</a>.count(*it) || <a class="code" href="classripple_1_1ValidatorList.html#a19f4cc404400551b2a39c7c5a137e01f">validatorManifests_</a>.<a class="code" href="classripple_1_1ManifestCache.html#a6494e744b90cbecd735b460fcd7be82f">revoked</a>(*it))</div> <div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; }</div>
<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; {</div> <div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; trustChanges.<a class="code" href="structripple_1_1TrustChanges.html#a968f2c3bdc3420ca645ad54a5be5c6d9">removed</a>.insert(<a class="code" href="namespaceripple.html#a984ddd646f1e1a5032a9a17f96c6fc55">calcNodeID</a>(*it));</div> <div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; {</div>
<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; it = <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>.erase(it);</div> <div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; ++it;</div>
<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; }</div> <div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; }</div>
<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; <span class="keywordflow">else</span></div> <div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; }</div>
<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160; {</div> <div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160; </div>
<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; ++it;</div> <div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; val : <a class="code" href="classripple_1_1ValidatorList.html#a4489b055e951d0923286cffecd9dee46">keyListings_</a>)</div>
<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; }</div> <div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; {</div>
<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; }</div> <div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classripple_1_1ValidatorList.html#a19f4cc404400551b2a39c7c5a137e01f">validatorManifests_</a>.<a class="code" href="classripple_1_1ManifestCache.html#a6494e744b90cbecd735b460fcd7be82f">revoked</a>(val.first) &amp;&amp;</div>
<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; </div> <div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>.emplace(val.first).second)</div>
<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; val : <a class="code" href="classripple_1_1ValidatorList.html#a4489b055e951d0923286cffecd9dee46">keyListings_</a>)</div> <div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; trustChanges.<a class="code" href="structripple_1_1TrustChanges.html#a0c0a50258cfb5466d79bcff91a8d5c00">added</a>.insert(<a class="code" href="namespaceripple.html#a984ddd646f1e1a5032a9a17f96c6fc55">calcNodeID</a>(val.first));</div>
<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; {</div> <div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; }</div>
<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classripple_1_1ValidatorList.html#a19f4cc404400551b2a39c7c5a137e01f">validatorManifests_</a>.<a class="code" href="classripple_1_1ManifestCache.html#a6494e744b90cbecd735b460fcd7be82f">revoked</a>(val.first) &amp;&amp;</div> <div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; </div>
<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>.emplace(val.first).second)</div> <div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160; <span class="comment">// If there were any changes, we need to update the ephemeral signing</span></div>
<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; trustChanges.<a class="code" href="structripple_1_1TrustChanges.html#a0c0a50258cfb5466d79bcff91a8d5c00">added</a>.insert(<a class="code" href="namespaceripple.html#a984ddd646f1e1a5032a9a17f96c6fc55">calcNodeID</a>(val.first));</div> <div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; <span class="comment">// keys:</span></div>
<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; }</div> <div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; <span class="keywordflow">if</span> (!trustChanges.<a class="code" href="structripple_1_1TrustChanges.html#a0c0a50258cfb5466d79bcff91a8d5c00">added</a>.empty() || !trustChanges.<a class="code" href="structripple_1_1TrustChanges.html#a968f2c3bdc3420ca645ad54a5be5c6d9">removed</a>.empty())</div>
<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; </div> <div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; {</div>
<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; <span class="comment">// If there were any changes, we need to update the ephemeral signing</span></div> <div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#ae06a469121f9f99ed9f3049e46d0206c">trustedSigningKeys_</a>.clear();</div>
<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; <span class="comment">// keys:</span></div> <div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; </div>
<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; <span class="keywordflow">if</span> (!trustChanges.<a class="code" href="structripple_1_1TrustChanges.html#a0c0a50258cfb5466d79bcff91a8d5c00">added</a>.empty() || !trustChanges.<a class="code" href="structripple_1_1TrustChanges.html#a968f2c3bdc3420ca645ad54a5be5c6d9">removed</a>.empty())</div> <div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; k : <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>)</div>
<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; {</div> <div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#ae06a469121f9f99ed9f3049e46d0206c">trustedSigningKeys_</a>.insert(<a class="code" href="classripple_1_1ValidatorList.html#a19f4cc404400551b2a39c7c5a137e01f">validatorManifests_</a>.<a class="code" href="classripple_1_1ManifestCache.html#a8409a7089c3e04f972f1513a54576133">getSigningKey</a>(k));</div>
<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#ae06a469121f9f99ed9f3049e46d0206c">trustedSigningKeys_</a>.clear();</div> <div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; }</div>
<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; </div> <div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; </div>
<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; k : <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>)</div> <div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; JLOG(<a class="code" href="classripple_1_1ValidatorList.html#acedaeedad936d4e850ade479e3de91cf">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>())</div>
<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#ae06a469121f9f99ed9f3049e46d0206c">trustedSigningKeys_</a>.insert(<a class="code" href="classripple_1_1ValidatorList.html#a19f4cc404400551b2a39c7c5a137e01f">validatorManifests_</a>.<a class="code" href="classripple_1_1ManifestCache.html#a8409a7089c3e04f972f1513a54576133">getSigningKey</a>(k));</div> <div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; &lt;&lt; <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>.size() &lt;&lt; <span class="stringliteral">&quot; of &quot;</span> &lt;&lt; <a class="code" href="classripple_1_1ValidatorList.html#a4489b055e951d0923286cffecd9dee46">keyListings_</a>.size()</div>
<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; }</div> <div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; &lt;&lt; <span class="stringliteral">&quot; listed validators eligible for inclusion in the trusted set&quot;</span>;</div>
<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; </div> <div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; </div>
<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; JLOG(<a class="code" href="classripple_1_1ValidatorList.html#acedaeedad936d4e850ade479e3de91cf">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>())</div> <div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> unlSize = <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>.size();</div>
<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; &lt;&lt; <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>.size() &lt;&lt; <span class="stringliteral">&quot; of &quot;</span> &lt;&lt; <a class="code" href="classripple_1_1ValidatorList.html#a4489b055e951d0923286cffecd9dee46">keyListings_</a>.size()</div> <div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; <span class="keyword">auto</span> effectiveUnlSize = unlSize;</div>
<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; &lt;&lt; <span class="stringliteral">&quot; listed validators eligible for inclusion in the trusted set&quot;</span>;</div> <div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; <span class="keyword">auto</span> seenSize = seenValidators.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/size.html">size</a>();</div>
<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; </div> <div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">negativeUNL_</a>.empty())</div>
<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> unlSize = <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>.size();</div> <div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160; {</div>
<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; <span class="keyword">auto</span> effectiveUnlSize = unlSize;</div> <div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; k : <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>)</div>
<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; <span class="keyword">auto</span> seenSize = seenValidators.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/size.html">size</a>();</div> <div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; {</div>
<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">negativeUNL_</a>.empty())</div> <div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">negativeUNL_</a>.count(k))</div>
<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; {</div> <div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; --effectiveUnlSize;</div>
<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; k : <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>)</div> <div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; }</div>
<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; {</div> <div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set.html">hash_set&lt;NodeID&gt;</a> negUnlNodeIDs;</div>
<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">negativeUNL_</a>.count(k))</div> <div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; k : <a class="code" href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">negativeUNL_</a>)</div>
<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; --effectiveUnlSize;</div> <div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; {</div>
<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; }</div> <div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; negUnlNodeIDs.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/emplace.html">emplace</a>(<a class="code" href="namespaceripple.html#a984ddd646f1e1a5032a9a17f96c6fc55">calcNodeID</a>(k));</div>
<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set.html">hash_set&lt;NodeID&gt;</a> negUnlNodeIDs;</div> <div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; }</div>
<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; k : <a class="code" href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">negativeUNL_</a>)</div> <div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; nid : seenValidators)</div>
<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; {</div> <div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; {</div>
<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; negUnlNodeIDs.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/emplace.html">emplace</a>(<a class="code" href="namespaceripple.html#a984ddd646f1e1a5032a9a17f96c6fc55">calcNodeID</a>(k));</div> <div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; <span class="keywordflow">if</span> (negUnlNodeIDs.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/count.html">count</a>(nid))</div>
<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; }</div> <div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; --seenSize;</div>
<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; nid : seenValidators)</div> <div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; }</div>
<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; {</div> <div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; }</div>
<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; <span class="keywordflow">if</span> (negUnlNodeIDs.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/count.html">count</a>(nid))</div> <div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#a2c598bf8d6f6358e1f08eb47df0b49d2">quorum_</a> = <a class="code" href="classripple_1_1ValidatorList.html#a79545d89d7c7c5bfef7f15ce0510577b">calculateQuorum</a>(unlSize, effectiveUnlSize, seenSize);</div>
<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; --seenSize;</div> <div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; </div>
<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; }</div> <div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; JLOG(<a class="code" href="classripple_1_1ValidatorList.html#acedaeedad936d4e850ade479e3de91cf">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;Using quorum of &quot;</span> &lt;&lt; <a class="code" href="classripple_1_1ValidatorList.html#a2c598bf8d6f6358e1f08eb47df0b49d2">quorum_</a> &lt;&lt; <span class="stringliteral">&quot; for new set of &quot;</span></div>
<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; }</div> <div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; &lt;&lt; unlSize &lt;&lt; <span class="stringliteral">&quot; trusted validators (&quot;</span></div>
<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#a2c598bf8d6f6358e1f08eb47df0b49d2">quorum_</a> = <a class="code" href="classripple_1_1ValidatorList.html#a79545d89d7c7c5bfef7f15ce0510577b">calculateQuorum</a>(unlSize, effectiveUnlSize, seenSize);</div> <div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; &lt;&lt; trustChanges.<a class="code" href="structripple_1_1TrustChanges.html#a0c0a50258cfb5466d79bcff91a8d5c00">added</a>.size() &lt;&lt; <span class="stringliteral">&quot; added, &quot;</span></div>
<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; </div> <div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; &lt;&lt; trustChanges.<a class="code" href="structripple_1_1TrustChanges.html#a968f2c3bdc3420ca645ad54a5be5c6d9">removed</a>.size() &lt;&lt; <span class="stringliteral">&quot; removed)&quot;</span>;</div>
<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; JLOG(<a class="code" href="classripple_1_1ValidatorList.html#acedaeedad936d4e850ade479e3de91cf">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;Using quorum of &quot;</span> &lt;&lt; <a class="code" href="classripple_1_1ValidatorList.html#a2c598bf8d6f6358e1f08eb47df0b49d2">quorum_</a> &lt;&lt; <span class="stringliteral">&quot; for new set of &quot;</span></div> <div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; </div>
<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; &lt;&lt; unlSize &lt;&lt; <span class="stringliteral">&quot; trusted validators (&quot;</span></div> <div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; <span class="keywordflow">if</span> (unlSize &lt; <a class="code" href="classripple_1_1ValidatorList.html#a2c598bf8d6f6358e1f08eb47df0b49d2">quorum_</a>)</div>
<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; &lt;&lt; trustChanges.<a class="code" href="structripple_1_1TrustChanges.html#a0c0a50258cfb5466d79bcff91a8d5c00">added</a>.size() &lt;&lt; <span class="stringliteral">&quot; added, &quot;</span></div> <div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; {</div>
<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; &lt;&lt; trustChanges.<a class="code" href="structripple_1_1TrustChanges.html#a968f2c3bdc3420ca645ad54a5be5c6d9">removed</a>.size() &lt;&lt; <span class="stringliteral">&quot; removed)&quot;</span>;</div> <div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; JLOG(<a class="code" href="classripple_1_1ValidatorList.html#acedaeedad936d4e850ade479e3de91cf">j_</a>.<a class="code" href="classbeast_1_1Journal.html#ad8fefe3e8ad583e1ed1bf02094ac3d8f">warn</a>()) &lt;&lt; <span class="stringliteral">&quot;New quorum of &quot;</span> &lt;&lt; <a class="code" href="classripple_1_1ValidatorList.html#a2c598bf8d6f6358e1f08eb47df0b49d2">quorum_</a></div>
<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; </div> <div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; &lt;&lt; <span class="stringliteral">&quot; exceeds the number of trusted validators (&quot;</span></div>
<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; <span class="keywordflow">if</span> (unlSize &lt; <a class="code" href="classripple_1_1ValidatorList.html#a2c598bf8d6f6358e1f08eb47df0b49d2">quorum_</a>)</div> <div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; &lt;&lt; unlSize &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; {</div> <div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; }</div>
<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; JLOG(<a class="code" href="classripple_1_1ValidatorList.html#acedaeedad936d4e850ade479e3de91cf">j_</a>.<a class="code" href="classbeast_1_1Journal.html#ad8fefe3e8ad583e1ed1bf02094ac3d8f">warn</a>()) &lt;&lt; <span class="stringliteral">&quot;New quorum of &quot;</span> &lt;&lt; <a class="code" href="classripple_1_1ValidatorList.html#a2c598bf8d6f6358e1f08eb47df0b49d2">quorum_</a></div> <div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; </div>
<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; &lt;&lt; <span class="stringliteral">&quot; exceeds the number of trusted validators (&quot;</span></div> <div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1ValidatorList.html#aebd0354cf915b7c82161dca56c5c378b">publisherLists_</a>.size() &amp;&amp; unlSize == 0)</div>
<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; &lt;&lt; unlSize &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div> <div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; {</div>
<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; }</div> <div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; <span class="comment">// No validators. Lock down.</span></div>
<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; </div> <div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; ops.<a class="code" href="classripple_1_1NetworkOPs.html#a3b837bd8b8633d45d7e5f26961fab856">setUNLBlocked</a>();</div>
<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1ValidatorList.html#aebd0354cf915b7c82161dca56c5c378b">publisherLists_</a>.size() &amp;&amp; unlSize == 0)</div> <div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; }</div>
<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; {</div> <div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; </div>
<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; <span class="comment">// No validators. Lock down.</span></div> <div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; <span class="keywordflow">return</span> trustChanges;</div>
<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; ops.<a class="code" href="classripple_1_1NetworkOPs.html#a3b837bd8b8633d45d7e5f26961fab856">setUNLBlocked</a>();</div> <div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160;}</div>
<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; }</div> <div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; </div>
<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; </div> <div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set.html">hash_set&lt;PublicKey&gt;</a></div>
<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; <span class="keywordflow">return</span> trustChanges;</div> <div class="line"><a name="l01933"></a><span class="lineno"><a class="line" href="classripple_1_1ValidatorList.html#a22bb356f3dff23879344acd8121abbe3"> 1933</a></span>&#160;<a class="code" href="classripple_1_1ValidatorList.html#a22bb356f3dff23879344acd8121abbe3">ValidatorList::getTrustedMasterKeys</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160;}</div> <div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; </div> <div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/shared_lock.html">std::shared_lock</a> read_lock{<a class="code" href="classripple_1_1ValidatorList.html#a94f8763278cc8e85a241cfccaed69183">mutex_</a>};</div>
<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set.html">hash_set&lt;PublicKey&gt;</a></div> <div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>;</div>
<div class="line"><a name="l01937"></a><span class="lineno"><a class="line" href="classripple_1_1ValidatorList.html#a22bb356f3dff23879344acd8121abbe3"> 1937</a></span>&#160;<a class="code" href="classripple_1_1ValidatorList.html#a22bb356f3dff23879344acd8121abbe3">ValidatorList::getTrustedMasterKeys</a>()<span class="keyword"> const</span></div> <div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;}</div>
<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160;<span class="keyword"></span>{</div> <div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; </div>
<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/shared_lock.html">std::shared_lock</a> read_lock{<a class="code" href="classripple_1_1ValidatorList.html#a94f8763278cc8e85a241cfccaed69183">mutex_</a>};</div> <div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set.html">hash_set&lt;PublicKey&gt;</a></div>
<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">trustedMasterKeys_</a>;</div> <div class="line"><a name="l01940"></a><span class="lineno"><a class="line" href="classripple_1_1ValidatorList.html#afef3dd7af8c40b51da43a945f632b4c5"> 1940</a></span>&#160;<a class="code" href="classripple_1_1ValidatorList.html#afef3dd7af8c40b51da43a945f632b4c5">ValidatorList::getNegativeUNL</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160;}</div> <div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; </div> <div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/shared_lock.html">std::shared_lock</a> read_lock{<a class="code" href="classripple_1_1ValidatorList.html#a94f8763278cc8e85a241cfccaed69183">mutex_</a>};</div>
<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set.html">hash_set&lt;PublicKey&gt;</a></div> <div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">negativeUNL_</a>;</div>
<div class="line"><a name="l01944"></a><span class="lineno"><a class="line" href="classripple_1_1ValidatorList.html#afef3dd7af8c40b51da43a945f632b4c5"> 1944</a></span>&#160;<a class="code" href="classripple_1_1ValidatorList.html#afef3dd7af8c40b51da43a945f632b4c5">ValidatorList::getNegativeUNL</a>()<span class="keyword"> const</span></div> <div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;}</div>
<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160;<span class="keyword"></span>{</div> <div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; </div>
<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/shared_lock.html">std::shared_lock</a> read_lock{<a class="code" href="classripple_1_1ValidatorList.html#a94f8763278cc8e85a241cfccaed69183">mutex_</a>};</div> <div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">negativeUNL_</a>;</div> <div class="line"><a name="l01947"></a><span class="lineno"><a class="line" href="classripple_1_1ValidatorList.html#a3749eaabef35e6178bc74fc8dfe6f4a2"> 1947</a></span>&#160;<a class="code" href="classripple_1_1ValidatorList.html#a3749eaabef35e6178bc74fc8dfe6f4a2">ValidatorList::setNegativeUNL</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set.html">hash_set&lt;PublicKey&gt;</a> <span class="keyword">const</span>&amp; negUnl)</div>
<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;}</div> <div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;{</div>
<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; </div> <div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock{<a class="code" href="classripple_1_1ValidatorList.html#a94f8763278cc8e85a241cfccaed69183">mutex_</a>};</div>
<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;<span class="keywordtype">void</span></div> <div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">negativeUNL_</a> = negUnl;</div>
<div class="line"><a name="l01951"></a><span class="lineno"><a class="line" href="classripple_1_1ValidatorList.html#a3749eaabef35e6178bc74fc8dfe6f4a2"> 1951</a></span>&#160;<a class="code" href="classripple_1_1ValidatorList.html#a3749eaabef35e6178bc74fc8dfe6f4a2">ValidatorList::setNegativeUNL</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set.html">hash_set&lt;PublicKey&gt;</a> <span class="keyword">const</span>&amp; negUnl)</div> <div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;}</div>
<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160;{</div> <div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; </div>
<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock{<a class="code" href="classripple_1_1ValidatorList.html#a94f8763278cc8e85a241cfccaed69183">mutex_</a>};</div> <div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::shared_ptr&lt;STValidation&gt;</a>&gt;</div>
<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; <a class="code" href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">negativeUNL_</a> = negUnl;</div> <div class="line"><a name="l01954"></a><span class="lineno"><a class="line" href="classripple_1_1ValidatorList.html#a0937f06a5eddf696521deaef47192a32"> 1954</a></span>&#160;<a class="code" href="classripple_1_1ValidatorList.html#a0937f06a5eddf696521deaef47192a32">ValidatorList::negativeUNLFilter</a>(</div>
<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;}</div> <div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;STValidation&gt;</a>&gt;&amp;&amp; validations)<span class="keyword"> const</span></div>
<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160; </div> <div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::shared_ptr&lt;STValidation&gt;</a>&gt;</div> <div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; <span class="comment">// Remove validations that are from validators on the negative UNL.</span></div>
<div class="line"><a name="l01958"></a><span class="lineno"><a class="line" href="classripple_1_1ValidatorList.html#a0937f06a5eddf696521deaef47192a32"> 1958</a></span>&#160;<a class="code" href="classripple_1_1ValidatorList.html#a0937f06a5eddf696521deaef47192a32">ValidatorList::negativeUNLFilter</a>(</div> <div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; <span class="keyword">auto</span> ret = std::move(validations);</div>
<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;STValidation&gt;</a>&gt;&amp;&amp; validations)<span class="keyword"> const</span></div> <div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; </div>
<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;<span class="keyword"></span>{</div> <div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/shared_lock.html">std::shared_lock</a> read_lock{<a class="code" href="classripple_1_1ValidatorList.html#a94f8763278cc8e85a241cfccaed69183">mutex_</a>};</div>
<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; <span class="comment">// Remove validations that are from validators on the negative UNL.</span></div> <div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">negativeUNL_</a>.empty())</div>
<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; <span class="keyword">auto</span> ret = std::move(validations);</div> <div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; {</div>
<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; </div> <div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; ret.erase(</div>
<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/shared_lock.html">std::shared_lock</a> read_lock{<a class="code" href="classripple_1_1ValidatorList.html#a94f8763278cc8e85a241cfccaed69183">mutex_</a>};</div> <div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/remove.html">std::remove_if</a>(</div>
<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">negativeUNL_</a>.empty())</div> <div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; ret.begin(),</div>
<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; {</div> <div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; ret.end(),</div>
<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; ret.erase(</div> <div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; [&amp;](<span class="keyword">auto</span> <span class="keyword">const</span>&amp; v) -&gt; <span class="keywordtype">bool</span> {</div>
<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/remove.html">std::remove_if</a>(</div> <div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; if (auto const masterKey =</div>
<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; ret.begin(),</div> <div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; getTrustedKey(read_lock, v-&gt;getSignerPublic());</div>
<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; ret.end(),</div> <div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; masterKey)</div>
<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; [&amp;](<span class="keyword">auto</span> <span class="keyword">const</span>&amp; v) -&gt; <span class="keywordtype">bool</span> {</div> <div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; {</div>
<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; if (auto const masterKey =</div> <div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; return negativeUNL_.count(*masterKey);</div>
<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160; getTrustedKey(read_lock, v-&gt;getSignerPublic());</div> <div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160; }</div>
<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; masterKey)</div> <div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; {</div> <div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; {</div>
<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; return negativeUNL_.count(*masterKey);</div> <div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; return false;</div>
<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; }</div> <div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; }</div>
<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160; <span class="keywordflow">else</span></div> <div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160; }),</div>
<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; {</div> <div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; ret.end());</div>
<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; return false;</div> <div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; }</div>
<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; }</div> <div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; </div>
<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; }),</div> <div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; <span class="keywordflow">return</span> ret;</div>
<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; ret.end());</div> <div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;}</div>
<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; }</div> <div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; </div>
<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; </div> <div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; <span class="keywordflow">return</span> ret;</div>
<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;}</div>
<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160; </div>
<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;} <span class="comment">// namespace ripple</span></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassJson_1_1Value_html_aff51d8b52979ca06cf9d909accd5f695"><div class="ttname"><a href="classJson_1_1Value.html#aff51d8b52979ca06cf9d909accd5f695">Json::Value::isInt</a></div><div class="ttdeci">bool isInt() const</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00979">json_value.cpp:979</a></div></div> <div class="ttc" id="aclassJson_1_1Value_html_aff51d8b52979ca06cf9d909accd5f695"><div class="ttname"><a href="classJson_1_1Value.html#aff51d8b52979ca06cf9d909accd5f695">Json::Value::isInt</a></div><div class="ttdeci">bool isInt() const</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00979">json_value.cpp:979</a></div></div>
<div class="ttc" id="aclassripple_1_1NetworkOPs_html"><div class="ttname"><a href="classripple_1_1NetworkOPs.html">ripple::NetworkOPs</a></div><div class="ttdoc">Provides server functionality for clients.</div><div class="ttdef"><b>Definition:</b> <a href="NetworkOPs_8h_source.html#l00086">NetworkOPs.h:86</a></div></div> <div class="ttc" id="aclassripple_1_1NetworkOPs_html"><div class="ttname"><a href="classripple_1_1NetworkOPs.html">ripple::NetworkOPs</a></div><div class="ttdoc">Provides server functionality for clients.</div><div class="ttdef"><b>Definition:</b> <a href="NetworkOPs_8h_source.html#l00086">NetworkOPs.h:86</a></div></div>
@@ -2096,14 +2092,14 @@ $(function() {
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a7bdc06d223ec320799b7b09fe38fb16a"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a7bdc06d223ec320799b7b09fe38fb16a">ripple::ValidatorList::applyListsAndBroadcast</a></div><div class="ttdeci">PublisherListStats applyListsAndBroadcast(std::string const &amp;manifest, std::uint32_t version, std::vector&lt; ValidatorBlobInfo &gt; const &amp;blobs, std::string siteUri, uint256 const &amp;hash, Overlay &amp;overlay, HashRouter &amp;hashRouter, NetworkOPs &amp;networkOPs)</div><div class="ttdoc">Apply multiple published lists of public keys, then broadcast it to all peers that have not seen it o...</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00869">ValidatorList.cpp:869</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a7bdc06d223ec320799b7b09fe38fb16a"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a7bdc06d223ec320799b7b09fe38fb16a">ripple::ValidatorList::applyListsAndBroadcast</a></div><div class="ttdeci">PublisherListStats applyListsAndBroadcast(std::string const &amp;manifest, std::uint32_t version, std::vector&lt; ValidatorBlobInfo &gt; const &amp;blobs, std::string siteUri, uint256 const &amp;hash, Overlay &amp;overlay, HashRouter &amp;hashRouter, NetworkOPs &amp;networkOPs)</div><div class="ttdoc">Apply multiple published lists of public keys, then broadcast it to all peers that have not seen it o...</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00869">ValidatorList.cpp:869</a></div></div>
<div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/size.html">std::vector::size</a></div><div class="ttdeci">T size(T... args)</div></div> <div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/size.html">std::vector::size</a></div><div class="ttdeci">T size(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a90d8cf623e6011f148956964d0e09b9c"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a90d8cf623e6011f148956964d0e09b9c">ripple::ValidatorList::trustedPublisher</a></div><div class="ttdeci">bool trustedPublisher(PublicKey const &amp;identity) const</div><div class="ttdoc">Returns true if public key is a trusted publisher.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01404">ValidatorList.cpp:1404</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a90d8cf623e6011f148956964d0e09b9c"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a90d8cf623e6011f148956964d0e09b9c">ripple::ValidatorList::trustedPublisher</a></div><div class="ttdeci">bool trustedPublisher(PublicKey const &amp;identity) const</div><div class="ttdoc">Returns true if public key is a trusted publisher.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01404">ValidatorList.cpp:1404</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a3749eaabef35e6178bc74fc8dfe6f4a2"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a3749eaabef35e6178bc74fc8dfe6f4a2">ripple::ValidatorList::setNegativeUNL</a></div><div class="ttdeci">void setNegativeUNL(hash_set&lt; PublicKey &gt; const &amp;negUnl)</div><div class="ttdoc">set the Negative UNL with validators' master public keys</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01951">ValidatorList.cpp:1951</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a3749eaabef35e6178bc74fc8dfe6f4a2"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a3749eaabef35e6178bc74fc8dfe6f4a2">ripple::ValidatorList::setNegativeUNL</a></div><div class="ttdeci">void setNegativeUNL(hash_set&lt; PublicKey &gt; const &amp;negUnl)</div><div class="ttdoc">set the Negative UNL with validators' master public keys</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01947">ValidatorList.cpp:1947</a></div></div>
<div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherListStats_html"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherListStats.html">ripple::ValidatorList::PublisherListStats</a></div><div class="ttdoc">Describes the result of processing a Validator List (UNL), including some of the information from the...</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00278">ValidatorList.h:278</a></div></div> <div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherListStats_html"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherListStats.html">ripple::ValidatorList::PublisherListStats</a></div><div class="ttdoc">Describes the result of processing a Validator List (UNL), including some of the information from the...</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00278">ValidatorList.h:278</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a6aed606d8af8e7d638308232efd15f11"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">ripple::ValidatorList::negativeUNL_</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; negativeUNL_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00253">ValidatorList.h:253</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a6aed606d8af8e7d638308232efd15f11"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">ripple::ValidatorList::negativeUNL_</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; negativeUNL_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00253">ValidatorList.h:253</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_af3c12788fe36cb6f48201d3c5a688d06"><div class="ttname"><a href="classripple_1_1ValidatorList.html#af3c12788fe36cb6f48201d3c5a688d06">ripple::ValidatorList::filePrefix_</a></div><div class="ttdeci">static const std::string filePrefix_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00261">ValidatorList.h:261</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_af3c12788fe36cb6f48201d3c5a688d06"><div class="ttname"><a href="classripple_1_1ValidatorList.html#af3c12788fe36cb6f48201d3c5a688d06">ripple::ValidatorList::filePrefix_</a></div><div class="ttdeci">static const std::string filePrefix_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00261">ValidatorList.h:261</a></div></div>
<div class="ttc" id="anamespaceripple_html_a08a13b62b18272366f788632359e8793"><div class="ttname"><a href="namespaceripple.html#a08a13b62b18272366f788632359e8793">ripple::toBase58</a></div><div class="ttdeci">std::string toBase58(AccountID const &amp;v)</div><div class="ttdoc">Convert AccountID to base58 checked string.</div><div class="ttdef"><b>Definition:</b> <a href="AccountID_8cpp_source.html#l00104">AccountID.cpp:104</a></div></div> <div class="ttc" id="anamespaceripple_html_a08a13b62b18272366f788632359e8793"><div class="ttname"><a href="namespaceripple.html#a08a13b62b18272366f788632359e8793">ripple::toBase58</a></div><div class="ttdeci">std::string toBase58(AccountID const &amp;v)</div><div class="ttdoc">Convert AccountID to base58 checked string.</div><div class="ttdef"><b>Definition:</b> <a href="AccountID_8cpp_source.html#l00104">AccountID.cpp:104</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_acedaeedad936d4e850ade479e3de91cf"><div class="ttname"><a href="classripple_1_1ValidatorList.html#acedaeedad936d4e850ade479e3de91cf">ripple::ValidatorList::j_</a></div><div class="ttdeci">const beast::Journal j_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00228">ValidatorList.h:228</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_acedaeedad936d4e850ade479e3de91cf"><div class="ttname"><a href="classripple_1_1ValidatorList.html#acedaeedad936d4e850ade479e3de91cf">ripple::ValidatorList::j_</a></div><div class="ttdeci">const beast::Journal j_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00228">ValidatorList.h:228</a></div></div>
<div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherList_html_ab1eaafc17bdc547f85f4898d5535c6e5"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherList.html#ab1eaafc17bdc547f85f4898d5535c6e5">ripple::ValidatorList::PublisherList::validUntil</a></div><div class="ttdeci">TimeKeeper::time_point validUntil</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00182">ValidatorList.h:182</a></div></div> <div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherList_html_ab1eaafc17bdc547f85f4898d5535c6e5"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherList.html#ab1eaafc17bdc547f85f4898d5535c6e5">ripple::ValidatorList::PublisherList::validUntil</a></div><div class="ttdeci">TimeKeeper::time_point validUntil</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00182">ValidatorList.h:182</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a22bb356f3dff23879344acd8121abbe3"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a22bb356f3dff23879344acd8121abbe3">ripple::ValidatorList::getTrustedMasterKeys</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; getTrustedMasterKeys() const</div><div class="ttdoc">get the trusted master public keys</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01937">ValidatorList.cpp:1937</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a22bb356f3dff23879344acd8121abbe3"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a22bb356f3dff23879344acd8121abbe3">ripple::ValidatorList::getTrustedMasterKeys</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; getTrustedMasterKeys() const</div><div class="ttdoc">get the trusted master public keys</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01933">ValidatorList.cpp:1933</a></div></div>
<div class="ttc" id="aemplace_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/optional/emplace.html">std::optional::emplace</a></div><div class="ttdeci">T emplace(T... args)</div></div> <div class="ttc" id="aemplace_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/optional/emplace.html">std::optional::emplace</a></div><div class="ttdeci">T emplace(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_af2dde165e04bd3a99a397fe3541f341e"><div class="ttname"><a href="classripple_1_1ValidatorList.html#af2dde165e04bd3a99a397fe3541f341e">ripple::ValidatorList::buildValidatorListMessages</a></div><div class="ttdeci">static std::pair&lt; std::size_t, std::size_t &gt; buildValidatorListMessages(std::size_t messageVersion, std::uint64_t peerSequence, std::size_t maxSequence, std::uint32_t rawVersion, std::string const &amp;rawManifest, std::map&lt; std::size_t, ValidatorBlobInfo &gt; const &amp;blobInfos, std::vector&lt; MessageWithHash &gt; &amp;messages, std::size_t maxSize=maximiumMessageSize)</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00612">ValidatorList.cpp:612</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_af2dde165e04bd3a99a397fe3541f341e"><div class="ttname"><a href="classripple_1_1ValidatorList.html#af2dde165e04bd3a99a397fe3541f341e">ripple::ValidatorList::buildValidatorListMessages</a></div><div class="ttdeci">static std::pair&lt; std::size_t, std::size_t &gt; buildValidatorListMessages(std::size_t messageVersion, std::uint64_t peerSequence, std::size_t maxSequence, std::uint32_t rawVersion, std::string const &amp;rawManifest, std::map&lt; std::size_t, ValidatorBlobInfo &gt; const &amp;blobInfos, std::vector&lt; MessageWithHash &gt; &amp;messages, std::size_t maxSize=maximiumMessageSize)</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00612">ValidatorList.cpp:612</a></div></div>
<div class="ttc" id="aclassbeast_1_1Journal_html_ad8fefe3e8ad583e1ed1bf02094ac3d8f"><div class="ttname"><a href="classbeast_1_1Journal.html#ad8fefe3e8ad583e1ed1bf02094ac3d8f">beast::Journal::warn</a></div><div class="ttdeci">Stream warn() const</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00327">Journal.h:327</a></div></div> <div class="ttc" id="aclassbeast_1_1Journal_html_ad8fefe3e8ad583e1ed1bf02094ac3d8f"><div class="ttname"><a href="classbeast_1_1Journal.html#ad8fefe3e8ad583e1ed1bf02094ac3d8f">beast::Journal::warn</a></div><div class="ttdeci">Stream warn() const</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00327">Journal.h:327</a></div></div>
@@ -2148,7 +2144,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a923f3aa3898a824b4b6947abd88502c5"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a923f3aa3898a824b4b6947abd88502c5">ripple::ValidatorList::getListedKey</a></div><div class="ttdeci">std::optional&lt; PublicKey &gt; getListedKey(PublicKey const &amp;identity) const</div><div class="ttdoc">Returns listed master public if public key is included on any lists.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01374">ValidatorList.cpp:1374</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a923f3aa3898a824b4b6947abd88502c5"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a923f3aa3898a824b4b6947abd88502c5">ripple::ValidatorList::getListedKey</a></div><div class="ttdeci">std::optional&lt; PublicKey &gt; getListedKey(PublicKey const &amp;identity) const</div><div class="ttdoc">Returns listed master public if public key is included on any lists.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01374">ValidatorList.cpp:1374</a></div></div>
<div class="ttc" id="astructripple_1_1ValidatorBlobInfo_html"><div class="ttname"><a href="structripple_1_1ValidatorBlobInfo.html">ripple::ValidatorBlobInfo</a></div><div class="ttdoc">Used to represent the information stored in the blobs_v2 Json array.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00116">ValidatorList.h:116</a></div></div> <div class="ttc" id="astructripple_1_1ValidatorBlobInfo_html"><div class="ttname"><a href="structripple_1_1ValidatorBlobInfo.html">ripple::ValidatorBlobInfo</a></div><div class="ttdoc">Used to represent the information stored in the blobs_v2 Json array.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00116">ValidatorList.h:116</a></div></div>
<div class="ttc" id="astructripple_1_1TrustChanges_html_a968f2c3bdc3420ca645ad54a5be5c6d9"><div class="ttname"><a href="structripple_1_1TrustChanges.html#a968f2c3bdc3420ca645ad54a5be5c6d9">ripple::TrustChanges::removed</a></div><div class="ttdeci">hash_set&lt; NodeID &gt; removed</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00112">ValidatorList.h:112</a></div></div> <div class="ttc" id="astructripple_1_1TrustChanges_html_a968f2c3bdc3420ca645ad54a5be5c6d9"><div class="ttname"><a href="structripple_1_1TrustChanges.html#a968f2c3bdc3420ca645ad54a5be5c6d9">ripple::TrustChanges::removed</a></div><div class="ttdeci">hash_set&lt; NodeID &gt; removed</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00112">ValidatorList.h:112</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_aa4813b41483e2df542ce2731fb7b5f5d"><div class="ttname"><a href="classripple_1_1ValidatorList.html#aa4813b41483e2df542ce2731fb7b5f5d">ripple::ValidatorList::updateTrusted</a></div><div class="ttdeci">TrustChanges updateTrusted(hash_set&lt; NodeID &gt; const &amp;seenValidators, NetClock::time_point closeTime, NetworkOPs &amp;ops, Overlay &amp;overlay, HashRouter &amp;hashRouter)</div><div class="ttdoc">Update trusted nodes.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01773">ValidatorList.cpp:1773</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_aa4813b41483e2df542ce2731fb7b5f5d"><div class="ttname"><a href="classripple_1_1ValidatorList.html#aa4813b41483e2df542ce2731fb7b5f5d">ripple::ValidatorList::updateTrusted</a></div><div class="ttdeci">TrustChanges updateTrusted(hash_set&lt; NodeID &gt; const &amp;seenValidators, NetClock::time_point closeTime, NetworkOPs &amp;ops, Overlay &amp;overlay, HashRouter &amp;hashRouter)</div><div class="ttdoc">Update trusted nodes.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01769">ValidatorList.cpp:1769</a></div></div>
<div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherListCollection_html_a4efb18d223a1910d123c99e09c1a524c"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherListCollection.html#a4efb18d223a1910d123c99e09c1a524c">ripple::ValidatorList::PublisherListCollection::remaining</a></div><div class="ttdeci">std::map&lt; std::size_t, PublisherList &gt; remaining</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00216">ValidatorList.h:216</a></div></div> <div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherListCollection_html_a4efb18d223a1910d123c99e09c1a524c"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherListCollection.html#a4efb18d223a1910d123c99e09c1a524c">ripple::ValidatorList::PublisherListCollection::remaining</a></div><div class="ttdeci">std::map&lt; std::size_t, PublisherList &gt; remaining</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00216">ValidatorList.h:216</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_af8fe24acb044cf9b928d14a1e84b63ac"><div class="ttname"><a href="classripple_1_1ValidatorList.html#af8fe24acb044cf9b928d14a1e84b63ac">ripple::ValidatorList::publisherManifests_</a></div><div class="ttdeci">ManifestCache &amp; publisherManifests_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00225">ValidatorList.h:225</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_af8fe24acb044cf9b928d14a1e84b63ac"><div class="ttname"><a href="classripple_1_1ValidatorList.html#af8fe24acb044cf9b928d14a1e84b63ac">ripple::ValidatorList::publisherManifests_</a></div><div class="ttdeci">ManifestCache &amp; publisherManifests_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00225">ValidatorList.h:225</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a0db3ac667949c8002894beb011f7f139"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a0db3ac667949c8002894beb011f7f139">ripple::ValidatorList::broadcastBlobs</a></div><div class="ttdeci">static void broadcastBlobs(PublicKey const &amp;publisherKey, PublisherListCollection const &amp;lists, std::size_t maxSequence, uint256 const &amp;hash, Overlay &amp;overlay, HashRouter &amp;hashRouter, beast::Journal j)</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00802">ValidatorList.cpp:802</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a0db3ac667949c8002894beb011f7f139"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a0db3ac667949c8002894beb011f7f139">ripple::ValidatorList::broadcastBlobs</a></div><div class="ttdeci">static void broadcastBlobs(PublicKey const &amp;publisherKey, PublisherListCollection const &amp;lists, std::size_t maxSequence, uint256 const &amp;hash, Overlay &amp;overlay, HashRouter &amp;hashRouter, beast::Journal j)</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00802">ValidatorList.cpp:802</a></div></div>
@@ -2184,7 +2180,7 @@ $(function() {
<div class="ttc" id="aceil_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/ceil.html">std::ceil</a></div><div class="ttdeci">T ceil(T... args)</div></div> <div class="ttc" id="aceil_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/ceil.html">std::ceil</a></div><div class="ttdeci">T ceil(T... args)</div></div>
<div class="ttc" id="anamespaceripple_html_a8a16d6f665a032453ec4cbfca01929b6afedb2d84cafe20862cb4399751a8a7e3"><div class="ttname"><a href="namespaceripple.html#a8a16d6f665a032453ec4cbfca01929b6afedb2d84cafe20862cb4399751a8a7e3">ripple::ManifestDisposition::invalid</a></div><div class="ttdeci">@ invalid</div><div class="ttdoc">Timely, but invalid signature.</div></div> <div class="ttc" id="anamespaceripple_html_a8a16d6f665a032453ec4cbfca01929b6afedb2d84cafe20862cb4399751a8a7e3"><div class="ttname"><a href="namespaceripple.html#a8a16d6f665a032453ec4cbfca01929b6afedb2d84cafe20862cb4399751a8a7e3">ripple::ManifestDisposition::invalid</a></div><div class="ttdeci">@ invalid</div><div class="ttdoc">Timely, but invalid signature.</div></div>
<div class="ttc" id="aclassripple_1_1Peer_html_a35b25d5a662db9a534ac4a972a8ba6b3"><div class="ttname"><a href="classripple_1_1Peer.html#a35b25d5a662db9a534ac4a972a8ba6b3">ripple::Peer::getRemoteAddress</a></div><div class="ttdeci">virtual beast::IP::Endpoint getRemoteAddress() const =0</div></div> <div class="ttc" id="aclassripple_1_1Peer_html_a35b25d5a662db9a534ac4a972a8ba6b3"><div class="ttname"><a href="classripple_1_1Peer.html#a35b25d5a662db9a534ac4a972a8ba6b3">ripple::Peer::getRemoteAddress</a></div><div class="ttdeci">virtual beast::IP::Endpoint getRemoteAddress() const =0</div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a0937f06a5eddf696521deaef47192a32"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a0937f06a5eddf696521deaef47192a32">ripple::ValidatorList::negativeUNLFilter</a></div><div class="ttdeci">std::vector&lt; std::shared_ptr&lt; STValidation &gt; &gt; negativeUNLFilter(std::vector&lt; std::shared_ptr&lt; STValidation &gt;&gt; &amp;&amp;validations) const</div><div class="ttdoc">Remove validations that are from validators on the negative UNL.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01958">ValidatorList.cpp:1958</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a0937f06a5eddf696521deaef47192a32"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a0937f06a5eddf696521deaef47192a32">ripple::ValidatorList::negativeUNLFilter</a></div><div class="ttdeci">std::vector&lt; std::shared_ptr&lt; STValidation &gt; &gt; negativeUNLFilter(std::vector&lt; std::shared_ptr&lt; STValidation &gt;&gt; &amp;&amp;validations) const</div><div class="ttdoc">Remove validations that are from validators on the negative UNL.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01954">ValidatorList.cpp:1954</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a74578a60966c12996799fd9784d66741"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a74578a60966c12996799fd9784d66741">ripple::ValidatorList::expires</a></div><div class="ttdeci">std::optional&lt; TimeKeeper::time_point &gt; expires() const</div><div class="ttdoc">Return the time when the validator list will expire.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01500">ValidatorList.cpp:1500</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a74578a60966c12996799fd9784d66741"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a74578a60966c12996799fd9784d66741">ripple::ValidatorList::expires</a></div><div class="ttdeci">std::optional&lt; TimeKeeper::time_point &gt; expires() const</div><div class="ttdoc">Return the time when the validator list will expire.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01500">ValidatorList.cpp:1500</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html_a1627eb9d6568d6d0252fa8bb711c0a59"><div class="ttname"><a href="classJson_1_1Value.html#a1627eb9d6568d6d0252fa8bb711c0a59">Json::Value::isArray</a></div><div class="ttdeci">bool isArray() const</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l01015">json_value.cpp:1015</a></div></div> <div class="ttc" id="aclassJson_1_1Value_html_a1627eb9d6568d6d0252fa8bb711c0a59"><div class="ttname"><a href="classJson_1_1Value.html#a1627eb9d6568d6d0252fa8bb711c0a59">Json::Value::isArray</a></div><div class="ttdeci">bool isArray() const</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l01015">json_value.cpp:1015</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a79545d89d7c7c5bfef7f15ce0510577b"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a79545d89d7c7c5bfef7f15ce0510577b">ripple::ValidatorList::calculateQuorum</a></div><div class="ttdeci">std::size_t calculateQuorum(std::size_t unlSize, std::size_t effectiveUnlSize, std::size_t seenSize)</div><div class="ttdoc">Return quorum for trusted validator set.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01708">ValidatorList.cpp:1708</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a79545d89d7c7c5bfef7f15ce0510577b"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a79545d89d7c7c5bfef7f15ce0510577b">ripple::ValidatorList::calculateQuorum</a></div><div class="ttdeci">std::size_t calculateQuorum(std::size_t unlSize, std::size_t effectiveUnlSize, std::size_t seenSize)</div><div class="ttdoc">Return quorum for trusted validator set.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01708">ValidatorList.cpp:1708</a></div></div>
@@ -2237,7 +2233,7 @@ $(function() {
<div class="ttc" id="amax_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a></div><div class="ttdeci">T max(T... args)</div></div> <div class="ttc" id="amax_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a></div><div class="ttdeci">T max(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a9de7a870beb3104dc8320d6367b7f7e8"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a9de7a870beb3104dc8320d6367b7f7e8">ripple::ValidatorList::trusted</a></div><div class="ttdeci">bool trusted(PublicKey const &amp;identity) const</div><div class="ttdoc">Returns true if public key is trusted.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01367">ValidatorList.cpp:1367</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a9de7a870beb3104dc8320d6367b7f7e8"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a9de7a870beb3104dc8320d6367b7f7e8">ripple::ValidatorList::trusted</a></div><div class="ttdeci">bool trusted(PublicKey const &amp;identity) const</div><div class="ttdoc">Returns true if public key is trusted.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01367">ValidatorList.cpp:1367</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a623a1124f621b9ee5745bd22094b4acb"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">ripple::ValidatorList::trustedMasterKeys_</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; trustedMasterKeys_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00243">ValidatorList.h:243</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a623a1124f621b9ee5745bd22094b4acb"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">ripple::ValidatorList::trustedMasterKeys_</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; trustedMasterKeys_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00243">ValidatorList.h:243</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_afef3dd7af8c40b51da43a945f632b4c5"><div class="ttname"><a href="classripple_1_1ValidatorList.html#afef3dd7af8c40b51da43a945f632b4c5">ripple::ValidatorList::getNegativeUNL</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; getNegativeUNL() const</div><div class="ttdoc">get the master public keys of Negative UNL validators</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01944">ValidatorList.cpp:1944</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_afef3dd7af8c40b51da43a945f632b4c5"><div class="ttname"><a href="classripple_1_1ValidatorList.html#afef3dd7af8c40b51da43a945f632b4c5">ripple::ValidatorList::getNegativeUNL</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; getNegativeUNL() const</div><div class="ttdoc">get the master public keys of Negative UNL validators</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01940">ValidatorList.cpp:1940</a></div></div>
<div class="ttc" id="anamespaceripple_html_aaf9d6587e02c610e84a029ad5b5e17b4"><div class="ttname"><a href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4">ripple::PublisherStatus</a></div><div class="ttdeci">PublisherStatus</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00087">ValidatorList.h:87</a></div></div> <div class="ttc" id="anamespaceripple_html_aaf9d6587e02c610e84a029ad5b5e17b4"><div class="ttname"><a href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4">ripple::PublisherStatus</a></div><div class="ttdeci">PublisherStatus</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00087">ValidatorList.h:87</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4c908de9e211941a49282147bdc6f076"><div class="ttname"><a href="namespaceripple.html#a4c908de9e211941a49282147bdc6f076">ripple::splitMessage</a></div><div class="ttdeci">std::size_t splitMessage(std::vector&lt; ValidatorList::MessageWithHash &gt; &amp;messages, protocol::TMValidatorListCollection const &amp;largeMsg, std::size_t maxSize, std::size_t begin=0, std::size_t end=0)</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00456">ValidatorList.cpp:456</a></div></div> <div class="ttc" id="anamespaceripple_html_a4c908de9e211941a49282147bdc6f076"><div class="ttname"><a href="namespaceripple.html#a4c908de9e211941a49282147bdc6f076">ripple::splitMessage</a></div><div class="ttdeci">std::size_t splitMessage(std::vector&lt; ValidatorList::MessageWithHash &gt; &amp;messages, protocol::TMValidatorListCollection const &amp;largeMsg, std::size_t maxSize, std::size_t begin=0, std::size_t end=0)</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00456">ValidatorList.cpp:456</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_aed9fb899a5dbc48018f3bdeedb55a110"><div class="ttname"><a href="classripple_1_1ValidatorList.html#aed9fb899a5dbc48018f3bdeedb55a110">ripple::ValidatorList::applyLists</a></div><div class="ttdeci">PublisherListStats applyLists(std::string const &amp;manifest, std::uint32_t version, std::vector&lt; ValidatorBlobInfo &gt; const &amp;blobs, std::string siteUri, std::optional&lt; uint256 &gt; const &amp;hash={})</div><div class="ttdoc">Apply multiple published lists of public keys.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00922">ValidatorList.cpp:922</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_aed9fb899a5dbc48018f3bdeedb55a110"><div class="ttname"><a href="classripple_1_1ValidatorList.html#aed9fb899a5dbc48018f3bdeedb55a110">ripple::ValidatorList::applyLists</a></div><div class="ttdeci">PublisherListStats applyLists(std::string const &amp;manifest, std::uint32_t version, std::vector&lt; ValidatorBlobInfo &gt; const &amp;blobs, std::string siteUri, std::optional&lt; uint256 &gt; const &amp;hash={})</div><div class="ttdoc">Apply multiple published lists of public keys.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00922">ValidatorList.cpp:922</a></div></div>
@@ -2260,7 +2256,6 @@ $(function() {
<div class="ttc" id="astructripple_1_1ValidatorList_1_1MessageWithHash_html_a94fb76dabc20085db29771b4a2d5d952"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1MessageWithHash.html#a94fb76dabc20085db29771b4a2d5d952">ripple::ValidatorList::MessageWithHash::numVLs</a></div><div class="ttdeci">std::size_t numVLs</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00312">ValidatorList.h:312</a></div></div> <div class="ttc" id="astructripple_1_1ValidatorList_1_1MessageWithHash_html_a94fb76dabc20085db29771b4a2d5d952"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1MessageWithHash.html#a94fb76dabc20085db29771b4a2d5d952">ripple::ValidatorList::MessageWithHash::numVLs</a></div><div class="ttdeci">std::size_t numVLs</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00312">ValidatorList.h:312</a></div></div>
<div class="ttc" id="ashared_lock_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/shared_lock.html">std::shared_lock</a></div><div class="ttdoc">STL class.</div></div> <div class="ttc" id="ashared_lock_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/shared_lock.html">std::shared_lock</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherList_html"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherList.html">ripple::ValidatorList::PublisherList</a></div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00174">ValidatorList.h:174</a></div></div> <div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherList_html"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherList.html">ripple::ValidatorList::PublisherList</a></div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00174">ValidatorList.h:174</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_ad28f57783826e0b090713c89265c81e4"><div class="ttname"><a href="classripple_1_1ValidatorList.html#ad28f57783826e0b090713c89265c81e4">ripple::ValidatorList::quorum</a></div><div class="ttdeci">std::size_t quorum() const</div><div class="ttdoc">Get quorum value for current trusted key set.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00492">ValidatorList.h:492</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html"><div class="ttname"><a href="classJson_1_1Value.html">Json::Value</a></div><div class="ttdoc">Represents a JSON value.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8h_source.html#l00145">json_value.h:145</a></div></div> <div class="ttc" id="aclassJson_1_1Value_html"><div class="ttname"><a href="classJson_1_1Value.html">Json::Value</a></div><div class="ttdoc">Represents a JSON value.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8h_source.html#l00145">json_value.h:145</a></div></div>
<div class="ttc" id="anamespaceripple_html_afa0aa10894e600bbb27be9b3be16a4a0"><div class="ttname"><a href="namespaceripple.html#afa0aa10894e600bbb27be9b3be16a4a0">ripple::buildValidatorListMessage</a></div><div class="ttdeci">std::size_t buildValidatorListMessage(std::vector&lt; ValidatorList::MessageWithHash &gt; &amp;messages, std::uint32_t rawVersion, std::string const &amp;rawManifest, ValidatorBlobInfo const &amp;currentBlob, std::size_t maxSize)</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00540">ValidatorList.cpp:540</a></div></div> <div class="ttc" id="anamespaceripple_html_afa0aa10894e600bbb27be9b3be16a4a0"><div class="ttname"><a href="namespaceripple.html#afa0aa10894e600bbb27be9b3be16a4a0">ripple::buildValidatorListMessage</a></div><div class="ttdeci">std::size_t buildValidatorListMessage(std::vector&lt; ValidatorList::MessageWithHash &gt; &amp;messages, std::uint32_t rawVersion, std::string const &amp;rawManifest, ValidatorBlobInfo const &amp;currentBlob, std::size_t maxSize)</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00540">ValidatorList.cpp:540</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_ac3b9186600dcd1c5326c80af17165741"><div class="ttname"><a href="classripple_1_1ValidatorList.html#ac3b9186600dcd1c5326c80af17165741">ripple::ValidatorList::minimumQuorum_</a></div><div class="ttdeci">std::optional&lt; std::size_t &gt; minimumQuorum_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00234">ValidatorList.h:234</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_ac3b9186600dcd1c5326c80af17165741"><div class="ttname"><a href="classripple_1_1ValidatorList.html#ac3b9186600dcd1c5326c80af17165741">ripple::ValidatorList::minimumQuorum_</a></div><div class="ttdeci">std::optional&lt; std::size_t &gt; minimumQuorum_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00234">ValidatorList.h:234</a></div></div>

View File

@@ -665,14 +665,14 @@ $(function() {
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a></div><div class="ttdoc">STL class.</div></div> <div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a7bdc06d223ec320799b7b09fe38fb16a"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a7bdc06d223ec320799b7b09fe38fb16a">ripple::ValidatorList::applyListsAndBroadcast</a></div><div class="ttdeci">PublisherListStats applyListsAndBroadcast(std::string const &amp;manifest, std::uint32_t version, std::vector&lt; ValidatorBlobInfo &gt; const &amp;blobs, std::string siteUri, uint256 const &amp;hash, Overlay &amp;overlay, HashRouter &amp;hashRouter, NetworkOPs &amp;networkOPs)</div><div class="ttdoc">Apply multiple published lists of public keys, then broadcast it to all peers that have not seen it o...</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00869">ValidatorList.cpp:869</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a7bdc06d223ec320799b7b09fe38fb16a"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a7bdc06d223ec320799b7b09fe38fb16a">ripple::ValidatorList::applyListsAndBroadcast</a></div><div class="ttdeci">PublisherListStats applyListsAndBroadcast(std::string const &amp;manifest, std::uint32_t version, std::vector&lt; ValidatorBlobInfo &gt; const &amp;blobs, std::string siteUri, uint256 const &amp;hash, Overlay &amp;overlay, HashRouter &amp;hashRouter, NetworkOPs &amp;networkOPs)</div><div class="ttdoc">Apply multiple published lists of public keys, then broadcast it to all peers that have not seen it o...</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00869">ValidatorList.cpp:869</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a90d8cf623e6011f148956964d0e09b9c"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a90d8cf623e6011f148956964d0e09b9c">ripple::ValidatorList::trustedPublisher</a></div><div class="ttdeci">bool trustedPublisher(PublicKey const &amp;identity) const</div><div class="ttdoc">Returns true if public key is a trusted publisher.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01404">ValidatorList.cpp:1404</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a90d8cf623e6011f148956964d0e09b9c"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a90d8cf623e6011f148956964d0e09b9c">ripple::ValidatorList::trustedPublisher</a></div><div class="ttdeci">bool trustedPublisher(PublicKey const &amp;identity) const</div><div class="ttdoc">Returns true if public key is a trusted publisher.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01404">ValidatorList.cpp:1404</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a3749eaabef35e6178bc74fc8dfe6f4a2"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a3749eaabef35e6178bc74fc8dfe6f4a2">ripple::ValidatorList::setNegativeUNL</a></div><div class="ttdeci">void setNegativeUNL(hash_set&lt; PublicKey &gt; const &amp;negUnl)</div><div class="ttdoc">set the Negative UNL with validators' master public keys</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01951">ValidatorList.cpp:1951</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a3749eaabef35e6178bc74fc8dfe6f4a2"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a3749eaabef35e6178bc74fc8dfe6f4a2">ripple::ValidatorList::setNegativeUNL</a></div><div class="ttdeci">void setNegativeUNL(hash_set&lt; PublicKey &gt; const &amp;negUnl)</div><div class="ttdoc">set the Negative UNL with validators' master public keys</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01947">ValidatorList.cpp:1947</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_af37bfdb23c49649cfa40a40ac5d182fd"><div class="ttname"><a href="classripple_1_1ValidatorList.html#af37bfdb23c49649cfa40a40ac5d182fd">ripple::ValidatorList::getQuorumKeys</a></div><div class="ttdeci">QuorumKeys getQuorumKeys() const</div><div class="ttdoc">Get the quorum and all of the trusted keys.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00658">ValidatorList.h:658</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_af37bfdb23c49649cfa40a40ac5d182fd"><div class="ttname"><a href="classripple_1_1ValidatorList.html#af37bfdb23c49649cfa40a40ac5d182fd">ripple::ValidatorList::getQuorumKeys</a></div><div class="ttdeci">QuorumKeys getQuorumKeys() const</div><div class="ttdoc">Get the quorum and all of the trusted keys.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00658">ValidatorList.h:658</a></div></div>
<div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherListStats_html"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherListStats.html">ripple::ValidatorList::PublisherListStats</a></div><div class="ttdoc">Describes the result of processing a Validator List (UNL), including some of the information from the...</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00278">ValidatorList.h:278</a></div></div> <div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherListStats_html"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherListStats.html">ripple::ValidatorList::PublisherListStats</a></div><div class="ttdoc">Describes the result of processing a Validator List (UNL), including some of the information from the...</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00278">ValidatorList.h:278</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a6aed606d8af8e7d638308232efd15f11"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">ripple::ValidatorList::negativeUNL_</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; negativeUNL_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00253">ValidatorList.h:253</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a6aed606d8af8e7d638308232efd15f11"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a6aed606d8af8e7d638308232efd15f11">ripple::ValidatorList::negativeUNL_</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; negativeUNL_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00253">ValidatorList.h:253</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_af3c12788fe36cb6f48201d3c5a688d06"><div class="ttname"><a href="classripple_1_1ValidatorList.html#af3c12788fe36cb6f48201d3c5a688d06">ripple::ValidatorList::filePrefix_</a></div><div class="ttdeci">static const std::string filePrefix_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00261">ValidatorList.h:261</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_af3c12788fe36cb6f48201d3c5a688d06"><div class="ttname"><a href="classripple_1_1ValidatorList.html#af3c12788fe36cb6f48201d3c5a688d06">ripple::ValidatorList::filePrefix_</a></div><div class="ttdeci">static const std::string filePrefix_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00261">ValidatorList.h:261</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_acedaeedad936d4e850ade479e3de91cf"><div class="ttname"><a href="classripple_1_1ValidatorList.html#acedaeedad936d4e850ade479e3de91cf">ripple::ValidatorList::j_</a></div><div class="ttdeci">const beast::Journal j_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00228">ValidatorList.h:228</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_acedaeedad936d4e850ade479e3de91cf"><div class="ttname"><a href="classripple_1_1ValidatorList.html#acedaeedad936d4e850ade479e3de91cf">ripple::ValidatorList::j_</a></div><div class="ttdeci">const beast::Journal j_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00228">ValidatorList.h:228</a></div></div>
<div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherList_html_ab1eaafc17bdc547f85f4898d5535c6e5"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherList.html#ab1eaafc17bdc547f85f4898d5535c6e5">ripple::ValidatorList::PublisherList::validUntil</a></div><div class="ttdeci">TimeKeeper::time_point validUntil</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00182">ValidatorList.h:182</a></div></div> <div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherList_html_ab1eaafc17bdc547f85f4898d5535c6e5"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherList.html#ab1eaafc17bdc547f85f4898d5535c6e5">ripple::ValidatorList::PublisherList::validUntil</a></div><div class="ttdeci">TimeKeeper::time_point validUntil</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00182">ValidatorList.h:182</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a22bb356f3dff23879344acd8121abbe3"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a22bb356f3dff23879344acd8121abbe3">ripple::ValidatorList::getTrustedMasterKeys</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; getTrustedMasterKeys() const</div><div class="ttdoc">get the trusted master public keys</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01937">ValidatorList.cpp:1937</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a22bb356f3dff23879344acd8121abbe3"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a22bb356f3dff23879344acd8121abbe3">ripple::ValidatorList::getTrustedMasterKeys</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; getTrustedMasterKeys() const</div><div class="ttdoc">get the trusted master public keys</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01933">ValidatorList.cpp:1933</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_af2dde165e04bd3a99a397fe3541f341e"><div class="ttname"><a href="classripple_1_1ValidatorList.html#af2dde165e04bd3a99a397fe3541f341e">ripple::ValidatorList::buildValidatorListMessages</a></div><div class="ttdeci">static std::pair&lt; std::size_t, std::size_t &gt; buildValidatorListMessages(std::size_t messageVersion, std::uint64_t peerSequence, std::size_t maxSequence, std::uint32_t rawVersion, std::string const &amp;rawManifest, std::map&lt; std::size_t, ValidatorBlobInfo &gt; const &amp;blobInfos, std::vector&lt; MessageWithHash &gt; &amp;messages, std::size_t maxSize=maximiumMessageSize)</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00612">ValidatorList.cpp:612</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_af2dde165e04bd3a99a397fe3541f341e"><div class="ttname"><a href="classripple_1_1ValidatorList.html#af2dde165e04bd3a99a397fe3541f341e">ripple::ValidatorList::buildValidatorListMessages</a></div><div class="ttdeci">static std::pair&lt; std::size_t, std::size_t &gt; buildValidatorListMessages(std::size_t messageVersion, std::uint64_t peerSequence, std::size_t maxSequence, std::uint32_t rawVersion, std::string const &amp;rawManifest, std::map&lt; std::size_t, ValidatorBlobInfo &gt; const &amp;blobInfos, std::vector&lt; MessageWithHash &gt; &amp;messages, std::size_t maxSize=maximiumMessageSize)</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00612">ValidatorList.cpp:612</a></div></div>
<div class="ttc" id="alock_guard_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a></div><div class="ttdoc">STL class.</div></div> <div class="ttc" id="alock_guard_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_aa0c6d081fe5e626dc63a9cd949de2d85"><div class="ttname"><a href="classripple_1_1ValidatorList.html#aa0c6d081fe5e626dc63a9cd949de2d85">ripple::ValidatorList::maxSupportedBlobs</a></div><div class="ttdeci">static constexpr std::size_t maxSupportedBlobs</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00259">ValidatorList.h:259</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_aa0c6d081fe5e626dc63a9cd949de2d85"><div class="ttname"><a href="classripple_1_1ValidatorList.html#aa0c6d081fe5e626dc63a9cd949de2d85">ripple::ValidatorList::maxSupportedBlobs</a></div><div class="ttdeci">static constexpr std::size_t maxSupportedBlobs</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00259">ValidatorList.h:259</a></div></div>
@@ -705,7 +705,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1ValidatorList_html"><div class="ttname"><a href="classripple_1_1ValidatorList.html">ripple::ValidatorList</a></div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00172">ValidatorList.h:172</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html"><div class="ttname"><a href="classripple_1_1ValidatorList.html">ripple::ValidatorList</a></div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00172">ValidatorList.h:172</a></div></div>
<div class="ttc" id="astructripple_1_1ValidatorBlobInfo_html"><div class="ttname"><a href="structripple_1_1ValidatorBlobInfo.html">ripple::ValidatorBlobInfo</a></div><div class="ttdoc">Used to represent the information stored in the blobs_v2 Json array.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00116">ValidatorList.h:116</a></div></div> <div class="ttc" id="astructripple_1_1ValidatorBlobInfo_html"><div class="ttname"><a href="structripple_1_1ValidatorBlobInfo.html">ripple::ValidatorBlobInfo</a></div><div class="ttdoc">Used to represent the information stored in the blobs_v2 Json array.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00116">ValidatorList.h:116</a></div></div>
<div class="ttc" id="astructripple_1_1TrustChanges_html_a968f2c3bdc3420ca645ad54a5be5c6d9"><div class="ttname"><a href="structripple_1_1TrustChanges.html#a968f2c3bdc3420ca645ad54a5be5c6d9">ripple::TrustChanges::removed</a></div><div class="ttdeci">hash_set&lt; NodeID &gt; removed</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00112">ValidatorList.h:112</a></div></div> <div class="ttc" id="astructripple_1_1TrustChanges_html_a968f2c3bdc3420ca645ad54a5be5c6d9"><div class="ttname"><a href="structripple_1_1TrustChanges.html#a968f2c3bdc3420ca645ad54a5be5c6d9">ripple::TrustChanges::removed</a></div><div class="ttdeci">hash_set&lt; NodeID &gt; removed</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00112">ValidatorList.h:112</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_aa4813b41483e2df542ce2731fb7b5f5d"><div class="ttname"><a href="classripple_1_1ValidatorList.html#aa4813b41483e2df542ce2731fb7b5f5d">ripple::ValidatorList::updateTrusted</a></div><div class="ttdeci">TrustChanges updateTrusted(hash_set&lt; NodeID &gt; const &amp;seenValidators, NetClock::time_point closeTime, NetworkOPs &amp;ops, Overlay &amp;overlay, HashRouter &amp;hashRouter)</div><div class="ttdoc">Update trusted nodes.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01773">ValidatorList.cpp:1773</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_aa4813b41483e2df542ce2731fb7b5f5d"><div class="ttname"><a href="classripple_1_1ValidatorList.html#aa4813b41483e2df542ce2731fb7b5f5d">ripple::ValidatorList::updateTrusted</a></div><div class="ttdeci">TrustChanges updateTrusted(hash_set&lt; NodeID &gt; const &amp;seenValidators, NetClock::time_point closeTime, NetworkOPs &amp;ops, Overlay &amp;overlay, HashRouter &amp;hashRouter)</div><div class="ttdoc">Update trusted nodes.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01769">ValidatorList.cpp:1769</a></div></div>
<div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherListCollection_html_a4efb18d223a1910d123c99e09c1a524c"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherListCollection.html#a4efb18d223a1910d123c99e09c1a524c">ripple::ValidatorList::PublisherListCollection::remaining</a></div><div class="ttdeci">std::map&lt; std::size_t, PublisherList &gt; remaining</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00216">ValidatorList.h:216</a></div></div> <div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherListCollection_html_a4efb18d223a1910d123c99e09c1a524c"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherListCollection.html#a4efb18d223a1910d123c99e09c1a524c">ripple::ValidatorList::PublisherListCollection::remaining</a></div><div class="ttdeci">std::map&lt; std::size_t, PublisherList &gt; remaining</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00216">ValidatorList.h:216</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_af8fe24acb044cf9b928d14a1e84b63ac"><div class="ttname"><a href="classripple_1_1ValidatorList.html#af8fe24acb044cf9b928d14a1e84b63ac">ripple::ValidatorList::publisherManifests_</a></div><div class="ttdeci">ManifestCache &amp; publisherManifests_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00225">ValidatorList.h:225</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_af8fe24acb044cf9b928d14a1e84b63ac"><div class="ttname"><a href="classripple_1_1ValidatorList.html#af8fe24acb044cf9b928d14a1e84b63ac">ripple::ValidatorList::publisherManifests_</a></div><div class="ttdeci">ManifestCache &amp; publisherManifests_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00225">ValidatorList.h:225</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a0db3ac667949c8002894beb011f7f139"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a0db3ac667949c8002894beb011f7f139">ripple::ValidatorList::broadcastBlobs</a></div><div class="ttdeci">static void broadcastBlobs(PublicKey const &amp;publisherKey, PublisherListCollection const &amp;lists, std::size_t maxSequence, uint256 const &amp;hash, Overlay &amp;overlay, HashRouter &amp;hashRouter, beast::Journal j)</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00802">ValidatorList.cpp:802</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a0db3ac667949c8002894beb011f7f139"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a0db3ac667949c8002894beb011f7f139">ripple::ValidatorList::broadcastBlobs</a></div><div class="ttdeci">static void broadcastBlobs(PublicKey const &amp;publisherKey, PublisherListCollection const &amp;lists, std::size_t maxSequence, uint256 const &amp;hash, Overlay &amp;overlay, HashRouter &amp;hashRouter, beast::Journal j)</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00802">ValidatorList.cpp:802</a></div></div>
@@ -726,7 +726,7 @@ $(function() {
<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="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="anamespaceripple_html_a6eaff79c38106bc3b27326d878c902d3a2af01f2c39c66a1641045dd660e839b5"><div class="ttname"><a href="namespaceripple.html#a6eaff79c38106bc3b27326d878c902d3a2af01f2c39c66a1641045dd660e839b5">ripple::ListDisposition::unsupported_version</a></div><div class="ttdeci">@ unsupported_version</div><div class="ttdoc">List version is not supported.</div></div> <div class="ttc" id="anamespaceripple_html_a6eaff79c38106bc3b27326d878c902d3a2af01f2c39c66a1641045dd660e839b5"><div class="ttname"><a href="namespaceripple.html#a6eaff79c38106bc3b27326d878c902d3a2af01f2c39c66a1641045dd660e839b5">ripple::ListDisposition::unsupported_version</a></div><div class="ttdeci">@ unsupported_version</div><div class="ttdoc">List version is not supported.</div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a3cb3357e6108a7e96d03e4da7feb7d5a"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a3cb3357e6108a7e96d03e4da7feb7d5a">ripple::ValidatorList::buildFileData</a></div><div class="ttdeci">static Json::Value buildFileData(std::string const &amp;pubKey, PublisherListCollection const &amp;pubCollection, beast::Journal j)</div><div class="ttdoc">Build a Json representation of the collection, suitable for writing to a cache file,...</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00259">ValidatorList.cpp:259</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a3cb3357e6108a7e96d03e4da7feb7d5a"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a3cb3357e6108a7e96d03e4da7feb7d5a">ripple::ValidatorList::buildFileData</a></div><div class="ttdeci">static Json::Value buildFileData(std::string const &amp;pubKey, PublisherListCollection const &amp;pubCollection, beast::Journal j)</div><div class="ttdoc">Build a Json representation of the collection, suitable for writing to a cache file,...</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00259">ValidatorList.cpp:259</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a0937f06a5eddf696521deaef47192a32"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a0937f06a5eddf696521deaef47192a32">ripple::ValidatorList::negativeUNLFilter</a></div><div class="ttdeci">std::vector&lt; std::shared_ptr&lt; STValidation &gt; &gt; negativeUNLFilter(std::vector&lt; std::shared_ptr&lt; STValidation &gt;&gt; &amp;&amp;validations) const</div><div class="ttdoc">Remove validations that are from validators on the negative UNL.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01958">ValidatorList.cpp:1958</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a0937f06a5eddf696521deaef47192a32"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a0937f06a5eddf696521deaef47192a32">ripple::ValidatorList::negativeUNLFilter</a></div><div class="ttdeci">std::vector&lt; std::shared_ptr&lt; STValidation &gt; &gt; negativeUNLFilter(std::vector&lt; std::shared_ptr&lt; STValidation &gt;&gt; &amp;&amp;validations) const</div><div class="ttdoc">Remove validations that are from validators on the negative UNL.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01954">ValidatorList.cpp:1954</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a74578a60966c12996799fd9784d66741"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a74578a60966c12996799fd9784d66741">ripple::ValidatorList::expires</a></div><div class="ttdeci">std::optional&lt; TimeKeeper::time_point &gt; expires() const</div><div class="ttdoc">Return the time when the validator list will expire.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01500">ValidatorList.cpp:1500</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a74578a60966c12996799fd9784d66741"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a74578a60966c12996799fd9784d66741">ripple::ValidatorList::expires</a></div><div class="ttdeci">std::optional&lt; TimeKeeper::time_point &gt; expires() const</div><div class="ttdoc">Return the time when the validator list will expire.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01500">ValidatorList.cpp:1500</a></div></div>
<div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherList_html_a6995e4adf4fc3157d5333f659d409b4a"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherList.html#a6995e4adf4fc3157d5333f659d409b4a">ripple::ValidatorList::PublisherList::rawBlob</a></div><div class="ttdeci">std::string rawBlob</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00185">ValidatorList.h:185</a></div></div> <div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherList_html_a6995e4adf4fc3157d5333f659d409b4a"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherList.html#a6995e4adf4fc3157d5333f659d409b4a">ripple::ValidatorList::PublisherList::rawBlob</a></div><div class="ttdeci">std::string rawBlob</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00185">ValidatorList.h:185</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a79545d89d7c7c5bfef7f15ce0510577b"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a79545d89d7c7c5bfef7f15ce0510577b">ripple::ValidatorList::calculateQuorum</a></div><div class="ttdeci">std::size_t calculateQuorum(std::size_t unlSize, std::size_t effectiveUnlSize, std::size_t seenSize)</div><div class="ttdoc">Return quorum for trusted validator set.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01708">ValidatorList.cpp:1708</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a79545d89d7c7c5bfef7f15ce0510577b"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a79545d89d7c7c5bfef7f15ce0510577b">ripple::ValidatorList::calculateQuorum</a></div><div class="ttdeci">std::size_t calculateQuorum(std::size_t unlSize, std::size_t effectiveUnlSize, std::size_t seenSize)</div><div class="ttdoc">Return quorum for trusted validator set.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01708">ValidatorList.cpp:1708</a></div></div>
@@ -767,7 +767,7 @@ $(function() {
<div class="ttc" id="anumeric_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/numeric.html">numeric</a></div></div> <div class="ttc" id="anumeric_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/numeric.html">numeric</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a9de7a870beb3104dc8320d6367b7f7e8"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a9de7a870beb3104dc8320d6367b7f7e8">ripple::ValidatorList::trusted</a></div><div class="ttdeci">bool trusted(PublicKey const &amp;identity) const</div><div class="ttdoc">Returns true if public key is trusted.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01367">ValidatorList.cpp:1367</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a9de7a870beb3104dc8320d6367b7f7e8"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a9de7a870beb3104dc8320d6367b7f7e8">ripple::ValidatorList::trusted</a></div><div class="ttdeci">bool trusted(PublicKey const &amp;identity) const</div><div class="ttdoc">Returns true if public key is trusted.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01367">ValidatorList.cpp:1367</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_a623a1124f621b9ee5745bd22094b4acb"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">ripple::ValidatorList::trustedMasterKeys_</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; trustedMasterKeys_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00243">ValidatorList.h:243</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_a623a1124f621b9ee5745bd22094b4acb"><div class="ttname"><a href="classripple_1_1ValidatorList.html#a623a1124f621b9ee5745bd22094b4acb">ripple::ValidatorList::trustedMasterKeys_</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; trustedMasterKeys_</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00243">ValidatorList.h:243</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_afef3dd7af8c40b51da43a945f632b4c5"><div class="ttname"><a href="classripple_1_1ValidatorList.html#afef3dd7af8c40b51da43a945f632b4c5">ripple::ValidatorList::getNegativeUNL</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; getNegativeUNL() const</div><div class="ttdoc">get the master public keys of Negative UNL validators</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01944">ValidatorList.cpp:1944</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_afef3dd7af8c40b51da43a945f632b4c5"><div class="ttname"><a href="classripple_1_1ValidatorList.html#afef3dd7af8c40b51da43a945f632b4c5">ripple::ValidatorList::getNegativeUNL</a></div><div class="ttdeci">hash_set&lt; PublicKey &gt; getNegativeUNL() const</div><div class="ttdoc">get the master public keys of Negative UNL validators</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l01940">ValidatorList.cpp:1940</a></div></div>
<div class="ttc" id="anamespaceripple_html_aaf9d6587e02c610e84a029ad5b5e17b4"><div class="ttname"><a href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4">ripple::PublisherStatus</a></div><div class="ttdeci">PublisherStatus</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00087">ValidatorList.h:87</a></div></div> <div class="ttc" id="anamespaceripple_html_aaf9d6587e02c610e84a029ad5b5e17b4"><div class="ttname"><a href="namespaceripple.html#aaf9d6587e02c610e84a029ad5b5e17b4">ripple::PublisherStatus</a></div><div class="ttdeci">PublisherStatus</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00087">ValidatorList.h:87</a></div></div>
<div class="ttc" id="aclassripple_1_1ValidatorList_html_aed9fb899a5dbc48018f3bdeedb55a110"><div class="ttname"><a href="classripple_1_1ValidatorList.html#aed9fb899a5dbc48018f3bdeedb55a110">ripple::ValidatorList::applyLists</a></div><div class="ttdeci">PublisherListStats applyLists(std::string const &amp;manifest, std::uint32_t version, std::vector&lt; ValidatorBlobInfo &gt; const &amp;blobs, std::string siteUri, std::optional&lt; uint256 &gt; const &amp;hash={})</div><div class="ttdoc">Apply multiple published lists of public keys.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00922">ValidatorList.cpp:922</a></div></div> <div class="ttc" id="aclassripple_1_1ValidatorList_html_aed9fb899a5dbc48018f3bdeedb55a110"><div class="ttname"><a href="classripple_1_1ValidatorList.html#aed9fb899a5dbc48018f3bdeedb55a110">ripple::ValidatorList::applyLists</a></div><div class="ttdeci">PublisherListStats applyLists(std::string const &amp;manifest, std::uint32_t version, std::vector&lt; ValidatorBlobInfo &gt; const &amp;blobs, std::string siteUri, std::optional&lt; uint256 &gt; const &amp;hash={})</div><div class="ttdoc">Apply multiple published lists of public keys.</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8cpp_source.html#l00922">ValidatorList.cpp:922</a></div></div>
<div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherListCollection_html_a1ca30d925811c0634bbaedc04da3881c"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherListCollection.html#a1ca30d925811c0634bbaedc04da3881c">ripple::ValidatorList::PublisherListCollection::rawManifest</a></div><div class="ttdeci">std::string rawManifest</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00220">ValidatorList.h:220</a></div></div> <div class="ttc" id="astructripple_1_1ValidatorList_1_1PublisherListCollection_html_a1ca30d925811c0634bbaedc04da3881c"><div class="ttname"><a href="structripple_1_1ValidatorList_1_1PublisherListCollection.html#a1ca30d925811c0634bbaedc04da3881c">ripple::ValidatorList::PublisherListCollection::rawManifest</a></div><div class="ttdeci">std::string rawManifest</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00220">ValidatorList.h:220</a></div></div>

File diff suppressed because it is too large Load Diff

View File

@@ -1019,7 +1019,7 @@ Trusted Validators List</h2>
<dl class="section user"><dt>Thread Safety</dt><dd></dd></dl> <dl class="section user"><dt>Thread Safety</dt><dd></dd></dl>
<p>May be called concurrently </p> <p>May be called concurrently </p>
<p class="definition">Definition at line <a class="el" href="ValidatorList_8cpp_source.html#l01773">1773</a> of file <a class="el" href="ValidatorList_8cpp_source.html">ValidatorList.cpp</a>.</p> <p class="definition">Definition at line <a class="el" href="ValidatorList_8cpp_source.html#l01769">1769</a> of file <a class="el" href="ValidatorList_8cpp_source.html">ValidatorList.cpp</a>.</p>
</div> </div>
</div> </div>
@@ -1440,7 +1440,7 @@ Trusted Validators List</h2>
<p>get the trusted master public keys </p> <p>get the trusted master public keys </p>
<dl class="section return"><dt>Returns</dt><dd>the public keys </dd></dl> <dl class="section return"><dt>Returns</dt><dd>the public keys </dd></dl>
<p class="definition">Definition at line <a class="el" href="ValidatorList_8cpp_source.html#l01937">1937</a> of file <a class="el" href="ValidatorList_8cpp_source.html">ValidatorList.cpp</a>.</p> <p class="definition">Definition at line <a class="el" href="ValidatorList_8cpp_source.html#l01933">1933</a> of file <a class="el" href="ValidatorList_8cpp_source.html">ValidatorList.cpp</a>.</p>
</div> </div>
</div> </div>
@@ -1462,7 +1462,7 @@ Trusted Validators List</h2>
<p>get the master public keys of Negative UNL validators </p> <p>get the master public keys of Negative UNL validators </p>
<dl class="section return"><dt>Returns</dt><dd>the master public keys </dd></dl> <dl class="section return"><dt>Returns</dt><dd>the master public keys </dd></dl>
<p class="definition">Definition at line <a class="el" href="ValidatorList_8cpp_source.html#l01944">1944</a> of file <a class="el" href="ValidatorList_8cpp_source.html">ValidatorList.cpp</a>.</p> <p class="definition">Definition at line <a class="el" href="ValidatorList_8cpp_source.html#l01940">1940</a> of file <a class="el" href="ValidatorList_8cpp_source.html">ValidatorList.cpp</a>.</p>
</div> </div>
</div> </div>
@@ -1490,7 +1490,7 @@ Trusted Validators List</h2>
</dd> </dd>
</dl> </dl>
<p class="definition">Definition at line <a class="el" href="ValidatorList_8cpp_source.html#l01951">1951</a> of file <a class="el" href="ValidatorList_8cpp_source.html">ValidatorList.cpp</a>.</p> <p class="definition">Definition at line <a class="el" href="ValidatorList_8cpp_source.html#l01947">1947</a> of file <a class="el" href="ValidatorList_8cpp_source.html">ValidatorList.cpp</a>.</p>
</div> </div>
</div> </div>
@@ -1519,7 +1519,7 @@ Trusted Validators List</h2>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>a filtered copy of the validations </dd></dl> <dl class="section return"><dt>Returns</dt><dd>a filtered copy of the validations </dd></dl>
<p class="definition">Definition at line <a class="el" href="ValidatorList_8cpp_source.html#l01958">1958</a> of file <a class="el" href="ValidatorList_8cpp_source.html">ValidatorList.cpp</a>.</p> <p class="definition">Definition at line <a class="el" href="ValidatorList_8cpp_source.html#l01954">1954</a> of file <a class="el" href="ValidatorList_8cpp_source.html">ValidatorList.cpp</a>.</p>
</div> </div>
</div> </div>

View File

@@ -703,7 +703,7 @@ Static Private Member Functions</h2></td></tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="ValidatorList__test_8cpp_source.html#l02004">2004</a> of file <a class="el" href="ValidatorList__test_8cpp_source.html">ValidatorList_test.cpp</a>.</p> <p class="definition">Definition at line <a class="el" href="ValidatorList__test_8cpp_source.html#l02005">2005</a> of file <a class="el" href="ValidatorList__test_8cpp_source.html">ValidatorList_test.cpp</a>.</p>
</div> </div>
</div> </div>
@@ -730,7 +730,7 @@ Static Private Member Functions</h2></td></tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="ValidatorList__test_8cpp_source.html#l02056">2056</a> of file <a class="el" href="ValidatorList__test_8cpp_source.html">ValidatorList_test.cpp</a>.</p> <p class="definition">Definition at line <a class="el" href="ValidatorList__test_8cpp_source.html#l02057">2057</a> of file <a class="el" href="ValidatorList__test_8cpp_source.html">ValidatorList_test.cpp</a>.</p>
</div> </div>
</div> </div>
@@ -757,7 +757,7 @@ Static Private Member Functions</h2></td></tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="ValidatorList__test_8cpp_source.html#l02414">2414</a> of file <a class="el" href="ValidatorList__test_8cpp_source.html">ValidatorList_test.cpp</a>.</p> <p class="definition">Definition at line <a class="el" href="ValidatorList__test_8cpp_source.html#l02415">2415</a> of file <a class="el" href="ValidatorList__test_8cpp_source.html">ValidatorList_test.cpp</a>.</p>
</div> </div>
</div> </div>