This commit is contained in:
bthomee
2025-08-05 17:13:37 +00:00
parent f4b9019010
commit 36b5821405
3 changed files with 336 additions and 253 deletions

View File

@@ -287,105 +287,127 @@ $(function() {
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span>{</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="keyword">auto</span> <span class="keyword">const</span> oracleID = <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">keylet::oracle</a>(<a class="code hl_variable" href="classripple_1_1Transactor.html#a803c6fba463ed92ee24e4c056467f20a">account_</a>, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>[sfOracleDocumentID]);</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> </div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> sle = <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_function" href="classripple_1_1ApplyContext.html#a44c249b16b2cedb1224a96592407558d">view</a>().<a class="code hl_function" href="classripple_1_1ApplyView.html#afa666aaa8eb0080d96f910f8a719291d">peek</a>(oracleID))</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> {</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="comment">// update</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="comment">// the token pair that doesn&#39;t have their price updated will not</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="comment">// include neither price nor scale in the updated PriceDataSeries</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> </div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/map.html">std::map&lt;std::pair&lt;Currency, Currency&gt;</a>, <a class="code hl_class" href="classripple_1_1STObject.html">STObject</a>&gt; pairs;</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="comment">// collect current token pairs</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; entry : sle-&gt;getFieldArray(sfPriceDataSeries))</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> {</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <a class="code hl_class" href="classripple_1_1STObject.html">STObject</a> priceData{sfPriceData};</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <a class="code hl_function" href="namespaceripple.html#a047ba5ce701883dcdc9c04dbe50e53ff">setPriceDataInnerObjTemplate</a>(priceData);</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> priceData.setFieldCurrency(</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> sfBaseAsset, entry.getFieldCurrency(sfBaseAsset));</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> priceData.setFieldCurrency(</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> sfQuoteAsset, entry.getFieldCurrency(sfQuoteAsset));</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/emplace.html">emplace</a>(<a class="code hl_function" href="namespaceripple.html#a5dd1aee6bf19281adb5e399002e74271">tokenPairKey</a>(entry), std::move(priceData));</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> }</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="keyword">auto</span> <span class="keyword">const</span> oldCount = pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/size.html">size</a>() &gt; 5 ? 2 : 1;</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="comment">// update/add/delete pairs</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; entry : <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code hl_function" href="classripple_1_1STObject.html#a0fced814291f20736a0b1b50716ffb48">getFieldArray</a>(sfPriceDataSeries))</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> {</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keyword">auto</span> <span class="keyword">const</span> key = <a class="code hl_function" href="namespaceripple.html#a5dd1aee6bf19281adb5e399002e74271">tokenPairKey</a>(entry);</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="keywordflow">if</span> (!entry.isFieldPresent(sfAssetPrice))</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> {</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="comment">// delete token pair</span></div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/erase.html">erase</a>(key);</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> }</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> iter = pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/find.html">find</a>(key); iter != pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/end.html">end</a>())</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> {</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="comment">// update the price</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> iter-&gt;second.setFieldU64(</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> sfAssetPrice, entry.getFieldU64(sfAssetPrice));</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keywordflow">if</span> (entry.isFieldPresent(sfScale))</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> iter-&gt;second.setFieldU8(sfScale, entry.getFieldU8(sfScale));</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> }</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> {</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> <span class="comment">// add a token pair with the price</span></div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <a class="code hl_class" href="classripple_1_1STObject.html">STObject</a> priceData{sfPriceData};</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <a class="code hl_function" href="namespaceripple.html#a047ba5ce701883dcdc9c04dbe50e53ff">setPriceDataInnerObjTemplate</a>(priceData);</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> priceData.setFieldCurrency(</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> sfBaseAsset, entry.getFieldCurrency(sfBaseAsset));</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> priceData.setFieldCurrency(</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> sfQuoteAsset, entry.getFieldCurrency(sfQuoteAsset));</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> priceData.setFieldU64(</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> sfAssetPrice, entry.getFieldU64(sfAssetPrice));</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <span class="keywordflow">if</span> (entry.isFieldPresent(sfScale))</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> priceData.setFieldU8(sfScale, entry.getFieldU8(sfScale));</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/emplace.html">emplace</a>(key, std::move(priceData));</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> }</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> }</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <a class="code hl_class" href="classripple_1_1STArray.html">STArray</a> updatedSeries;</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; iter : pairs)</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> updatedSeries.<a class="code hl_function" href="classripple_1_1STArray.html#adc3dc750320964c46b6d4ea2af8b8bc7">push_back</a>(std::move(iter.second));</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> sle-&gt;setFieldArray(sfPriceDataSeries, updatedSeries);</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code hl_function" href="classripple_1_1STObject.html#aaf5d617701ac3afc4ad6a13862459692">isFieldPresent</a>(sfURI))</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> sle-&gt;setFieldVL(sfURI, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>[sfURI]);</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> sle-&gt;setFieldU32(sfLastUpdateTime, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>[sfLastUpdateTime]);</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> </div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keyword">auto</span> <span class="keyword">const</span> newCount = pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/size.html">size</a>() &gt; 5 ? 2 : 1;</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="keyword">auto</span> <span class="keyword">const</span> adjust = newCount - oldCount;</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keywordflow">if</span> (adjust != 0 &amp;&amp; !<a class="code hl_function" href="namespaceripple.html#a868a93d3fbb97e3ba20ba054df1db3ca">adjustOwnerCount</a>(<a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>, adjust))</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ad035d214edc31c72362d7efbdaba234c">tefINTERNAL</a>; <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> </div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_function" href="classripple_1_1ApplyContext.html#a44c249b16b2cedb1224a96592407558d">view</a>().<a class="code hl_function" href="classripple_1_1ApplyView.html#a542437b9b59a623e755979acdc075af5">update</a>(sle);</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> }</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> {</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="comment">// create</span></div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> </div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> sle = std::make_shared&lt;SLE&gt;(oracleID);</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> sle-&gt;setAccountID(sfOwner, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code hl_function" href="classripple_1_1STObject.html#a0d2d874d34a1c3ed432cdb9fb1386b35">getAccountID</a>(sfAccount));</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> sle-&gt;setFieldVL(sfProvider, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>[sfProvider]);</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code hl_function" href="classripple_1_1STObject.html#aaf5d617701ac3afc4ad6a13862459692">isFieldPresent</a>(sfURI))</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> sle-&gt;setFieldVL(sfURI, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>[sfURI]);</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <span class="keyword">auto</span> <span class="keyword">const</span>&amp; series = <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code hl_function" href="classripple_1_1STObject.html#a0fced814291f20736a0b1b50716ffb48">getFieldArray</a>(sfPriceDataSeries);</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> sle-&gt;setFieldArray(sfPriceDataSeries, series);</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> sle-&gt;setFieldVL(sfAssetClass, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>[sfAssetClass]);</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> sle-&gt;setFieldU32(sfLastUpdateTime, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>[sfLastUpdateTime]);</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> </div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <span class="keyword">auto</span> page = <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_function" href="classripple_1_1ApplyContext.html#a44c249b16b2cedb1224a96592407558d">view</a>().<a class="code hl_function" href="classripple_1_1ApplyView.html#ae21b78e549dc6188382bd49e7d77d473">dirInsert</a>(</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#acd4d51d467fc6e75745baf179a7965ef">keylet::ownerDir</a>(<a class="code hl_variable" href="classripple_1_1Transactor.html#a803c6fba463ed92ee24e4c056467f20a">account_</a>), sle-&gt;<a class="code hl_variable" href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">key</a>(), <a class="code hl_function" href="namespaceripple.html#a5b498122d9b8c1acbeb9fe459faac22b">describeOwnerDir</a>(<a class="code hl_variable" href="classripple_1_1Transactor.html#a803c6fba463ed92ee24e4c056467f20a">account_</a>));</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> <span class="keywordflow">if</span> (!page)</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca4f19fdbc12c26412215f3477f70d5feb">tecDIR_FULL</a>; <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> </div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> (*sle)[sfOwnerNode] = *page;</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> </div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> <span class="keyword">auto</span> <span class="keyword">const</span> count = series.size() &gt; 5 ? 2 : 1;</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="namespaceripple.html#a868a93d3fbb97e3ba20ba054df1db3ca">adjustOwnerCount</a>(<a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>, count))</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ad035d214edc31c72362d7efbdaba234c">tefINTERNAL</a>; <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> </div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_function" href="classripple_1_1ApplyContext.html#a44c249b16b2cedb1224a96592407558d">view</a>().<a class="code hl_function" href="classripple_1_1ApplyView.html#aa3c5b5cd9dca5f906be4b36640706e3c">insert</a>(sle);</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> }</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> </div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>;</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span>}</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> </div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span>} <span class="comment">// namespace ripple</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keyword">auto</span> populatePriceData = [](<a class="code hl_class" href="classripple_1_1STObject.html">STObject</a>&amp; priceData, <a class="code hl_class" href="classripple_1_1STObject.html">STObject</a> <span class="keyword">const</span>&amp; entry) {</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <a class="code hl_function" href="namespaceripple.html#a047ba5ce701883dcdc9c04dbe50e53ff">setPriceDataInnerObjTemplate</a>(priceData);</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> priceData.<a class="code hl_function" href="classripple_1_1STObject.html#a168b1d0bbaa91de55bc518f68d4cf6f3">setFieldCurrency</a>(</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> sfBaseAsset, entry.getFieldCurrency(sfBaseAsset));</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> priceData.<a class="code hl_function" href="classripple_1_1STObject.html#a168b1d0bbaa91de55bc518f68d4cf6f3">setFieldCurrency</a>(</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> sfQuoteAsset, entry.getFieldCurrency(sfQuoteAsset));</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> priceData.<a class="code hl_function" href="classripple_1_1STObject.html#ac0e2e3ed7f92a9f21aed2eda6d1ea5c6">setFieldU64</a>(sfAssetPrice, entry.getFieldU64(sfAssetPrice));</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="keywordflow">if</span> (entry.isFieldPresent(sfScale))</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> priceData.<a class="code hl_function" href="classripple_1_1STObject.html#a6e622971f60d53b4a053065477264181">setFieldU8</a>(sfScale, entry.getFieldU8(sfScale));</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> };</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> </div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> sle = <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_function" href="classripple_1_1ApplyContext.html#a44c249b16b2cedb1224a96592407558d">view</a>().<a class="code hl_function" href="classripple_1_1ApplyView.html#afa666aaa8eb0080d96f910f8a719291d">peek</a>(oracleID))</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> {</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="comment">// update</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="comment">// the token pair that doesn&#39;t have their price updated will not</span></div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="comment">// include neither price nor scale in the updated PriceDataSeries</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> </div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/map.html">std::map&lt;std::pair&lt;Currency, Currency&gt;</a>, <a class="code hl_class" href="classripple_1_1STObject.html">STObject</a>&gt; pairs;</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="comment">// collect current token pairs</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; entry : sle-&gt;getFieldArray(sfPriceDataSeries))</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> {</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <a class="code hl_class" href="classripple_1_1STObject.html">STObject</a> priceData{sfPriceData};</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <a class="code hl_function" href="namespaceripple.html#a047ba5ce701883dcdc9c04dbe50e53ff">setPriceDataInnerObjTemplate</a>(priceData);</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> priceData.<a class="code hl_function" href="classripple_1_1STObject.html#a168b1d0bbaa91de55bc518f68d4cf6f3">setFieldCurrency</a>(</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> sfBaseAsset, entry.getFieldCurrency(sfBaseAsset));</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> priceData.<a class="code hl_function" href="classripple_1_1STObject.html#a168b1d0bbaa91de55bc518f68d4cf6f3">setFieldCurrency</a>(</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> sfQuoteAsset, entry.getFieldCurrency(sfQuoteAsset));</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/emplace.html">emplace</a>(<a class="code hl_function" href="namespaceripple.html#a5dd1aee6bf19281adb5e399002e74271">tokenPairKey</a>(entry), std::move(priceData));</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> }</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keyword">auto</span> <span class="keyword">const</span> oldCount = pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/size.html">size</a>() &gt; 5 ? 2 : 1;</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="comment">// update/add/delete pairs</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; entry : <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code hl_function" href="classripple_1_1STObject.html#a0fced814291f20736a0b1b50716ffb48">getFieldArray</a>(sfPriceDataSeries))</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> {</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keyword">auto</span> <span class="keyword">const</span> key = <a class="code hl_function" href="namespaceripple.html#a5dd1aee6bf19281adb5e399002e74271">tokenPairKey</a>(entry);</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <span class="keywordflow">if</span> (!entry.isFieldPresent(sfAssetPrice))</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> {</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="comment">// delete token pair</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/erase.html">erase</a>(key);</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> }</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> iter = pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/find.html">find</a>(key); iter != pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/end.html">end</a>())</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> {</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="comment">// update the price</span></div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> iter-&gt;second.setFieldU64(</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> sfAssetPrice, entry.getFieldU64(sfAssetPrice));</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="keywordflow">if</span> (entry.isFieldPresent(sfScale))</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> iter-&gt;second.setFieldU8(sfScale, entry.getFieldU8(sfScale));</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> }</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> {</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="comment">// add a token pair with the price</span></div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <a class="code hl_class" href="classripple_1_1STObject.html">STObject</a> priceData{sfPriceData};</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> populatePriceData(priceData, entry);</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/emplace.html">emplace</a>(key, std::move(priceData));</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> }</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> }</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <a class="code hl_class" href="classripple_1_1STArray.html">STArray</a> updatedSeries;</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; iter : pairs)</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> updatedSeries.<a class="code hl_function" href="classripple_1_1STArray.html#adc3dc750320964c46b6d4ea2af8b8bc7">push_back</a>(std::move(iter.second));</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> sle-&gt;setFieldArray(sfPriceDataSeries, updatedSeries);</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code hl_function" href="classripple_1_1STObject.html#aaf5d617701ac3afc4ad6a13862459692">isFieldPresent</a>(sfURI))</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> sle-&gt;setFieldVL(sfURI, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>[sfURI]);</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> sle-&gt;setFieldU32(sfLastUpdateTime, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>[sfLastUpdateTime]);</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> </div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keyword">auto</span> <span class="keyword">const</span> newCount = pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/size.html">size</a>() &gt; 5 ? 2 : 1;</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="keyword">auto</span> <span class="keyword">const</span> adjust = newCount - oldCount;</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <span class="keywordflow">if</span> (adjust != 0 &amp;&amp; !<a class="code hl_function" href="namespaceripple.html#a868a93d3fbb97e3ba20ba054df1db3ca">adjustOwnerCount</a>(<a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>, adjust))</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ad035d214edc31c72362d7efbdaba234c">tefINTERNAL</a>; <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> </div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_function" href="classripple_1_1ApplyContext.html#a44c249b16b2cedb1224a96592407558d">view</a>().<a class="code hl_function" href="classripple_1_1ApplyView.html#a542437b9b59a623e755979acdc075af5">update</a>(sle);</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> }</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> {</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="comment">// create</span></div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> </div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> sle = std::make_shared&lt;SLE&gt;(oracleID);</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> sle-&gt;setAccountID(sfOwner, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code hl_function" href="classripple_1_1STObject.html#a0d2d874d34a1c3ed432cdb9fb1386b35">getAccountID</a>(sfAccount));</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> sle-&gt;setFieldVL(sfProvider, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>[sfProvider]);</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code hl_function" href="classripple_1_1STObject.html#aaf5d617701ac3afc4ad6a13862459692">isFieldPresent</a>(sfURI))</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> sle-&gt;setFieldVL(sfURI, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>[sfURI]);</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> </div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <a class="code hl_class" href="classripple_1_1STArray.html">STArray</a> series;</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_function" href="classripple_1_1ApplyContext.html#a44c249b16b2cedb1224a96592407558d">view</a>().<a class="code hl_function" href="classripple_1_1ReadView.html#aceb3d74acaae18b238022337e5f250ce">rules</a>().<a class="code hl_function" href="classripple_1_1Rules.html#a1a8388a2b9588aa9446ece92a88e0dd2">enabled</a>(fixPriceOracleOrder))</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> {</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> series = <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code hl_function" href="classripple_1_1STObject.html#a0fced814291f20736a0b1b50716ffb48">getFieldArray</a>(sfPriceDataSeries);</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> }</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> {</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/map.html">std::map&lt;std::pair&lt;Currency, Currency&gt;</a>, <a class="code hl_class" href="classripple_1_1STObject.html">STObject</a>&gt; pairs;</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; entry : <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code hl_function" href="classripple_1_1STObject.html#a0fced814291f20736a0b1b50716ffb48">getFieldArray</a>(sfPriceDataSeries))</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> {</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <span class="keyword">auto</span> <span class="keyword">const</span> key = <a class="code hl_function" href="namespaceripple.html#a5dd1aee6bf19281adb5e399002e74271">tokenPairKey</a>(entry);</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <a class="code hl_class" href="classripple_1_1STObject.html">STObject</a> priceData{sfPriceData};</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> populatePriceData(priceData, entry);</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> pairs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/map/emplace.html">emplace</a>(key, std::move(priceData));</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> }</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>&amp; iter : pairs)</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> series.<a class="code hl_function" href="classripple_1_1STArray.html#adc3dc750320964c46b6d4ea2af8b8bc7">push_back</a>(std::move(iter.second));</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> }</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> </div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> sle-&gt;setFieldArray(sfPriceDataSeries, series);</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> sle-&gt;setFieldVL(sfAssetClass, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>[sfAssetClass]);</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> sle-&gt;setFieldU32(sfLastUpdateTime, <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_variable" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>[sfLastUpdateTime]);</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> </div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <span class="keyword">auto</span> page = <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_function" href="classripple_1_1ApplyContext.html#a44c249b16b2cedb1224a96592407558d">view</a>().<a class="code hl_function" href="classripple_1_1ApplyView.html#ae21b78e549dc6188382bd49e7d77d473">dirInsert</a>(</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#acd4d51d467fc6e75745baf179a7965ef">keylet::ownerDir</a>(<a class="code hl_variable" href="classripple_1_1Transactor.html#a803c6fba463ed92ee24e4c056467f20a">account_</a>), sle-&gt;<a class="code hl_variable" href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">key</a>(), <a class="code hl_function" href="namespaceripple.html#a5b498122d9b8c1acbeb9fe459faac22b">describeOwnerDir</a>(<a class="code hl_variable" href="classripple_1_1Transactor.html#a803c6fba463ed92ee24e4c056467f20a">account_</a>));</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <span class="keywordflow">if</span> (!page)</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca4f19fdbc12c26412215f3477f70d5feb">tecDIR_FULL</a>; <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> </div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> (*sle)[sfOwnerNode] = *page;</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> </div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> <span class="keyword">auto</span> <span class="keyword">const</span> count = series.<a class="code hl_function" href="classripple_1_1STArray.html#afdae4983cf41a2e6c3031d203b79c67b">size</a>() &gt; 5 ? 2 : 1;</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="namespaceripple.html#a868a93d3fbb97e3ba20ba054df1db3ca">adjustOwnerCount</a>(<a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>, count))</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ad035d214edc31c72362d7efbdaba234c">tefINTERNAL</a>; <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> </div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <a class="code hl_variable" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code hl_function" href="classripple_1_1ApplyContext.html#a44c249b16b2cedb1224a96592407558d">view</a>().<a class="code hl_function" href="classripple_1_1ApplyView.html#aa3c5b5cd9dca5f906be4b36640706e3c">insert</a>(sle);</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> }</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> </div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>;</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span>}</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> </div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span>} <span class="comment">// namespace ripple</span></div>
<div class="ttc" id="aclassripple_1_1ApplyContext_html"><div class="ttname"><a href="classripple_1_1ApplyContext.html">ripple::ApplyContext</a></div><div class="ttdoc">State information when applying a tx.</div><div class="ttdef"><b>Definition:</b> <a href="ApplyContext_8h_source.html#l00036">ApplyContext.h:37</a></div></div>
<div class="ttc" id="aclassripple_1_1ApplyContext_html_a44c249b16b2cedb1224a96592407558d"><div class="ttname"><a href="classripple_1_1ApplyContext.html#a44c249b16b2cedb1224a96592407558d">ripple::ApplyContext::view</a></div><div class="ttdeci">ApplyView &amp; view()</div><div class="ttdef"><b>Definition:</b> <a href="ApplyContext_8h_source.html#l00078">ApplyContext.h:78</a></div></div>
<div class="ttc" id="aclassripple_1_1ApplyContext_html_a7b78c8e924babce4d14359970f55ba02"><div class="ttname"><a href="classripple_1_1ApplyContext.html#a7b78c8e924babce4d14359970f55ba02">ripple::ApplyContext::journal</a></div><div class="ttdeci">beast::Journal const journal</div><div class="ttdef"><b>Definition:</b> <a href="ApplyContext_8h_source.html#l00075">ApplyContext.h:75</a></div></div>
@@ -398,17 +420,22 @@ $(function() {
<div class="ttc" id="aclassripple_1_1ReadView_html_a0583a050ea7799ba331f6222a905f304"><div class="ttname"><a href="classripple_1_1ReadView.html#a0583a050ea7799ba331f6222a905f304">ripple::ReadView::read</a></div><div class="ttdeci">virtual std::shared_ptr&lt; SLE const &gt; read(Keylet const &amp;k) const =0</div><div class="ttdoc">Return the state item associated with a key.</div></div>
<div class="ttc" id="aclassripple_1_1ReadView_html_a9944284a00f671a4a9d9e00f9b28b258"><div class="ttname"><a href="classripple_1_1ReadView.html#a9944284a00f671a4a9d9e00f9b28b258">ripple::ReadView::fees</a></div><div class="ttdeci">virtual Fees const &amp; fees() const =0</div><div class="ttdoc">Returns the fees for the base ledger.</div></div>
<div class="ttc" id="aclassripple_1_1ReadView_html_aca9d5e022d68fdd94bf3c8e36a294a96"><div class="ttname"><a href="classripple_1_1ReadView.html#aca9d5e022d68fdd94bf3c8e36a294a96">ripple::ReadView::info</a></div><div class="ttdeci">virtual LedgerInfo const &amp; info() const =0</div><div class="ttdoc">Returns information about the ledger.</div></div>
<div class="ttc" id="aclassripple_1_1ReadView_html_aceb3d74acaae18b238022337e5f250ce"><div class="ttname"><a href="classripple_1_1ReadView.html#aceb3d74acaae18b238022337e5f250ce">ripple::ReadView::rules</a></div><div class="ttdeci">virtual Rules const &amp; rules() const =0</div><div class="ttdoc">Returns the tx processing rules.</div></div>
<div class="ttc" id="aclassripple_1_1Rules_html_a1a8388a2b9588aa9446ece92a88e0dd2"><div class="ttname"><a href="classripple_1_1Rules.html#a1a8388a2b9588aa9446ece92a88e0dd2">ripple::Rules::enabled</a></div><div class="ttdeci">bool enabled(uint256 const &amp;feature) const</div><div class="ttdoc">Returns true if a feature is enabled.</div><div class="ttdef"><b>Definition:</b> <a href="Rules_8cpp_source.html#l00130">Rules.cpp:130</a></div></div>
<div class="ttc" id="aclassripple_1_1SOTemplate_html"><div class="ttname"><a href="classripple_1_1SOTemplate.html">ripple::SOTemplate</a></div><div class="ttdoc">Defines the fields and their attributes within a STObject.</div><div class="ttdef"><b>Definition:</b> <a href="SOTemplate_8h_source.html#l00112">SOTemplate.h:113</a></div></div>
<div class="ttc" id="aclassripple_1_1STArray_html"><div class="ttname"><a href="classripple_1_1STArray.html">ripple::STArray</a></div><div class="ttdef"><b>Definition:</b> <a href="STArray_8h_source.html#l00028">STArray.h:29</a></div></div>
<div class="ttc" id="aclassripple_1_1STArray_html_adc3dc750320964c46b6d4ea2af8b8bc7"><div class="ttname"><a href="classripple_1_1STArray.html#adc3dc750320964c46b6d4ea2af8b8bc7">ripple::STArray::push_back</a></div><div class="ttdeci">void push_back(STObject const &amp;object)</div><div class="ttdef"><b>Definition:</b> <a href="STArray_8h_source.html#l00212">STArray.h:212</a></div></div>
<div class="ttc" id="aclassripple_1_1STArray_html_afdae4983cf41a2e6c3031d203b79c67b"><div class="ttname"><a href="classripple_1_1STArray.html#afdae4983cf41a2e6c3031d203b79c67b">ripple::STArray::size</a></div><div class="ttdeci">size_type size() const</div><div class="ttdef"><b>Definition:</b> <a href="STArray_8h_source.html#l00248">STArray.h:248</a></div></div>
<div class="ttc" id="aclassripple_1_1STCurrency_html_ab71aacd7f6769eae523f4a9a32e1ece1"><div class="ttname"><a href="classripple_1_1STCurrency.html#ab71aacd7f6769eae523f4a9a32e1ece1">ripple::STCurrency::currency</a></div><div class="ttdeci">Currency const &amp; currency() const</div><div class="ttdef"><b>Definition:</b> <a href="STCurrency_8h_source.html#l00089">STCurrency.h:89</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html"><div class="ttname"><a href="classripple_1_1STObject.html">ripple::STObject</a></div><div class="ttdef"><b>Definition:</b> <a href="STObject_8h_source.html#l00056">STObject.h:57</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_a0d2d874d34a1c3ed432cdb9fb1386b35"><div class="ttname"><a href="classripple_1_1STObject.html#a0d2d874d34a1c3ed432cdb9fb1386b35">ripple::STObject::getAccountID</a></div><div class="ttdeci">AccountID getAccountID(SField const &amp;field) const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00651">STObject.cpp:651</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_a0fced814291f20736a0b1b50716ffb48"><div class="ttname"><a href="classripple_1_1STObject.html#a0fced814291f20736a0b1b50716ffb48">ripple::STObject::getFieldArray</a></div><div class="ttdeci">STArray const &amp; getFieldArray(SField const &amp;field) const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00686">STObject.cpp:686</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_a168b1d0bbaa91de55bc518f68d4cf6f3"><div class="ttname"><a href="classripple_1_1STObject.html#a168b1d0bbaa91de55bc518f68d4cf6f3">ripple::STObject::setFieldCurrency</a></div><div class="ttdeci">void setFieldCurrency(SField const &amp;field, STCurrency const &amp;)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00795">STObject.cpp:795</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_a6e622971f60d53b4a053065477264181"><div class="ttname"><a href="classripple_1_1STObject.html#a6e622971f60d53b4a053065477264181">ripple::STObject::setFieldU8</a></div><div class="ttdeci">void setFieldU8(SField const &amp;field, unsigned char)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00729">STObject.cpp:729</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_a79d44cbca07f07419075eab63f02cf46"><div class="ttname"><a href="classripple_1_1STObject.html#a79d44cbca07f07419075eab63f02cf46">ripple::STObject::set</a></div><div class="ttdeci">void set(SOTemplate const &amp;)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00156">STObject.cpp:156</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_aaf5d617701ac3afc4ad6a13862459692"><div class="ttname"><a href="classripple_1_1STObject.html#aaf5d617701ac3afc4ad6a13862459692">ripple::STObject::isFieldPresent</a></div><div class="ttdeci">bool isFieldPresent(SField const &amp;field) const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00484">STObject.cpp:484</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_ab0b017e27f7f03ba9e2827a26075524d"><div class="ttname"><a href="classripple_1_1STObject.html#ab0b017e27f7f03ba9e2827a26075524d">ripple::STObject::getFieldCurrency</a></div><div class="ttdeci">STCurrency const &amp; getFieldCurrency(SField const &amp;field) const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00693">STObject.cpp:693</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_ac0e2e3ed7f92a9f21aed2eda6d1ea5c6"><div class="ttname"><a href="classripple_1_1STObject.html#ac0e2e3ed7f92a9f21aed2eda6d1ea5c6">ripple::STObject::setFieldU64</a></div><div class="ttdeci">void setFieldU64(SField const &amp;field, std::uint64_t)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00747">STObject.cpp:747</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_af5aa57043ec772da30341e3c3b823d7f"><div class="ttname"><a href="classripple_1_1STObject.html#af5aa57043ec772da30341e3c3b823d7f">ripple::STObject::getFlags</a></div><div class="ttdeci">std::uint32_t getFlags() const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00537">STObject.cpp:537</a></div></div>
<div class="ttc" id="aclassripple_1_1SetOracle_html_a11616651842f5d7f50205f4046549ff5"><div class="ttname"><a href="classripple_1_1SetOracle.html#a11616651842f5d7f50205f4046549ff5">ripple::SetOracle::preflight</a></div><div class="ttdeci">static NotTEC preflight(PreflightContext const &amp;ctx)</div><div class="ttdef"><b>Definition:</b> <a href="SetOracle_8cpp_source.html#l00040">SetOracle.cpp:40</a></div></div>
<div class="ttc" id="aclassripple_1_1SetOracle_html_a46ec333b3c8e46b9c07b0010bb038542"><div class="ttname"><a href="classripple_1_1SetOracle.html#a46ec333b3c8e46b9c07b0010bb038542">ripple::SetOracle::doApply</a></div><div class="ttdeci">TER doApply() override</div><div class="ttdef"><b>Definition:</b> <a href="SetOracle_8cpp_source.html#l00208">SetOracle.cpp:208</a></div></div>