This commit is contained in:
intelliot
2023-02-22 23:23:38 +00:00
parent f42ca42395
commit dc28e9df49
49 changed files with 2851 additions and 2830 deletions

View File

@@ -799,77 +799,77 @@ $(function() {
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordflow">return</span> count;</div>
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; }</div>
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; </div>
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;WrappedValidationType&gt;</a></div>
<div class="line"><a name="l01055"></a><span class="lineno"><a class="line" href="classripple_1_1Validations.html#a86ce52398a951c7df913b254eb8e9a2c"> 1055</a></span>&#160; <a class="code" href="classripple_1_1Validations.html#a86ce52398a951c7df913b254eb8e9a2c">getTrustedForLedger</a>(<a class="code" href="classripple_1_1Validations.html#acddbd8581fe7d4466e20da9143364915">ID</a> <span class="keyword">const</span>&amp; ledgerID)</div>
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; {</div>
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;WrappedValidationType&gt;</a> res;</div>
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock{mutex_};</div>
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; byLedger(</div>
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; lock,</div>
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; ledgerID,</div>
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; [&amp;](<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> numValidations) { res.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/reserve.html">reserve</a>(numValidations); },</div>
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; [&amp;](<a class="code" href="classripple_1_1Validations.html#a678c0348bd68f913d6f53f53e40c3f50">NodeID</a> <span class="keyword">const</span>&amp;, <a class="code" href="classripple_1_1Validations.html#a347521e28c20acb8fe6582fc5b917888">Validation</a> <span class="keyword">const</span>&amp; v) {</div>
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="keywordflow">if</span> (v.trusted() &amp;&amp; v.full())</div>
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; res.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/emplace_back.html">emplace_back</a>(v.unwrap());</div>
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; });</div>
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; </div>
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keywordflow">return</span> res;</div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; }</div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; </div>
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::uint32_t&gt;</a></div>
<div class="line"><a name="l01078"></a><span class="lineno"><a class="line" href="classripple_1_1Validations.html#a3f0296ffe3a427900bac6b4452d9636f"> 1078</a></span>&#160; <a class="code" href="classripple_1_1Validations.html#a3f0296ffe3a427900bac6b4452d9636f">fees</a>(<a class="code" href="classripple_1_1Validations.html#acddbd8581fe7d4466e20da9143364915">ID</a> <span class="keyword">const</span>&amp; ledgerID, <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> baseFee)</div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; {</div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::uint32_t&gt;</a> res;</div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock{mutex_};</div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; byLedger(</div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; lock,</div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; ledgerID,</div>
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; [&amp;](<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> numValidations) { res.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/reserve.html">reserve</a>(numValidations); },</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; [&amp;](<a class="code" href="classripple_1_1Validations.html#a678c0348bd68f913d6f53f53e40c3f50">NodeID</a> <span class="keyword">const</span>&amp;, <a class="code" href="classripple_1_1Validations.html#a347521e28c20acb8fe6582fc5b917888">Validation</a> <span class="keyword">const</span>&amp; v) {</div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">if</span> (v.trusted() &amp;&amp; v.full())</div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; {</div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;std::uint32_t&gt;</a> loadFee = v.loadFee();</div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="keywordflow">if</span> (loadFee)</div>
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; res.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(*loadFee);</div>
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; res.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(baseFee);</div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; }</div>
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; });</div>
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keywordflow">return</span> res;</div>
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; }</div>
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; </div>
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l01102"></a><span class="lineno"><a class="line" href="classripple_1_1Validations.html#a8a3e6aea72a984baf7419ede37649d16"> 1102</a></span>&#160; <a class="code" href="classripple_1_1Validations.html#a8a3e6aea72a984baf7419ede37649d16">flush</a>()</div>
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; {</div>
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock{mutex_};</div>
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; current_.clear();</div>
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; }</div>
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; </div>
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div>
<div class="line"><a name="l01124"></a><span class="lineno"><a class="line" href="classripple_1_1Validations.html#a67e7951c10601258af0fd960ca6f1b3a"> 1124</a></span>&#160; <a class="code" href="classripple_1_1Validations.html#a67e7951c10601258af0fd960ca6f1b3a">laggards</a>(<a class="code" href="classripple_1_1Validations.html#a1bb85550f592de56d2b1ae0c15938162">Seq</a> <span class="keyword">const</span> seq, <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set.html">hash_set&lt;NodeKey&gt;</a>&amp; trustedKeys)</div>
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; {</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> laggards = 0;</div>
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; </div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>(</div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a>{mutex_},</div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; [](<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a>) {},</div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; [&amp;](<a class="code" href="classripple_1_1Validations.html#a678c0348bd68f913d6f53f53e40c3f50">NodeID</a> <span class="keyword">const</span>&amp;, <a class="code" href="classripple_1_1Validations.html#a347521e28c20acb8fe6582fc5b917888">Validation</a> <span class="keyword">const</span>&amp; v) {</div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">if</span> (adaptor_.now() &lt;</div>
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; v.seenTime() + parms_.validationFRESHNESS &amp;&amp;</div>
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; trustedKeys.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/find.html">find</a>(v.key()) != trustedKeys.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/end.html">end</a>())</div>
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; {</div>
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; trustedKeys.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/erase.html">erase</a>(v.key());</div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="keywordflow">if</span> (seq &gt; v.seq())</div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; ++laggards;</div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; }</div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; });</div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; </div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keywordflow">return</span> laggards;</div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; }</div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;};</div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; </div>
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;WrappedValidationType&gt;</a></div>
<div class="line"><a name="l01056"></a><span class="lineno"><a class="line" href="classripple_1_1Validations.html#a065935dcd0e0f1fa0d5ded9a65935e86"> 1056</a></span>&#160; <a class="code" href="classripple_1_1Validations.html#a065935dcd0e0f1fa0d5ded9a65935e86">getTrustedForLedger</a>(<a class="code" href="classripple_1_1Validations.html#acddbd8581fe7d4466e20da9143364915">ID</a> <span class="keyword">const</span>&amp; ledgerID, <a class="code" href="classripple_1_1Validations.html#a1bb85550f592de56d2b1ae0c15938162">Seq</a> <span class="keyword">const</span>&amp; seq)</div>
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; {</div>
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;WrappedValidationType&gt;</a> res;</div>
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock{mutex_};</div>
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; byLedger(</div>
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; lock,</div>
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; ledgerID,</div>
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; [&amp;](<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> numValidations) { res.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/reserve.html">reserve</a>(numValidations); },</div>
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; [&amp;](<a class="code" href="classripple_1_1Validations.html#a678c0348bd68f913d6f53f53e40c3f50">NodeID</a> <span class="keyword">const</span>&amp;, <a class="code" href="classripple_1_1Validations.html#a347521e28c20acb8fe6582fc5b917888">Validation</a> <span class="keyword">const</span>&amp; v) {</div>
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <span class="keywordflow">if</span> (v.trusted() &amp;&amp; v.full() &amp;&amp; v.seq() == seq)</div>
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; res.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/emplace_back.html">emplace_back</a>(v.unwrap());</div>
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; });</div>
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; </div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">return</span> res;</div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; }</div>
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; </div>
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::uint32_t&gt;</a></div>
<div class="line"><a name="l01079"></a><span class="lineno"><a class="line" href="classripple_1_1Validations.html#a3f0296ffe3a427900bac6b4452d9636f"> 1079</a></span>&#160; <a class="code" href="classripple_1_1Validations.html#a3f0296ffe3a427900bac6b4452d9636f">fees</a>(<a class="code" href="classripple_1_1Validations.html#acddbd8581fe7d4466e20da9143364915">ID</a> <span class="keyword">const</span>&amp; ledgerID, <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> baseFee)</div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; {</div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::uint32_t&gt;</a> res;</div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock{mutex_};</div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; byLedger(</div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; lock,</div>
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; ledgerID,</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; [&amp;](<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> numValidations) { res.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/reserve.html">reserve</a>(numValidations); },</div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; [&amp;](<a class="code" href="classripple_1_1Validations.html#a678c0348bd68f913d6f53f53e40c3f50">NodeID</a> <span class="keyword">const</span>&amp;, <a class="code" href="classripple_1_1Validations.html#a347521e28c20acb8fe6582fc5b917888">Validation</a> <span class="keyword">const</span>&amp; v) {</div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keywordflow">if</span> (v.trusted() &amp;&amp; v.full())</div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; {</div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;std::uint32_t&gt;</a> loadFee = v.loadFee();</div>
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordflow">if</span> (loadFee)</div>
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; res.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(*loadFee);</div>
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; res.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(baseFee);</div>
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; }</div>
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; });</div>
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">return</span> res;</div>
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; }</div>
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; </div>
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l01103"></a><span class="lineno"><a class="line" href="classripple_1_1Validations.html#a8a3e6aea72a984baf7419ede37649d16"> 1103</a></span>&#160; <a class="code" href="classripple_1_1Validations.html#a8a3e6aea72a984baf7419ede37649d16">flush</a>()</div>
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; {</div>
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock{mutex_};</div>
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; current_.clear();</div>
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; }</div>
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; </div>
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div>
<div class="line"><a name="l01125"></a><span class="lineno"><a class="line" href="classripple_1_1Validations.html#a67e7951c10601258af0fd960ca6f1b3a"> 1125</a></span>&#160; <a class="code" href="classripple_1_1Validations.html#a67e7951c10601258af0fd960ca6f1b3a">laggards</a>(<a class="code" href="classripple_1_1Validations.html#a1bb85550f592de56d2b1ae0c15938162">Seq</a> <span class="keyword">const</span> seq, <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set.html">hash_set&lt;NodeKey&gt;</a>&amp; trustedKeys)</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; {</div>
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> laggards = 0;</div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; </div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <a class="code" href="namespaceripple.html#a6434c1a0fd22b77e2e4a228c0eca79eba43b5c9175984c071f30b873fdce0a000">current</a>(</div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a>{mutex_},</div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; [](<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a>) {},</div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; [&amp;](<a class="code" href="classripple_1_1Validations.html#a678c0348bd68f913d6f53f53e40c3f50">NodeID</a> <span class="keyword">const</span>&amp;, <a class="code" href="classripple_1_1Validations.html#a347521e28c20acb8fe6582fc5b917888">Validation</a> <span class="keyword">const</span>&amp; v) {</div>
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <span class="keywordflow">if</span> (adaptor_.now() &lt;</div>
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; v.seenTime() + parms_.validationFRESHNESS &amp;&amp;</div>
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; trustedKeys.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/find.html">find</a>(v.key()) != trustedKeys.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/end.html">end</a>())</div>
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; {</div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; trustedKeys.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_set/erase.html">erase</a>(v.key());</div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">if</span> (seq &gt; v.seq())</div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; ++laggards;</div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; }</div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; });</div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; </div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keywordflow">return</span> laggards;</div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; }</div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;};</div>
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; </div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassripple_1_1Validations_html_a1bb85550f592de56d2b1ae0c15938162"><div class="ttname"><a href="classripple_1_1Validations.html#a1bb85550f592de56d2b1ae0c15938162">ripple::Validations&lt; ripple::test::csf::Peer::ValAdaptor &gt;::Seq</a></div><div class="ttdeci">typename Ledger::Seq Seq</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l00294">Validations.h:294</a></div></div>
<div class="ttc" id="amax_element_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/max_element.html">std::max_element</a></div><div class="ttdeci">T max_element(T... args)</div></div>
@@ -882,11 +882,11 @@ $(function() {
<div class="ttc" id="aclassripple_1_1SeqEnforcer_html"><div class="ttname"><a href="classripple_1_1SeqEnforcer.html">ripple::SeqEnforcer</a></div><div class="ttdoc">Enforce validation increasing sequence requirement.</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l00098">Validations.h:98</a></div></div>
<div class="ttc" id="abasic_string_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="autility_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/utility.html">utility</a></div></div>
<div class="ttc" id="aclassripple_1_1Validations_html_a67e7951c10601258af0fd960ca6f1b3a"><div class="ttname"><a href="classripple_1_1Validations.html#a67e7951c10601258af0fd960ca6f1b3a">ripple::Validations::laggards</a></div><div class="ttdeci">std::size_t laggards(Seq const seq, hash_set&lt; NodeKey &gt; &amp;trustedKeys)</div><div class="ttdoc">Return quantity of lagging proposers, and remove online proposers for purposes of evaluating whether ...</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l01124">Validations.h:1124</a></div></div>
<div class="ttc" id="aclassripple_1_1Validations_html_a67e7951c10601258af0fd960ca6f1b3a"><div class="ttname"><a href="classripple_1_1Validations.html#a67e7951c10601258af0fd960ca6f1b3a">ripple::Validations::laggards</a></div><div class="ttdeci">std::size_t laggards(Seq const seq, hash_set&lt; NodeKey &gt; &amp;trustedKeys)</div><div class="ttdoc">Return quantity of lagging proposers, and remove online proposers for purposes of evaluating whether ...</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l01125">Validations.h:1125</a></div></div>
<div class="ttc" id="aunordered_set_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_set.html">std::unordered_set</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="apair_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt; Seq, ID &gt;</a></div></div>
<div class="ttc" id="areserve_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/reserve.html">std::vector::reserve</a></div><div class="ttdeci">T reserve(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1Validations_html_a3f0296ffe3a427900bac6b4452d9636f"><div class="ttname"><a href="classripple_1_1Validations.html#a3f0296ffe3a427900bac6b4452d9636f">ripple::Validations::fees</a></div><div class="ttdeci">std::vector&lt; std::uint32_t &gt; fees(ID const &amp;ledgerID, std::uint32_t baseFee)</div><div class="ttdoc">Returns fees reported by trusted full validators in the given ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l01078">Validations.h:1078</a></div></div>
<div class="ttc" id="aclassripple_1_1Validations_html_a3f0296ffe3a427900bac6b4452d9636f"><div class="ttname"><a href="classripple_1_1Validations.html#a3f0296ffe3a427900bac6b4452d9636f">ripple::Validations::fees</a></div><div class="ttdeci">std::vector&lt; std::uint32_t &gt; fees(ID const &amp;ledgerID, std::uint32_t baseFee)</div><div class="ttdoc">Returns fees reported by trusted full validators in the given ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l01079">Validations.h:1079</a></div></div>
<div class="ttc" id="aclassripple_1_1Validations_html_a182a987f9c2f6cf9b67fe3cb0d12b247"><div class="ttname"><a href="classripple_1_1Validations.html#a182a987f9c2f6cf9b67fe3cb0d12b247">ripple::Validations::lastLedger_</a></div><div class="ttdeci">hash_map&lt; NodeID, Ledger &gt; lastLedger_</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l00342">Validations.h:342</a></div></div>
<div class="ttc" id="aclassripple_1_1Validations_html_a37586cfd59e9e0ce5f4aad6029e1a077"><div class="ttname"><a href="classripple_1_1Validations.html#a37586cfd59e9e0ce5f4aad6029e1a077">ripple::Validations::Validations</a></div><div class="ttdeci">Validations(ValidationParms const &amp;p, beast::abstract_clock&lt; std::chrono::steady_clock &gt; &amp;c, Ts &amp;&amp;... ts)</div><div class="ttdoc">Constructor.</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l00572">Validations.h:572</a></div></div>
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/vector.html">vector</a></div></div>
@@ -938,10 +938,9 @@ $(function() {
<div class="ttc" id="ainteger_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a></div></div>
<div class="ttc" id="astructripple_1_1ValidationParms_html_ae59a5bbb09863491d75c2146894d2a16"><div class="ttname"><a href="structripple_1_1ValidationParms.html#ae59a5bbb09863491d75c2146894d2a16">ripple::ValidationParms::validationCURRENT_WALL</a></div><div class="ttdeci">std::chrono::seconds validationCURRENT_WALL</div><div class="ttdoc">The number of seconds a validation remains current after its ledger's close time.</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l00055">Validations.h:55</a></div></div>
<div class="ttc" id="aclassripple_1_1SeqEnforcer_html_a8e1e3ece81c02b8c7e59f42caeaf4e88"><div class="ttname"><a href="classripple_1_1SeqEnforcer.html#a8e1e3ece81c02b8c7e59f42caeaf4e88">ripple::SeqEnforcer::operator()</a></div><div class="ttdeci">bool operator()(time_point now, Seq s, ValidationParms const &amp;p)</div><div class="ttdoc">Try advancing the largest observed validation ledger sequence.</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l00118">Validations.h:118</a></div></div>
<div class="ttc" id="aclassripple_1_1Validations_html_a86ce52398a951c7df913b254eb8e9a2c"><div class="ttname"><a href="classripple_1_1Validations.html#a86ce52398a951c7df913b254eb8e9a2c">ripple::Validations::getTrustedForLedger</a></div><div class="ttdeci">std::vector&lt; WrappedValidationType &gt; getTrustedForLedger(ID const &amp;ledgerID)</div><div class="ttdoc">Get trusted full validations for a specific ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l01055">Validations.h:1055</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="aclassripple_1_1Validations_html_ad8cbed0563344b297789575879aae482"><div class="ttname"><a href="classripple_1_1Validations.html#ad8cbed0563344b297789575879aae482">ripple::Validations::getPreferred</a></div><div class="ttdeci">ID getPreferred(Ledger const &amp;curr, Seq minValidSeq)</div><div class="ttdoc">Get the ID of the preferred working ledger that exceeds a minimum valid ledger sequence number.</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l00908">Validations.h:908</a></div></div>
<div class="ttc" id="aclassripple_1_1Validations_html_a8a3e6aea72a984baf7419ede37649d16"><div class="ttname"><a href="classripple_1_1Validations.html#a8a3e6aea72a984baf7419ede37649d16">ripple::Validations::flush</a></div><div class="ttdeci">void flush()</div><div class="ttdoc">Flush all current validations.</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l01102">Validations.h:1102</a></div></div>
<div class="ttc" id="aclassripple_1_1Validations_html_a8a3e6aea72a984baf7419ede37649d16"><div class="ttname"><a href="classripple_1_1Validations.html#a8a3e6aea72a984baf7419ede37649d16">ripple::Validations::flush</a></div><div class="ttdeci">void flush()</div><div class="ttdoc">Flush all current validations.</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l01103">Validations.h:1103</a></div></div>
<div class="ttc" id="aclassripple_1_1Validations_html_acddbd8581fe7d4466e20da9143364915"><div class="ttname"><a href="classripple_1_1Validations.html#acddbd8581fe7d4466e20da9143364915">ripple::Validations&lt; ripple::test::csf::Peer::ValAdaptor &gt;::ID</a></div><div class="ttdeci">typename Ledger::ID ID</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l00293">Validations.h:293</a></div></div>
<div class="ttc" id="amin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/min.html">std::min</a></div><div class="ttdeci">T min(T... args)</div></div>
<div class="ttc" id="adecay_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/decay.html">std::decay_t</a></div></div>
@@ -980,6 +979,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1Validations_html_a8953347f904dc097b89643ce100be3d2"><div class="ttname"><a href="classripple_1_1Validations.html#a8953347f904dc097b89643ce100be3d2">ripple::Validations::adaptor</a></div><div class="ttdeci">Adaptor const &amp; adaptor() const</div><div class="ttdoc">Return the adaptor instance.</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l00586">Validations.h:586</a></div></div>
<div class="ttc" id="astructripple_1_1Validations_1_1KeepRange_html_abe1719c15def4fe015dff73a6d14225f"><div class="ttname"><a href="structripple_1_1Validations_1_1KeepRange.html#abe1719c15def4fe015dff73a6d14225f">ripple::Validations::KeepRange::high_</a></div><div class="ttdeci">Seq high_</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l00333">Validations.h:333</a></div></div>
<div class="ttc" id="astructripple_1_1ValidationParms_html"><div class="ttname"><a href="structripple_1_1ValidationParms.html">ripple::ValidationParms</a></div><div class="ttdoc">Timing parameters to control validation staleness and expiration.</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l00045">Validations.h:45</a></div></div>
<div class="ttc" id="aclassripple_1_1Validations_html_a065935dcd0e0f1fa0d5ded9a65935e86"><div class="ttname"><a href="classripple_1_1Validations.html#a065935dcd0e0f1fa0d5ded9a65935e86">ripple::Validations::getTrustedForLedger</a></div><div class="ttdeci">std::vector&lt; WrappedValidationType &gt; getTrustedForLedger(ID const &amp;ledgerID, Seq const &amp;seq)</div><div class="ttdoc">Get trusted full validations for a specific ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Validations_8h_source.html#l01056">Validations.h:1056</a></div></div>
<div class="ttc" id="aunordered_map_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_map.html">std::unordered_map</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="atype_traits_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/type_traits.html">type_traits</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>