mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-28 06:55:50 +00:00
deploy: 3d02580c09
This commit is contained in:
@@ -2173,7 +2173,7 @@ $(function() {
|
||||
<div class="line"><a id="l02135" name="l02135"></a><span class="lineno"> 2135</span> {</div>
|
||||
<div class="line"><a id="l02136" name="l02136"></a><span class="lineno"> 2136</span> JLOG(<a class="code hl_variable" href="classripple_1_1LedgerMaster.html#a7621d03781287445cfabcb91046f141d">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>())</div>
|
||||
<div class="line"><a id="l02137" name="l02137"></a><span class="lineno"> 2137</span> << <span class="stringliteral">"Peer requests fetch pack for ledger we don't have: "</span> << have;</div>
|
||||
<div class="line"><a id="l02138" name="l02138"></a><span class="lineno"> 2138</span> peer->charge(<a class="code hl_variable" href="namespaceripple_1_1Resource.html#a79b0f414dccfcd34031b08b68b671d9e">Resource::feeRequestNoReply</a>);</div>
|
||||
<div class="line"><a id="l02138" name="l02138"></a><span class="lineno"> 2138</span> peer->charge(<a class="code hl_variable" href="namespaceripple_1_1Resource.html#a79b0f414dccfcd34031b08b68b671d9e">Resource::feeRequestNoReply</a>, <span class="stringliteral">"get_object ledger"</span>);</div>
|
||||
<div class="line"><a id="l02139" name="l02139"></a><span class="lineno"> 2139</span> <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a id="l02140" name="l02140"></a><span class="lineno"> 2140</span> }</div>
|
||||
<div class="line"><a id="l02141" name="l02141"></a><span class="lineno"> 2141</span> </div>
|
||||
@@ -2181,14 +2181,14 @@ $(function() {
|
||||
<div class="line"><a id="l02143" name="l02143"></a><span class="lineno"> 2143</span> {</div>
|
||||
<div class="line"><a id="l02144" name="l02144"></a><span class="lineno"> 2144</span> JLOG(<a class="code hl_variable" href="classripple_1_1LedgerMaster.html#a7621d03781287445cfabcb91046f141d">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#ad8fefe3e8ad583e1ed1bf02094ac3d8f">warn</a>())</div>
|
||||
<div class="line"><a id="l02145" name="l02145"></a><span class="lineno"> 2145</span> << <span class="stringliteral">"Peer requests fetch pack from open ledger: "</span> << have;</div>
|
||||
<div class="line"><a id="l02146" name="l02146"></a><span class="lineno"> 2146</span> peer->charge(<a class="code hl_variable" href="namespaceripple_1_1Resource.html#a261bec897e7b0c7c198bad1e37d87458">Resource::feeInvalidRequest</a>);</div>
|
||||
<div class="line"><a id="l02146" name="l02146"></a><span class="lineno"> 2146</span> peer->charge(<a class="code hl_variable" href="namespaceripple_1_1Resource.html#a0b2a0218d1e64ae67ac02712b613a936">Resource::feeMalformedRequest</a>, <span class="stringliteral">"get_object ledger open"</span>);</div>
|
||||
<div class="line"><a id="l02147" name="l02147"></a><span class="lineno"> 2147</span> <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a id="l02148" name="l02148"></a><span class="lineno"> 2148</span> }</div>
|
||||
<div class="line"><a id="l02149" name="l02149"></a><span class="lineno"> 2149</span> </div>
|
||||
<div class="line"><a id="l02150" name="l02150"></a><span class="lineno"> 2150</span> <span class="keywordflow">if</span> (have->info().seq < <a class="code hl_function" href="classripple_1_1LedgerMaster.html#a48d645c212af114908fe168b140ff3cb">getEarliestFetch</a>())</div>
|
||||
<div class="line"><a id="l02151" name="l02151"></a><span class="lineno"> 2151</span> {</div>
|
||||
<div class="line"><a id="l02152" name="l02152"></a><span class="lineno"> 2152</span> JLOG(<a class="code hl_variable" href="classripple_1_1LedgerMaster.html#a7621d03781287445cfabcb91046f141d">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) << <span class="stringliteral">"Peer requests fetch pack that is too early"</span>;</div>
|
||||
<div class="line"><a id="l02153" name="l02153"></a><span class="lineno"> 2153</span> peer->charge(<a class="code hl_variable" href="namespaceripple_1_1Resource.html#a261bec897e7b0c7c198bad1e37d87458">Resource::feeInvalidRequest</a>);</div>
|
||||
<div class="line"><a id="l02153" name="l02153"></a><span class="lineno"> 2153</span> peer->charge(<a class="code hl_variable" href="namespaceripple_1_1Resource.html#a0b2a0218d1e64ae67ac02712b613a936">Resource::feeMalformedRequest</a>, <span class="stringliteral">"get_object ledger early"</span>);</div>
|
||||
<div class="line"><a id="l02154" name="l02154"></a><span class="lineno"> 2154</span> <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a id="l02155" name="l02155"></a><span class="lineno"> 2155</span> }</div>
|
||||
<div class="line"><a id="l02156" name="l02156"></a><span class="lineno"> 2156</span> </div>
|
||||
@@ -2199,115 +2199,116 @@ $(function() {
|
||||
<div class="line"><a id="l02161" name="l02161"></a><span class="lineno"> 2161</span> JLOG(<a class="code hl_variable" href="classripple_1_1LedgerMaster.html#a7621d03781287445cfabcb91046f141d">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>())</div>
|
||||
<div class="line"><a id="l02162" name="l02162"></a><span class="lineno"> 2162</span> << <span class="stringliteral">"Peer requests fetch pack for ledger whose predecessor we "</span></div>
|
||||
<div class="line"><a id="l02163" name="l02163"></a><span class="lineno"> 2163</span> << <span class="stringliteral">"don't have: "</span> << have;</div>
|
||||
<div class="line"><a id="l02164" name="l02164"></a><span class="lineno"> 2164</span> peer->charge(<a class="code hl_variable" href="namespaceripple_1_1Resource.html#a79b0f414dccfcd34031b08b68b671d9e">Resource::feeRequestNoReply</a>);</div>
|
||||
<div class="line"><a id="l02165" name="l02165"></a><span class="lineno"> 2165</span> <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a id="l02166" name="l02166"></a><span class="lineno"> 2166</span> }</div>
|
||||
<div class="line"><a id="l02167" name="l02167"></a><span class="lineno"> 2167</span> </div>
|
||||
<div class="line"><a id="l02168" name="l02168"></a><span class="lineno"> 2168</span> <span class="keywordflow">try</span></div>
|
||||
<div class="line"><a id="l02169" name="l02169"></a><span class="lineno"> 2169</span> {</div>
|
||||
<div class="line"><a id="l02170" name="l02170"></a><span class="lineno"> 2170</span> <a class="code hl_class" href="classripple_1_1Serializer.html">Serializer</a> hdr(128);</div>
|
||||
<div class="line"><a id="l02171" name="l02171"></a><span class="lineno"> 2171</span> </div>
|
||||
<div class="line"><a id="l02172" name="l02172"></a><span class="lineno"> 2172</span> protocol::TMGetObjectByHash reply;</div>
|
||||
<div class="line"><a id="l02173" name="l02173"></a><span class="lineno"> 2173</span> reply.set_query(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a id="l02174" name="l02174"></a><span class="lineno"> 2174</span> </div>
|
||||
<div class="line"><a id="l02175" name="l02175"></a><span class="lineno"> 2175</span> <span class="keywordflow">if</span> (request->has_seq())</div>
|
||||
<div class="line"><a id="l02176" name="l02176"></a><span class="lineno"> 2176</span> reply.set_seq(request->seq());</div>
|
||||
<div class="line"><a id="l02177" name="l02177"></a><span class="lineno"> 2177</span> </div>
|
||||
<div class="line"><a id="l02178" name="l02178"></a><span class="lineno"> 2178</span> reply.set_ledgerhash(request->ledgerhash());</div>
|
||||
<div class="line"><a id="l02179" name="l02179"></a><span class="lineno"> 2179</span> reply.set_type(protocol::TMGetObjectByHash::otFETCH_PACK);</div>
|
||||
<div class="line"><a id="l02180" name="l02180"></a><span class="lineno"> 2180</span> </div>
|
||||
<div class="line"><a id="l02181" name="l02181"></a><span class="lineno"> 2181</span> <span class="comment">// Building a fetch pack:</span></div>
|
||||
<div class="line"><a id="l02182" name="l02182"></a><span class="lineno"> 2182</span> <span class="comment">// 1. Add the header for the requested ledger.</span></div>
|
||||
<div class="line"><a id="l02183" name="l02183"></a><span class="lineno"> 2183</span> <span class="comment">// 2. Add the nodes for the AccountStateMap of that ledger.</span></div>
|
||||
<div class="line"><a id="l02184" name="l02184"></a><span class="lineno"> 2184</span> <span class="comment">// 3. If there are transactions, add the nodes for the</span></div>
|
||||
<div class="line"><a id="l02185" name="l02185"></a><span class="lineno"> 2185</span> <span class="comment">// transactions of the ledger.</span></div>
|
||||
<div class="line"><a id="l02186" name="l02186"></a><span class="lineno"> 2186</span> <span class="comment">// 4. If the FetchPack now contains at least 512 entries then stop.</span></div>
|
||||
<div class="line"><a id="l02187" name="l02187"></a><span class="lineno"> 2187</span> <span class="comment">// 5. If not very much time has elapsed, then loop back and repeat</span></div>
|
||||
<div class="line"><a id="l02188" name="l02188"></a><span class="lineno"> 2188</span> <span class="comment">// the same process adding the previous ledger to the FetchPack.</span></div>
|
||||
<div class="line"><a id="l02189" name="l02189"></a><span class="lineno"> 2189</span> <span class="keywordflow">do</span></div>
|
||||
<div class="line"><a id="l02190" name="l02190"></a><span class="lineno"> 2190</span> {</div>
|
||||
<div class="line"><a id="l02191" name="l02191"></a><span class="lineno"> 2191</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> lSeq = want->info().seq;</div>
|
||||
<div class="line"><a id="l02192" name="l02192"></a><span class="lineno"> 2192</span> </div>
|
||||
<div class="line"><a id="l02193" name="l02193"></a><span class="lineno"> 2193</span> {</div>
|
||||
<div class="line"><a id="l02194" name="l02194"></a><span class="lineno"> 2194</span> <span class="comment">// Serialize the ledger header:</span></div>
|
||||
<div class="line"><a id="l02195" name="l02195"></a><span class="lineno"> 2195</span> hdr.<a class="code hl_function" href="classripple_1_1Serializer.html#a0b9f56cab2021e47d45e4cd287f4b425">erase</a>();</div>
|
||||
<div class="line"><a id="l02196" name="l02196"></a><span class="lineno"> 2196</span> </div>
|
||||
<div class="line"><a id="l02197" name="l02197"></a><span class="lineno"> 2197</span> hdr.<a class="code hl_function" href="classripple_1_1Serializer.html#a2aeeb12b01b18876187455f7009f5352">add32</a>(<a class="code hl_enumvalue" href="namespaceripple.html#ad5143ceada01141772ae4aab984f94bda7fa2267e9b1bf739a70bb1860ab2a99c">HashPrefix::ledgerMaster</a>);</div>
|
||||
<div class="line"><a id="l02198" name="l02198"></a><span class="lineno"> 2198</span> <a class="code hl_function" href="namespaceripple.html#ad6ef4b359d5387fe20ce3ca7e3a293e7">addRaw</a>(want->info(), hdr);</div>
|
||||
<div class="line"><a id="l02199" name="l02199"></a><span class="lineno"> 2199</span> </div>
|
||||
<div class="line"><a id="l02200" name="l02200"></a><span class="lineno"> 2200</span> <span class="comment">// Add the data</span></div>
|
||||
<div class="line"><a id="l02201" name="l02201"></a><span class="lineno"> 2201</span> protocol::TMIndexedObject* obj = reply.add_objects();</div>
|
||||
<div class="line"><a id="l02202" name="l02202"></a><span class="lineno"> 2202</span> obj->set_hash(</div>
|
||||
<div class="line"><a id="l02203" name="l02203"></a><span class="lineno"> 2203</span> want->info().hash.data(), want->info().hash.size());</div>
|
||||
<div class="line"><a id="l02204" name="l02204"></a><span class="lineno"> 2204</span> obj->set_data(hdr.<a class="code hl_function" href="classripple_1_1Serializer.html#aac36a53e5cb746cbb9b071cebc0251e0">getDataPtr</a>(), hdr.<a class="code hl_function" href="classripple_1_1Serializer.html#aa5c7aa53db0c7c90c6a86dd5144e9255">getLength</a>());</div>
|
||||
<div class="line"><a id="l02205" name="l02205"></a><span class="lineno"> 2205</span> obj->set_ledgerseq(lSeq);</div>
|
||||
<div class="line"><a id="l02206" name="l02206"></a><span class="lineno"> 2206</span> }</div>
|
||||
<div class="line"><a id="l02207" name="l02207"></a><span class="lineno"> 2207</span> </div>
|
||||
<div class="line"><a id="l02208" name="l02208"></a><span class="lineno"> 2208</span> <a class="code hl_function" href="namespaceripple.html#ac15ecd7d76b1ce1c5719a25a7bdeaef4">populateFetchPack</a>(</div>
|
||||
<div class="line"><a id="l02209" name="l02209"></a><span class="lineno"> 2209</span> want->stateMap(), &have->stateMap(), 16384, &reply, lSeq);</div>
|
||||
<div class="line"><a id="l02210" name="l02210"></a><span class="lineno"> 2210</span> </div>
|
||||
<div class="line"><a id="l02211" name="l02211"></a><span class="lineno"> 2211</span> <span class="comment">// We use nullptr here because transaction maps are per ledger</span></div>
|
||||
<div class="line"><a id="l02212" name="l02212"></a><span class="lineno"> 2212</span> <span class="comment">// and so the requestor is unlikely to already have it.</span></div>
|
||||
<div class="line"><a id="l02213" name="l02213"></a><span class="lineno"> 2213</span> <span class="keywordflow">if</span> (want->info().txHash.isNonZero())</div>
|
||||
<div class="line"><a id="l02214" name="l02214"></a><span class="lineno"> 2214</span> <a class="code hl_function" href="namespaceripple.html#ac15ecd7d76b1ce1c5719a25a7bdeaef4">populateFetchPack</a>(want->txMap(), <span class="keyword">nullptr</span>, 512, &reply, lSeq);</div>
|
||||
<div class="line"><a id="l02215" name="l02215"></a><span class="lineno"> 2215</span> </div>
|
||||
<div class="line"><a id="l02216" name="l02216"></a><span class="lineno"> 2216</span> <span class="keywordflow">if</span> (reply.objects().size() >= 512)</div>
|
||||
<div class="line"><a id="l02217" name="l02217"></a><span class="lineno"> 2217</span> <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><a id="l02218" name="l02218"></a><span class="lineno"> 2218</span> </div>
|
||||
<div class="line"><a id="l02219" name="l02219"></a><span class="lineno"> 2219</span> have = std::move(want);</div>
|
||||
<div class="line"><a id="l02220" name="l02220"></a><span class="lineno"> 2220</span> want = <a class="code hl_function" href="classripple_1_1LedgerMaster.html#ae766ee72c3e4825d6c59be59f64c73c4">getLedgerByHash</a>(have->info().parentHash);</div>
|
||||
<div class="line"><a id="l02221" name="l02221"></a><span class="lineno"> 2221</span> } <span class="keywordflow">while</span> (want && <a class="code hl_function" href="classripple_1_1UptimeClock.html#ae854244a4dcf8de363337e93d5a04444">UptimeClock::now</a>() <= uptime + 1s);</div>
|
||||
<div class="line"><a id="l02222" name="l02222"></a><span class="lineno"> 2222</span> </div>
|
||||
<div class="line"><a id="l02223" name="l02223"></a><span class="lineno"> 2223</span> <span class="keyword">auto</span> msg = std::make_shared<Message>(reply, protocol::mtGET_OBJECTS);</div>
|
||||
<div class="line"><a id="l02224" name="l02224"></a><span class="lineno"> 2224</span> </div>
|
||||
<div class="line"><a id="l02225" name="l02225"></a><span class="lineno"> 2225</span> JLOG(<a class="code hl_variable" href="classripple_1_1LedgerMaster.html#a7621d03781287445cfabcb91046f141d">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>())</div>
|
||||
<div class="line"><a id="l02226" name="l02226"></a><span class="lineno"> 2226</span> << <span class="stringliteral">"Built fetch pack with "</span> << reply.objects().size() << <span class="stringliteral">" nodes ("</span></div>
|
||||
<div class="line"><a id="l02227" name="l02227"></a><span class="lineno"> 2227</span> << msg->getBufferSize() << <span class="stringliteral">" bytes)"</span>;</div>
|
||||
<div class="line"><a id="l02228" name="l02228"></a><span class="lineno"> 2228</span> </div>
|
||||
<div class="line"><a id="l02229" name="l02229"></a><span class="lineno"> 2229</span> peer->send(msg);</div>
|
||||
<div class="line"><a id="l02230" name="l02230"></a><span class="lineno"> 2230</span> }</div>
|
||||
<div class="line"><a id="l02231" name="l02231"></a><span class="lineno"> 2231</span> <span class="keywordflow">catch</span> (<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a> <span class="keyword">const</span>& ex)</div>
|
||||
<div class="line"><a id="l02232" name="l02232"></a><span class="lineno"> 2232</span> {</div>
|
||||
<div class="line"><a id="l02233" name="l02233"></a><span class="lineno"> 2233</span> JLOG(<a class="code hl_variable" href="classripple_1_1LedgerMaster.html#a7621d03781287445cfabcb91046f141d">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#ad8fefe3e8ad583e1ed1bf02094ac3d8f">warn</a>())</div>
|
||||
<div class="line"><a id="l02234" name="l02234"></a><span class="lineno"> 2234</span> << <span class="stringliteral">"Exception building fetch pach. Exception: "</span> << ex.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/error/exception/what.html">what</a>();</div>
|
||||
<div class="line"><a id="l02235" name="l02235"></a><span class="lineno"> 2235</span> }</div>
|
||||
<div class="line"><a id="l02236" name="l02236"></a><span class="lineno"> 2236</span>}</div>
|
||||
<div class="line"><a id="l02237" name="l02237"></a><span class="lineno"> 2237</span> </div>
|
||||
<div class="line"><a id="l02238" name="l02238"></a><span class="lineno"> 2238</span><a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div>
|
||||
<div class="line"><a id="l02239" name="l02239"></a><span class="lineno"><a class="line" href="classripple_1_1LedgerMaster.html#aa14798637526012a9725f62488e86e58"> 2239</a></span><a class="code hl_function" href="classripple_1_1LedgerMaster.html#aa14798637526012a9725f62488e86e58">LedgerMaster::getFetchPackCacheSize</a>()<span class="keyword"> const</span></div>
|
||||
<div class="line"><a id="l02240" name="l02240"></a><span class="lineno"> 2240</span><span class="keyword"></span>{</div>
|
||||
<div class="line"><a id="l02241" name="l02241"></a><span class="lineno"> 2241</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classripple_1_1LedgerMaster.html#a657cc607c2fbd75e529fba30b1fab3f5">fetch_packs_</a>.getCacheSize();</div>
|
||||
<div class="line"><a id="l02242" name="l02242"></a><span class="lineno"> 2242</span>}</div>
|
||||
<div class="line"><a id="l02243" name="l02243"></a><span class="lineno"> 2243</span> </div>
|
||||
<div class="line"><a id="l02244" name="l02244"></a><span class="lineno"> 2244</span><span class="comment">// Returns the minimum ledger sequence in SQL database, if any.</span></div>
|
||||
<div class="line"><a id="l02245" name="l02245"></a><span class="lineno"> 2245</span><a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<LedgerIndex></a></div>
|
||||
<div class="line"><a id="l02246" name="l02246"></a><span class="lineno"><a class="line" href="classripple_1_1LedgerMaster.html#a85ab10f185f8e05e7dbd76f6a8df25f5"> 2246</a></span><a class="code hl_function" href="classripple_1_1LedgerMaster.html#a85ab10f185f8e05e7dbd76f6a8df25f5">LedgerMaster::minSqlSeq</a>()</div>
|
||||
<div class="line"><a id="l02247" name="l02247"></a><span class="lineno"> 2247</span>{</div>
|
||||
<div class="line"><a id="l02248" name="l02248"></a><span class="lineno"> 2248</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classripple_1_1LedgerMaster.html#a262ba48a2919950db79ae9434018b450">app_</a>.<a class="code hl_function" href="classripple_1_1Application.html#ab0e839b597cf03221a393cb754ec4e25">getRelationalDatabase</a>().<a class="code hl_function" href="classripple_1_1RelationalDatabase.html#acf44d77817b8dab02b31c974817aaa29">getMinLedgerSeq</a>();</div>
|
||||
<div class="line"><a id="l02249" name="l02249"></a><span class="lineno"> 2249</span>}</div>
|
||||
<div class="line"><a id="l02250" name="l02250"></a><span class="lineno"> 2250</span> </div>
|
||||
<div class="line"><a id="l02251" name="l02251"></a><span class="lineno"> 2251</span><a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<uint256></a></div>
|
||||
<div class="line"><a id="l02252" name="l02252"></a><span class="lineno"><a class="line" href="classripple_1_1LedgerMaster.html#a73b0187c85aa6bca492a83f5acfd7d21"> 2252</a></span><a class="code hl_function" href="classripple_1_1LedgerMaster.html#a73b0187c85aa6bca492a83f5acfd7d21">LedgerMaster::txnIdFromIndex</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">uint32_t</a> ledgerSeq, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">uint32_t</a> txnIndex)</div>
|
||||
<div class="line"><a id="l02253" name="l02253"></a><span class="lineno"> 2253</span>{</div>
|
||||
<div class="line"><a id="l02254" name="l02254"></a><span class="lineno"> 2254</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">uint32_t</a> first = 0, last = 0;</div>
|
||||
<div class="line"><a id="l02255" name="l02255"></a><span class="lineno"> 2255</span> </div>
|
||||
<div class="line"><a id="l02256" name="l02256"></a><span class="lineno"> 2256</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a777c77ff2d32f4bd6692f92f5a960471">getValidatedRange</a>(first, last) || last < ledgerSeq)</div>
|
||||
<div class="line"><a id="l02257" name="l02257"></a><span class="lineno"> 2257</span> <span class="keywordflow">return</span> {};</div>
|
||||
<div class="line"><a id="l02258" name="l02258"></a><span class="lineno"> 2258</span> </div>
|
||||
<div class="line"><a id="l02259" name="l02259"></a><span class="lineno"> 2259</span> <span class="keyword">auto</span> <span class="keyword">const</span> lgr = <a class="code hl_function" href="classripple_1_1LedgerMaster.html#ae54f482cc23a2fad32a1d841e6b47e74">getLedgerBySeq</a>(ledgerSeq);</div>
|
||||
<div class="line"><a id="l02260" name="l02260"></a><span class="lineno"> 2260</span> <span class="keywordflow">if</span> (!lgr || lgr->txs.empty())</div>
|
||||
<div class="line"><a id="l02261" name="l02261"></a><span class="lineno"> 2261</span> <span class="keywordflow">return</span> {};</div>
|
||||
<div class="line"><a id="l02262" name="l02262"></a><span class="lineno"> 2262</span> </div>
|
||||
<div class="line"><a id="l02263" name="l02263"></a><span class="lineno"> 2263</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = lgr->txs.begin(); it != lgr->txs.end(); ++it)</div>
|
||||
<div class="line"><a id="l02264" name="l02264"></a><span class="lineno"> 2264</span> <span class="keywordflow">if</span> (it->first && it->second &&</div>
|
||||
<div class="line"><a id="l02265" name="l02265"></a><span class="lineno"> 2265</span> it->second->isFieldPresent(sfTransactionIndex) &&</div>
|
||||
<div class="line"><a id="l02266" name="l02266"></a><span class="lineno"> 2266</span> it->second->getFieldU32(sfTransactionIndex) == txnIndex)</div>
|
||||
<div class="line"><a id="l02267" name="l02267"></a><span class="lineno"> 2267</span> <span class="keywordflow">return</span> it->first->getTransactionID();</div>
|
||||
<div class="line"><a id="l02268" name="l02268"></a><span class="lineno"> 2268</span> </div>
|
||||
<div class="line"><a id="l02269" name="l02269"></a><span class="lineno"> 2269</span> <span class="keywordflow">return</span> {};</div>
|
||||
<div class="line"><a id="l02270" name="l02270"></a><span class="lineno"> 2270</span>}</div>
|
||||
<div class="line"><a id="l02271" name="l02271"></a><span class="lineno"> 2271</span> </div>
|
||||
<div class="line"><a id="l02272" name="l02272"></a><span class="lineno"> 2272</span>} <span class="comment">// namespace ripple</span></div>
|
||||
<div class="line"><a id="l02164" name="l02164"></a><span class="lineno"> 2164</span> peer->charge(</div>
|
||||
<div class="line"><a id="l02165" name="l02165"></a><span class="lineno"> 2165</span> <a class="code hl_variable" href="namespaceripple_1_1Resource.html#a79b0f414dccfcd34031b08b68b671d9e">Resource::feeRequestNoReply</a>, <span class="stringliteral">"get_object ledger no parent"</span>);</div>
|
||||
<div class="line"><a id="l02166" name="l02166"></a><span class="lineno"> 2166</span> <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a id="l02167" name="l02167"></a><span class="lineno"> 2167</span> }</div>
|
||||
<div class="line"><a id="l02168" name="l02168"></a><span class="lineno"> 2168</span> </div>
|
||||
<div class="line"><a id="l02169" name="l02169"></a><span class="lineno"> 2169</span> <span class="keywordflow">try</span></div>
|
||||
<div class="line"><a id="l02170" name="l02170"></a><span class="lineno"> 2170</span> {</div>
|
||||
<div class="line"><a id="l02171" name="l02171"></a><span class="lineno"> 2171</span> <a class="code hl_class" href="classripple_1_1Serializer.html">Serializer</a> hdr(128);</div>
|
||||
<div class="line"><a id="l02172" name="l02172"></a><span class="lineno"> 2172</span> </div>
|
||||
<div class="line"><a id="l02173" name="l02173"></a><span class="lineno"> 2173</span> protocol::TMGetObjectByHash reply;</div>
|
||||
<div class="line"><a id="l02174" name="l02174"></a><span class="lineno"> 2174</span> reply.set_query(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a id="l02175" name="l02175"></a><span class="lineno"> 2175</span> </div>
|
||||
<div class="line"><a id="l02176" name="l02176"></a><span class="lineno"> 2176</span> <span class="keywordflow">if</span> (request->has_seq())</div>
|
||||
<div class="line"><a id="l02177" name="l02177"></a><span class="lineno"> 2177</span> reply.set_seq(request->seq());</div>
|
||||
<div class="line"><a id="l02178" name="l02178"></a><span class="lineno"> 2178</span> </div>
|
||||
<div class="line"><a id="l02179" name="l02179"></a><span class="lineno"> 2179</span> reply.set_ledgerhash(request->ledgerhash());</div>
|
||||
<div class="line"><a id="l02180" name="l02180"></a><span class="lineno"> 2180</span> reply.set_type(protocol::TMGetObjectByHash::otFETCH_PACK);</div>
|
||||
<div class="line"><a id="l02181" name="l02181"></a><span class="lineno"> 2181</span> </div>
|
||||
<div class="line"><a id="l02182" name="l02182"></a><span class="lineno"> 2182</span> <span class="comment">// Building a fetch pack:</span></div>
|
||||
<div class="line"><a id="l02183" name="l02183"></a><span class="lineno"> 2183</span> <span class="comment">// 1. Add the header for the requested ledger.</span></div>
|
||||
<div class="line"><a id="l02184" name="l02184"></a><span class="lineno"> 2184</span> <span class="comment">// 2. Add the nodes for the AccountStateMap of that ledger.</span></div>
|
||||
<div class="line"><a id="l02185" name="l02185"></a><span class="lineno"> 2185</span> <span class="comment">// 3. If there are transactions, add the nodes for the</span></div>
|
||||
<div class="line"><a id="l02186" name="l02186"></a><span class="lineno"> 2186</span> <span class="comment">// transactions of the ledger.</span></div>
|
||||
<div class="line"><a id="l02187" name="l02187"></a><span class="lineno"> 2187</span> <span class="comment">// 4. If the FetchPack now contains at least 512 entries then stop.</span></div>
|
||||
<div class="line"><a id="l02188" name="l02188"></a><span class="lineno"> 2188</span> <span class="comment">// 5. If not very much time has elapsed, then loop back and repeat</span></div>
|
||||
<div class="line"><a id="l02189" name="l02189"></a><span class="lineno"> 2189</span> <span class="comment">// the same process adding the previous ledger to the FetchPack.</span></div>
|
||||
<div class="line"><a id="l02190" name="l02190"></a><span class="lineno"> 2190</span> <span class="keywordflow">do</span></div>
|
||||
<div class="line"><a id="l02191" name="l02191"></a><span class="lineno"> 2191</span> {</div>
|
||||
<div class="line"><a id="l02192" name="l02192"></a><span class="lineno"> 2192</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> lSeq = want->info().seq;</div>
|
||||
<div class="line"><a id="l02193" name="l02193"></a><span class="lineno"> 2193</span> </div>
|
||||
<div class="line"><a id="l02194" name="l02194"></a><span class="lineno"> 2194</span> {</div>
|
||||
<div class="line"><a id="l02195" name="l02195"></a><span class="lineno"> 2195</span> <span class="comment">// Serialize the ledger header:</span></div>
|
||||
<div class="line"><a id="l02196" name="l02196"></a><span class="lineno"> 2196</span> hdr.<a class="code hl_function" href="classripple_1_1Serializer.html#a0b9f56cab2021e47d45e4cd287f4b425">erase</a>();</div>
|
||||
<div class="line"><a id="l02197" name="l02197"></a><span class="lineno"> 2197</span> </div>
|
||||
<div class="line"><a id="l02198" name="l02198"></a><span class="lineno"> 2198</span> hdr.<a class="code hl_function" href="classripple_1_1Serializer.html#a2aeeb12b01b18876187455f7009f5352">add32</a>(<a class="code hl_enumvalue" href="namespaceripple.html#ad5143ceada01141772ae4aab984f94bda7fa2267e9b1bf739a70bb1860ab2a99c">HashPrefix::ledgerMaster</a>);</div>
|
||||
<div class="line"><a id="l02199" name="l02199"></a><span class="lineno"> 2199</span> <a class="code hl_function" href="namespaceripple.html#ad6ef4b359d5387fe20ce3ca7e3a293e7">addRaw</a>(want->info(), hdr);</div>
|
||||
<div class="line"><a id="l02200" name="l02200"></a><span class="lineno"> 2200</span> </div>
|
||||
<div class="line"><a id="l02201" name="l02201"></a><span class="lineno"> 2201</span> <span class="comment">// Add the data</span></div>
|
||||
<div class="line"><a id="l02202" name="l02202"></a><span class="lineno"> 2202</span> protocol::TMIndexedObject* obj = reply.add_objects();</div>
|
||||
<div class="line"><a id="l02203" name="l02203"></a><span class="lineno"> 2203</span> obj->set_hash(</div>
|
||||
<div class="line"><a id="l02204" name="l02204"></a><span class="lineno"> 2204</span> want->info().hash.data(), want->info().hash.size());</div>
|
||||
<div class="line"><a id="l02205" name="l02205"></a><span class="lineno"> 2205</span> obj->set_data(hdr.<a class="code hl_function" href="classripple_1_1Serializer.html#aac36a53e5cb746cbb9b071cebc0251e0">getDataPtr</a>(), hdr.<a class="code hl_function" href="classripple_1_1Serializer.html#aa5c7aa53db0c7c90c6a86dd5144e9255">getLength</a>());</div>
|
||||
<div class="line"><a id="l02206" name="l02206"></a><span class="lineno"> 2206</span> obj->set_ledgerseq(lSeq);</div>
|
||||
<div class="line"><a id="l02207" name="l02207"></a><span class="lineno"> 2207</span> }</div>
|
||||
<div class="line"><a id="l02208" name="l02208"></a><span class="lineno"> 2208</span> </div>
|
||||
<div class="line"><a id="l02209" name="l02209"></a><span class="lineno"> 2209</span> <a class="code hl_function" href="namespaceripple.html#ac15ecd7d76b1ce1c5719a25a7bdeaef4">populateFetchPack</a>(</div>
|
||||
<div class="line"><a id="l02210" name="l02210"></a><span class="lineno"> 2210</span> want->stateMap(), &have->stateMap(), 16384, &reply, lSeq);</div>
|
||||
<div class="line"><a id="l02211" name="l02211"></a><span class="lineno"> 2211</span> </div>
|
||||
<div class="line"><a id="l02212" name="l02212"></a><span class="lineno"> 2212</span> <span class="comment">// We use nullptr here because transaction maps are per ledger</span></div>
|
||||
<div class="line"><a id="l02213" name="l02213"></a><span class="lineno"> 2213</span> <span class="comment">// and so the requestor is unlikely to already have it.</span></div>
|
||||
<div class="line"><a id="l02214" name="l02214"></a><span class="lineno"> 2214</span> <span class="keywordflow">if</span> (want->info().txHash.isNonZero())</div>
|
||||
<div class="line"><a id="l02215" name="l02215"></a><span class="lineno"> 2215</span> <a class="code hl_function" href="namespaceripple.html#ac15ecd7d76b1ce1c5719a25a7bdeaef4">populateFetchPack</a>(want->txMap(), <span class="keyword">nullptr</span>, 512, &reply, lSeq);</div>
|
||||
<div class="line"><a id="l02216" name="l02216"></a><span class="lineno"> 2216</span> </div>
|
||||
<div class="line"><a id="l02217" name="l02217"></a><span class="lineno"> 2217</span> <span class="keywordflow">if</span> (reply.objects().size() >= 512)</div>
|
||||
<div class="line"><a id="l02218" name="l02218"></a><span class="lineno"> 2218</span> <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><a id="l02219" name="l02219"></a><span class="lineno"> 2219</span> </div>
|
||||
<div class="line"><a id="l02220" name="l02220"></a><span class="lineno"> 2220</span> have = std::move(want);</div>
|
||||
<div class="line"><a id="l02221" name="l02221"></a><span class="lineno"> 2221</span> want = <a class="code hl_function" href="classripple_1_1LedgerMaster.html#ae766ee72c3e4825d6c59be59f64c73c4">getLedgerByHash</a>(have->info().parentHash);</div>
|
||||
<div class="line"><a id="l02222" name="l02222"></a><span class="lineno"> 2222</span> } <span class="keywordflow">while</span> (want && <a class="code hl_function" href="classripple_1_1UptimeClock.html#ae854244a4dcf8de363337e93d5a04444">UptimeClock::now</a>() <= uptime + 1s);</div>
|
||||
<div class="line"><a id="l02223" name="l02223"></a><span class="lineno"> 2223</span> </div>
|
||||
<div class="line"><a id="l02224" name="l02224"></a><span class="lineno"> 2224</span> <span class="keyword">auto</span> msg = std::make_shared<Message>(reply, protocol::mtGET_OBJECTS);</div>
|
||||
<div class="line"><a id="l02225" name="l02225"></a><span class="lineno"> 2225</span> </div>
|
||||
<div class="line"><a id="l02226" name="l02226"></a><span class="lineno"> 2226</span> JLOG(<a class="code hl_variable" href="classripple_1_1LedgerMaster.html#a7621d03781287445cfabcb91046f141d">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>())</div>
|
||||
<div class="line"><a id="l02227" name="l02227"></a><span class="lineno"> 2227</span> << <span class="stringliteral">"Built fetch pack with "</span> << reply.objects().size() << <span class="stringliteral">" nodes ("</span></div>
|
||||
<div class="line"><a id="l02228" name="l02228"></a><span class="lineno"> 2228</span> << msg->getBufferSize() << <span class="stringliteral">" bytes)"</span>;</div>
|
||||
<div class="line"><a id="l02229" name="l02229"></a><span class="lineno"> 2229</span> </div>
|
||||
<div class="line"><a id="l02230" name="l02230"></a><span class="lineno"> 2230</span> peer->send(msg);</div>
|
||||
<div class="line"><a id="l02231" name="l02231"></a><span class="lineno"> 2231</span> }</div>
|
||||
<div class="line"><a id="l02232" name="l02232"></a><span class="lineno"> 2232</span> <span class="keywordflow">catch</span> (<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a> <span class="keyword">const</span>& ex)</div>
|
||||
<div class="line"><a id="l02233" name="l02233"></a><span class="lineno"> 2233</span> {</div>
|
||||
<div class="line"><a id="l02234" name="l02234"></a><span class="lineno"> 2234</span> JLOG(<a class="code hl_variable" href="classripple_1_1LedgerMaster.html#a7621d03781287445cfabcb91046f141d">m_journal</a>.<a class="code hl_function" href="classbeast_1_1Journal.html#ad8fefe3e8ad583e1ed1bf02094ac3d8f">warn</a>())</div>
|
||||
<div class="line"><a id="l02235" name="l02235"></a><span class="lineno"> 2235</span> << <span class="stringliteral">"Exception building fetch pach. Exception: "</span> << ex.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/error/exception/what.html">what</a>();</div>
|
||||
<div class="line"><a id="l02236" name="l02236"></a><span class="lineno"> 2236</span> }</div>
|
||||
<div class="line"><a id="l02237" name="l02237"></a><span class="lineno"> 2237</span>}</div>
|
||||
<div class="line"><a id="l02238" name="l02238"></a><span class="lineno"> 2238</span> </div>
|
||||
<div class="line"><a id="l02239" name="l02239"></a><span class="lineno"> 2239</span><a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div>
|
||||
<div class="line"><a id="l02240" name="l02240"></a><span class="lineno"><a class="line" href="classripple_1_1LedgerMaster.html#aa14798637526012a9725f62488e86e58"> 2240</a></span><a class="code hl_function" href="classripple_1_1LedgerMaster.html#aa14798637526012a9725f62488e86e58">LedgerMaster::getFetchPackCacheSize</a>()<span class="keyword"> const</span></div>
|
||||
<div class="line"><a id="l02241" name="l02241"></a><span class="lineno"> 2241</span><span class="keyword"></span>{</div>
|
||||
<div class="line"><a id="l02242" name="l02242"></a><span class="lineno"> 2242</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classripple_1_1LedgerMaster.html#a657cc607c2fbd75e529fba30b1fab3f5">fetch_packs_</a>.getCacheSize();</div>
|
||||
<div class="line"><a id="l02243" name="l02243"></a><span class="lineno"> 2243</span>}</div>
|
||||
<div class="line"><a id="l02244" name="l02244"></a><span class="lineno"> 2244</span> </div>
|
||||
<div class="line"><a id="l02245" name="l02245"></a><span class="lineno"> 2245</span><span class="comment">// Returns the minimum ledger sequence in SQL database, if any.</span></div>
|
||||
<div class="line"><a id="l02246" name="l02246"></a><span class="lineno"> 2246</span><a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<LedgerIndex></a></div>
|
||||
<div class="line"><a id="l02247" name="l02247"></a><span class="lineno"><a class="line" href="classripple_1_1LedgerMaster.html#a85ab10f185f8e05e7dbd76f6a8df25f5"> 2247</a></span><a class="code hl_function" href="classripple_1_1LedgerMaster.html#a85ab10f185f8e05e7dbd76f6a8df25f5">LedgerMaster::minSqlSeq</a>()</div>
|
||||
<div class="line"><a id="l02248" name="l02248"></a><span class="lineno"> 2248</span>{</div>
|
||||
<div class="line"><a id="l02249" name="l02249"></a><span class="lineno"> 2249</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classripple_1_1LedgerMaster.html#a262ba48a2919950db79ae9434018b450">app_</a>.<a class="code hl_function" href="classripple_1_1Application.html#ab0e839b597cf03221a393cb754ec4e25">getRelationalDatabase</a>().<a class="code hl_function" href="classripple_1_1RelationalDatabase.html#acf44d77817b8dab02b31c974817aaa29">getMinLedgerSeq</a>();</div>
|
||||
<div class="line"><a id="l02250" name="l02250"></a><span class="lineno"> 2250</span>}</div>
|
||||
<div class="line"><a id="l02251" name="l02251"></a><span class="lineno"> 2251</span> </div>
|
||||
<div class="line"><a id="l02252" name="l02252"></a><span class="lineno"> 2252</span><a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<uint256></a></div>
|
||||
<div class="line"><a id="l02253" name="l02253"></a><span class="lineno"><a class="line" href="classripple_1_1LedgerMaster.html#a73b0187c85aa6bca492a83f5acfd7d21"> 2253</a></span><a class="code hl_function" href="classripple_1_1LedgerMaster.html#a73b0187c85aa6bca492a83f5acfd7d21">LedgerMaster::txnIdFromIndex</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">uint32_t</a> ledgerSeq, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">uint32_t</a> txnIndex)</div>
|
||||
<div class="line"><a id="l02254" name="l02254"></a><span class="lineno"> 2254</span>{</div>
|
||||
<div class="line"><a id="l02255" name="l02255"></a><span class="lineno"> 2255</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">uint32_t</a> first = 0, last = 0;</div>
|
||||
<div class="line"><a id="l02256" name="l02256"></a><span class="lineno"> 2256</span> </div>
|
||||
<div class="line"><a id="l02257" name="l02257"></a><span class="lineno"> 2257</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="classripple_1_1LedgerMaster.html#a777c77ff2d32f4bd6692f92f5a960471">getValidatedRange</a>(first, last) || last < ledgerSeq)</div>
|
||||
<div class="line"><a id="l02258" name="l02258"></a><span class="lineno"> 2258</span> <span class="keywordflow">return</span> {};</div>
|
||||
<div class="line"><a id="l02259" name="l02259"></a><span class="lineno"> 2259</span> </div>
|
||||
<div class="line"><a id="l02260" name="l02260"></a><span class="lineno"> 2260</span> <span class="keyword">auto</span> <span class="keyword">const</span> lgr = <a class="code hl_function" href="classripple_1_1LedgerMaster.html#ae54f482cc23a2fad32a1d841e6b47e74">getLedgerBySeq</a>(ledgerSeq);</div>
|
||||
<div class="line"><a id="l02261" name="l02261"></a><span class="lineno"> 2261</span> <span class="keywordflow">if</span> (!lgr || lgr->txs.empty())</div>
|
||||
<div class="line"><a id="l02262" name="l02262"></a><span class="lineno"> 2262</span> <span class="keywordflow">return</span> {};</div>
|
||||
<div class="line"><a id="l02263" name="l02263"></a><span class="lineno"> 2263</span> </div>
|
||||
<div class="line"><a id="l02264" name="l02264"></a><span class="lineno"> 2264</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = lgr->txs.begin(); it != lgr->txs.end(); ++it)</div>
|
||||
<div class="line"><a id="l02265" name="l02265"></a><span class="lineno"> 2265</span> <span class="keywordflow">if</span> (it->first && it->second &&</div>
|
||||
<div class="line"><a id="l02266" name="l02266"></a><span class="lineno"> 2266</span> it->second->isFieldPresent(sfTransactionIndex) &&</div>
|
||||
<div class="line"><a id="l02267" name="l02267"></a><span class="lineno"> 2267</span> it->second->getFieldU32(sfTransactionIndex) == txnIndex)</div>
|
||||
<div class="line"><a id="l02268" name="l02268"></a><span class="lineno"> 2268</span> <span class="keywordflow">return</span> it->first->getTransactionID();</div>
|
||||
<div class="line"><a id="l02269" name="l02269"></a><span class="lineno"> 2269</span> </div>
|
||||
<div class="line"><a id="l02270" name="l02270"></a><span class="lineno"> 2270</span> <span class="keywordflow">return</span> {};</div>
|
||||
<div class="line"><a id="l02271" name="l02271"></a><span class="lineno"> 2271</span>}</div>
|
||||
<div class="line"><a id="l02272" name="l02272"></a><span class="lineno"> 2272</span> </div>
|
||||
<div class="line"><a id="l02273" name="l02273"></a><span class="lineno"> 2273</span>} <span class="comment">// namespace ripple</span></div>
|
||||
<div class="ttc" id="aalgorithm_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/algorithm.html">algorithm</a></div></div>
|
||||
<div class="ttc" id="aback_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/back.html">std::vector::back</a></div><div class="ttdeci">T back(T... args)</div></div>
|
||||
<div class="ttc" id="aback_inserter_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/iterator/back_inserter.html">std::back_inserter</a></div><div class="ttdeci">T back_inserter(T... args)</div></div>
|
||||
@@ -2429,13 +2430,13 @@ $(function() {
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a6e70b1320b512bce863a8672be1e3b7d"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a6e70b1320b512bce863a8672be1e3b7d">ripple::LedgerMaster::isCaughtUp</a></div><div class="ttdeci">bool isCaughtUp(std::string &reason)</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l00219">LedgerMaster.cpp:219</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a721752bec7f20bf5ebb1238fb7bbc435"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a721752bec7f20bf5ebb1238fb7bbc435">ripple::LedgerMaster::setPubLedger</a></div><div class="ttdeci">void setPubLedger(std::shared_ptr< Ledger const > const &l)</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l00327">LedgerMaster.cpp:327</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a7298495cf840485b7dadfa71b33906c6"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a7298495cf840485b7dadfa71b33906c6">ripple::LedgerMaster::newPFWork</a></div><div class="ttdeci">bool newPFWork(const char *name, std::unique_lock< std::recursive_mutex > &)</div><div class="ttdoc">A thread needs to be dispatched to handle pathfinding work of some kind.</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l01540">LedgerMaster.cpp:1540</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a73b0187c85aa6bca492a83f5acfd7d21"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a73b0187c85aa6bca492a83f5acfd7d21">ripple::LedgerMaster::txnIdFromIndex</a></div><div class="ttdeci">std::optional< uint256 > txnIdFromIndex(uint32_t ledgerSeq, uint32_t txnIndex)</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l02252">LedgerMaster.cpp:2252</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a73b0187c85aa6bca492a83f5acfd7d21"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a73b0187c85aa6bca492a83f5acfd7d21">ripple::LedgerMaster::txnIdFromIndex</a></div><div class="ttdeci">std::optional< uint256 > txnIdFromIndex(uint32_t ledgerSeq, uint32_t txnIndex)</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l02253">LedgerMaster.cpp:2253</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a7621d03781287445cfabcb91046f141d"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a7621d03781287445cfabcb91046f141d">ripple::LedgerMaster::m_journal</a></div><div class="ttdeci">beast::Journal m_journal</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8h_source.html#l00319">LedgerMaster.h:319</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a777c77ff2d32f4bd6692f92f5a960471"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a777c77ff2d32f4bd6692f92f5a960471">ripple::LedgerMaster::getValidatedRange</a></div><div class="ttdeci">bool getValidatedRange(std::uint32_t &minVal, std::uint32_t &maxVal)</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l00586">LedgerMaster.cpp:586</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a79feb7167d74a61f8cb1e273cb71b8c6"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a79feb7167d74a61f8cb1e273cb71b8c6">ripple::LedgerMaster::clearLedger</a></div><div class="ttdeci">void clearLedger(std::uint32_t seq)</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l00504">LedgerMaster.cpp:504</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a7d864cf43509dbfd7bd892c9894969a5"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a7d864cf43509dbfd7bd892c9894969a5">ripple::LedgerMaster::mLastValidLedger</a></div><div class="ttdeci">std::pair< uint256, LedgerIndex > mLastValidLedger</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8h_source.html#l00339">LedgerMaster.h:339</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a837b38dc59d5779fe29018cd948aa407"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a837b38dc59d5779fe29018cd948aa407">ripple::LedgerMaster::getClosedLedger</a></div><div class="ttdeci">std::shared_ptr< Ledger const > getClosedLedger()</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8h_source.html#l00080">LedgerMaster.h:80</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a85ab10f185f8e05e7dbd76f6a8df25f5"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a85ab10f185f8e05e7dbd76f6a8df25f5">ripple::LedgerMaster::minSqlSeq</a></div><div class="ttdeci">std::optional< LedgerIndex > minSqlSeq()</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l02246">LedgerMaster.cpp:2246</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a85ab10f185f8e05e7dbd76f6a8df25f5"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a85ab10f185f8e05e7dbd76f6a8df25f5">ripple::LedgerMaster::minSqlSeq</a></div><div class="ttdeci">std::optional< LedgerIndex > minSqlSeq()</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l02247">LedgerMaster.cpp:2247</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a871c2f482c5d16d602a21f6ab9d85b48"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a871c2f482c5d16d602a21f6ab9d85b48">ripple::LedgerMaster::mFillInProgress</a></div><div class="ttdeci">int mFillInProgress</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8h_source.html#l00356">LedgerMaster.h:356</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a877e0fe2e956eccfe910101bf4143950"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a877e0fe2e956eccfe910101bf4143950">ripple::LedgerMaster::setFullLedger</a></div><div class="ttdeci">void setFullLedger(std::shared_ptr< Ledger const > const &ledger, bool isSynchronous, bool isCurrent)</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l00816">LedgerMaster.cpp:816</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a89cbd9daab502b8d03f5aa22e7c39f7e"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a89cbd9daab502b8d03f5aa22e7c39f7e">ripple::LedgerMaster::LedgerMaster</a></div><div class="ttdeci">LedgerMaster(Application &app, Stopwatch &stopwatch, beast::insight::Collector::ptr const &collector, beast::Journal journal)</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l00103">LedgerMaster.cpp:103</a></div></div>
|
||||
@@ -2448,7 +2449,7 @@ $(function() {
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a99311904e2e5203c8715463e261c9fe7"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a99311904e2e5203c8715463e261c9fe7">ripple::LedgerMaster::mCompleteLock</a></div><div class="ttdeci">std::recursive_mutex mCompleteLock</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8h_source.html#l00348">LedgerMaster.h:348</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a9bc0c25137a8ebce4ccef779a0b37665"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a9bc0c25137a8ebce4ccef779a0b37665">ripple::LedgerMaster::getCompleteLedgers</a></div><div class="ttdeci">std::string getCompleteLedgers()</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l01603">LedgerMaster.cpp:1603</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a9fdca40ce43865b5ee842395cdf0b7b0"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a9fdca40ce43865b5ee842395cdf0b7b0">ripple::LedgerMaster::mValidLedgerSeq</a></div><div class="ttdeci">std::atomic< LedgerIndex > mValidLedgerSeq</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8h_source.html#l00367">LedgerMaster.h:367</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_aa14798637526012a9725f62488e86e58"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#aa14798637526012a9725f62488e86e58">ripple::LedgerMaster::getFetchPackCacheSize</a></div><div class="ttdeci">std::size_t getFetchPackCacheSize() const</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l02239">LedgerMaster.cpp:2239</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_aa14798637526012a9725f62488e86e58"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#aa14798637526012a9725f62488e86e58">ripple::LedgerMaster::getFetchPackCacheSize</a></div><div class="ttdeci">std::size_t getFetchPackCacheSize() const</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l02240">LedgerMaster.cpp:2240</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_aa15ee23de914287001e731bada1e1237"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#aa15ee23de914287001e731bada1e1237">ripple::LedgerMaster::getFullValidatedRange</a></div><div class="ttdeci">bool getFullValidatedRange(std::uint32_t &minVal, std::uint32_t &maxVal)</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l00559">LedgerMaster.cpp:559</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_aa65154f38461c13e79695d7d6c7fa4c9"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#aa65154f38461c13e79695d7d6c7fa4c9">ripple::LedgerMaster::getFetchPack</a></div><div class="ttdeci">std::optional< Blob > getFetchPack(uint256 const &hash) override</div><div class="ttdoc">Retrieves partial ledger data of the coresponding hash from peers.</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l02025">LedgerMaster.cpp:2025</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_aaa32ab558f1d6f813a5bb8ed2e4829a1"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#aaa32ab558f1d6f813a5bb8ed2e4829a1">ripple::LedgerMaster::gotFetchPack</a></div><div class="ttdeci">void gotFetchPack(bool progress, std::uint32_t seq)</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l02038">LedgerMaster.cpp:2038</a></div></div>
|
||||
@@ -2566,7 +2567,7 @@ $(function() {
|
||||
<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="anamespaceripple_1_1BuildInfo_html_a5883781365410de620622c6a2b1b81d5"><div class="ttname"><a href="namespaceripple_1_1BuildInfo.html#a5883781365410de620622c6a2b1b81d5">ripple::BuildInfo::isNewerVersion</a></div><div class="ttdeci">bool isNewerVersion(std::uint64_t version)</div><div class="ttdoc">Check if the version is newer than the local node's rippled software version.</div><div class="ttdef"><b>Definition:</b> <a href="BuildInfo_8cpp_source.html#l00169">BuildInfo.cpp:169</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_1_1BuildInfo_html_a78c52e19009a32c3d05a43c59f864bd3"><div class="ttname"><a href="namespaceripple_1_1BuildInfo.html#a78c52e19009a32c3d05a43c59f864bd3">ripple::BuildInfo::isRippledVersion</a></div><div class="ttdeci">bool isRippledVersion(std::uint64_t version)</div><div class="ttdoc">Check if the encoded software version is a rippled software version.</div><div class="ttdef"><b>Definition:</b> <a href="BuildInfo_8cpp_source.html#l00162">BuildInfo.cpp:162</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_1_1Resource_html_a261bec897e7b0c7c198bad1e37d87458"><div class="ttname"><a href="namespaceripple_1_1Resource.html#a261bec897e7b0c7c198bad1e37d87458">ripple::Resource::feeInvalidRequest</a></div><div class="ttdeci">Charge const feeInvalidRequest</div><div class="ttdoc">Schedule of fees charged for imposing load on the server.</div></div>
|
||||
<div class="ttc" id="anamespaceripple_1_1Resource_html_a0b2a0218d1e64ae67ac02712b613a936"><div class="ttname"><a href="namespaceripple_1_1Resource.html#a0b2a0218d1e64ae67ac02712b613a936">ripple::Resource::feeMalformedRequest</a></div><div class="ttdeci">Charge const feeMalformedRequest</div><div class="ttdoc">Schedule of fees charged for imposing load on the server.</div></div>
|
||||
<div class="ttc" id="anamespaceripple_1_1Resource_html_a79b0f414dccfcd34031b08b68b671d9e"><div class="ttname"><a href="namespaceripple_1_1Resource.html#a79b0f414dccfcd34031b08b68b671d9e">ripple::Resource::feeRequestNoReply</a></div><div class="ttdeci">Charge const feeRequestNoReply</div></div>
|
||||
<div class="ttc" id="anamespaceripple_1_1credentials_html_abd2ed437891b9bd542d2afc3f5f4bc58"><div class="ttname"><a href="namespaceripple_1_1credentials.html#abd2ed437891b9bd542d2afc3f5f4bc58">ripple::credentials::valid</a></div><div class="ttdeci">TER valid(PreclaimContext const &ctx, AccountID const &src)</div><div class="ttdef"><b>Definition:</b> <a href="CredentialHelpers_8cpp_source.html#l00152">CredentialHelpers.cpp:152</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html"><div class="ttname"><a href="namespaceripple.html">ripple</a></div><div class="ttdoc">Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.</div><div class="ttdef"><b>Definition:</b> <a href="algorithm_8h_source.html#l00026">algorithm.h:26</a></div></div>
|
||||
|
||||
Reference in New Issue
Block a user