mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-23 20:45:51 +00:00
deploy: 5edaec2bd0
This commit is contained in:
@@ -849,179 +849,180 @@ $(function() {
|
||||
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) << <span class="stringliteral">"apply: "</span> << <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code" href="classripple_1_1STTx.html#ad314af66e2542db537b3b5de291d33c3">getTransactionID</a>();</div>
|
||||
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  </div>
|
||||
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <a class="code" href="classripple_1_1STAmountSO.html">STAmountSO</a> stAmountSO{<a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().<a class="code" href="classripple_1_1ReadView.html#aaf2fa03be723bb78d8bdf41614a75a30">rules</a>().<a class="code" href="classripple_1_1Rules.html#a1a8388a2b9588aa9446ece92a88e0dd2">enabled</a>(<a class="code" href="namespaceripple.html#a58db4f19d243f6c82a533a40a0db89cd">fixSTAmountCanonicalize</a>)};</div>
|
||||
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  </div>
|
||||
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span> <span class="preprocessor">#ifdef DEBUG</span></div>
|
||||
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  {</div>
|
||||
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <a class="code" href="classripple_1_1Serializer.html">Serializer</a> ser;</div>
|
||||
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code" href="classripple_1_1STObject.html#a7adccac3a1b54244ae210afe7c5916e8">add</a>(ser);</div>
|
||||
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <a class="code" href="classripple_1_1SerialIter.html">SerialIter</a> sit(ser.<a class="code" href="classripple_1_1Serializer.html#a394c3299f6cfcebdaa4bc98ec0c602d6">slice</a>());</div>
|
||||
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <a class="code" href="classripple_1_1STTx.html">STTx</a> s2(sit);</div>
|
||||
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  </div>
|
||||
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">if</span> (!s2.<a class="code" href="classripple_1_1STObject.html#a3b5c3ab2b3da4ecc342bd8cf5e9c3947">isEquivalent</a>(<a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>))</div>
|
||||
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  {</div>
|
||||
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">fatal</a>()) << <span class="stringliteral">"Transaction serdes mismatch"</span>;</div>
|
||||
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>()) << <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(<a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code" href="classripple_1_1STTx.html#a489c8110e24455a2e7dac783f4760cc2">getJson</a>(<a class="code" href="namespaceripple.html#a169967ff418b80729654b6d45ade8711a334c4a4c42fdb79d7ebc3e73b517e6f8">JsonOptions::none</a>));</div>
|
||||
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">fatal</a>()) << s2.<a class="code" href="classripple_1_1STTx.html#a489c8110e24455a2e7dac783f4760cc2">getJson</a>(<a class="code" href="namespaceripple.html#a169967ff418b80729654b6d45ade8711a334c4a4c42fdb79d7ebc3e73b517e6f8">JsonOptions::none</a>);</div>
|
||||
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  }</div>
|
||||
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  }</div>
|
||||
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  </div>
|
||||
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keyword">auto</span> result = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#ae7e2361dfcb8bfc1d367389148c07634">preclaimResult</a>;</div>
|
||||
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
|
||||
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  result = <a class="code" href="classripple_1_1Transactor.html#ac2faaa3bfd1c9b9f91ae24f367474d0f">apply</a>();</div>
|
||||
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  </div>
|
||||
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="comment">// No transaction can return temUNKNOWN from apply,</span></div>
|
||||
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <span class="comment">// and it can't be passed in from a preclaim.</span></div>
|
||||
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  assert(result != <a class="code" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a1dad6e2d630423dd67f4a540305f8b3c">temUNKNOWN</a>);</div>
|
||||
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  </div>
|
||||
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="keywordflow">if</span> (<span class="keyword">auto</span> stream = <a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>())</div>
|
||||
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  stream << <span class="stringliteral">"preclaim result: "</span> << <a class="code" href="namespaceripple.html#a875ae996b37ed036597d70628ae053e3">transToken</a>(result);</div>
|
||||
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  </div>
|
||||
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="keywordtype">bool</span> applied = <a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(result);</div>
|
||||
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keyword">auto</span> fee = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code" href="classripple_1_1STObject.html#a8e207109e646759f4927d90e4404893f">getFieldAmount</a>(<a class="code" href="namespaceripple.html#a13864ec0864daa5d24b70d276414b8ff">sfFee</a>).<a class="code" href="classripple_1_1STAmount.html#a6c2ca92e9c91e2a34493d61e02d79ebf">xrp</a>();</div>
|
||||
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  </div>
|
||||
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#aaf553f68175966af2a29eafaf78e596e">size</a>() > <a class="code" href="namespaceripple.html#a4fa9a45199e7918a98e750262ba7be96">oversizeMetaDataCap</a>)</div>
|
||||
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  result = <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>;</div>
|
||||
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  </div>
|
||||
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result) && (<a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().flags() & <a class="code" href="namespaceripple.html#ad2487abbcc1a5d6064b72144b461df6ea72934cf56aa148d1f25bf08fe8922150">tapFAIL_HARD</a>))</div>
|
||||
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  {</div>
|
||||
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="comment">// If the tapFAIL_HARD flag is set, a tec result</span></div>
|
||||
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="comment">// must not do anything</span></div>
|
||||
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  </div>
|
||||
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a5967451fa668bfc8b6e6bf763da92aa7">discard</a>();</div>
|
||||
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  applied = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  }</div>
|
||||
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (</div>
|
||||
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>) || (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca82773cd87fbf942a9cb626416218f52b">tecKILLED</a>) ||</div>
|
||||
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc">tecEXPIRED</a>) || (<a class="code" href="namespaceripple.html#aaad7838ce24fa0ffc4c6e388b18c86a4">isTecClaimHardFail</a>(result, <a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().flags())))</div>
|
||||
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  {</div>
|
||||
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) << <span class="stringliteral">"reapplying because of "</span> << <a class="code" href="namespaceripple.html#a875ae996b37ed036597d70628ae053e3">transToken</a>(result);</div>
|
||||
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  </div>
|
||||
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="comment">// FIXME: This mechanism for doing work while returning a `tec` is</span></div>
|
||||
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="comment">// awkward and very limiting. A more general purpose approach</span></div>
|
||||
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="comment">// should be used, making it possible to do more useful work</span></div>
|
||||
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="comment">// when transactions fail with a `tec` code.</span></div>
|
||||
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<uint256></a> removedOffers;</div>
|
||||
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  </div>
|
||||
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">if</span> ((result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>) || (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca82773cd87fbf942a9cb626416218f52b">tecKILLED</a>))</div>
|
||||
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  {</div>
|
||||
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a04256a4e26ba636830cb0c6cf1c41bee">visit</a>([&removedOffers](</div>
|
||||
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <a class="code" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>& index,</div>
|
||||
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keywordtype">bool</span> isDelete,</div>
|
||||
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SLE const></a> <span class="keyword">const</span>& before,</div>
|
||||
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SLE const></a> <span class="keyword">const</span>& <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>) {</div>
|
||||
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keywordflow">if</span> (isDelete)</div>
|
||||
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  {</div>
|
||||
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  assert(before && <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>);</div>
|
||||
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordflow">if</span> (before && <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a> && (before->getType() == <a class="code" href="namespaceripple.html#ac151bf19e1f4daae2b04c65c65117139a8a24a7b08fcdd8a76109f80f056a176d">ltOFFER</a>) &&</div>
|
||||
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  (before->getFieldAmount(<a class="code" href="namespaceripple.html#a1bd06b8a74779afd739e715cbdbacddd">sfTakerPays</a>) ==</div>
|
||||
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>->getFieldAmount(<a class="code" href="namespaceripple.html#a1bd06b8a74779afd739e715cbdbacddd">sfTakerPays</a>)))</div>
|
||||
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  {</div>
|
||||
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="comment">// Removal of offer found or made unfunded</span></div>
|
||||
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  removedOffers.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(index);</div>
|
||||
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  }</div>
|
||||
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  }</div>
|
||||
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  });</div>
|
||||
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  }</div>
|
||||
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  </div>
|
||||
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<uint256></a> expiredNFTokenOffers;</div>
|
||||
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  </div>
|
||||
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc">tecEXPIRED</a>)</div>
|
||||
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  {</div>
|
||||
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a04256a4e26ba636830cb0c6cf1c41bee">visit</a>([&expiredNFTokenOffers](</div>
|
||||
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <a class="code" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>& index,</div>
|
||||
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="keywordtype">bool</span> isDelete,</div>
|
||||
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SLE const></a> <span class="keyword">const</span>& before,</div>
|
||||
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SLE const></a> <span class="keyword">const</span>& <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>) {</div>
|
||||
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <span class="keywordflow">if</span> (isDelete)</div>
|
||||
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  {</div>
|
||||
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  assert(before && <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>);</div>
|
||||
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="keywordflow">if</span> (before && <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a> &&</div>
|
||||
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  (before->getType() == <a class="code" href="namespaceripple.html#ac151bf19e1f4daae2b04c65c65117139aac7da9a5712625a2feed8f6cdc9295a8">ltNFTOKEN_OFFER</a>))</div>
|
||||
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  expiredNFTokenOffers.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(index);</div>
|
||||
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  }</div>
|
||||
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  });</div>
|
||||
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  }</div>
|
||||
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  </div>
|
||||
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="comment">// Reset the context, potentially adjusting the fee.</span></div>
|
||||
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  {</div>
|
||||
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="keyword">auto</span> <span class="keyword">const</span> resetResult = <a class="code" href="classripple_1_1Transactor.html#af81f796422a3f66771e31a6ecbbbf57b">reset</a>(fee);</div>
|
||||
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(resetResult.first))</div>
|
||||
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  result = resetResult.first;</div>
|
||||
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  </div>
|
||||
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  fee = resetResult.second;</div>
|
||||
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  }</div>
|
||||
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  </div>
|
||||
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  <span class="comment">// If necessary, remove any offers found unfunded during processing</span></div>
|
||||
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="keywordflow">if</span> ((result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>) || (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca82773cd87fbf942a9cb626416218f52b">tecKILLED</a>))</div>
|
||||
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <a class="code" href="namespaceripple.html#a6aab406eb9522bb36ba7247335e303ec">removeUnfundedOffers</a>(</div>
|
||||
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>(), removedOffers, <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a6ec1f10e560afe30ed435c3f7eea715d">app</a>.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"View"</span>));</div>
|
||||
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  </div>
|
||||
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc">tecEXPIRED</a>)</div>
|
||||
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <a class="code" href="namespaceripple.html#a8ba581584f364d79f3b5020b6a2c66da">removeExpiredNFTokenOffers</a>(</div>
|
||||
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>(), expiredNFTokenOffers, <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a6ec1f10e560afe30ed435c3f7eea715d">app</a>.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"View"</span>));</div>
|
||||
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  </div>
|
||||
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  applied = <a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result);</div>
|
||||
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  }</div>
|
||||
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  </div>
|
||||
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <span class="keywordflow">if</span> (applied)</div>
|
||||
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  {</div>
|
||||
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="comment">// Check invariants: if `tecINVARIANT_FAILED` is not returned, we can</span></div>
|
||||
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="comment">// proceed to apply the tx</span></div>
|
||||
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  result = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#acf5f75ec76cec199781a945226834410">checkInvariants</a>(result, fee);</div>
|
||||
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  </div>
|
||||
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7dccd25363fdff0d363bd16553d1c84">tecINVARIANT_FAILED</a>)</div>
|
||||
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  {</div>
|
||||
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="comment">// if invariants checking failed again, reset the context and</span></div>
|
||||
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="comment">// attempt to only claim a fee.</span></div>
|
||||
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="keyword">auto</span> <span class="keyword">const</span> resetResult = <a class="code" href="classripple_1_1Transactor.html#af81f796422a3f66771e31a6ecbbbf57b">reset</a>(fee);</div>
|
||||
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(resetResult.first))</div>
|
||||
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  result = resetResult.first;</div>
|
||||
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  </div>
|
||||
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  fee = resetResult.second;</div>
|
||||
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  </div>
|
||||
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <span class="comment">// Check invariants again to ensure the fee claiming doesn't</span></div>
|
||||
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="comment">// violate invariants.</span></div>
|
||||
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(result) || <a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result))</div>
|
||||
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  result = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#acf5f75ec76cec199781a945226834410">checkInvariants</a>(result, fee);</div>
|
||||
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  }</div>
|
||||
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  </div>
|
||||
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <span class="comment">// We ran through the invariant checker, which can, in some cases,</span></div>
|
||||
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="comment">// return a tef error code. Don't apply the transaction in that case.</span></div>
|
||||
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result) && !<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(result))</div>
|
||||
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  applied = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  }</div>
|
||||
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  </div>
|
||||
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <span class="keywordflow">if</span> (applied)</div>
|
||||
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  {</div>
|
||||
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <span class="comment">// Transaction succeeded fully or (retries are not allowed and the</span></div>
|
||||
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="comment">// transaction could claim a fee)</span></div>
|
||||
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  </div>
|
||||
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="comment">// The transactor and invariant checkers guarantee that this will</span></div>
|
||||
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="comment">// *never* trigger but if it, somehow, happens, don't allow a tx</span></div>
|
||||
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="comment">// that charges a negative fee.</span></div>
|
||||
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="keywordflow">if</span> (fee < beast::zero)</div>
|
||||
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  Throw<std::logic_error>(<span class="stringliteral">"fee charged is negative!"</span>);</div>
|
||||
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  </div>
|
||||
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="comment">// Charge whatever fee they specified. The fee has already been</span></div>
|
||||
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="comment">// deducted from the balance of the account that issued the</span></div>
|
||||
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <span class="comment">// transaction. We just need to account for it in the ledger</span></div>
|
||||
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="comment">// header.</span></div>
|
||||
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <span class="keywordflow">if</span> (!<a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().<a class="code" href="namespaceripple.html#a886ed36db831a964fc5f66ebbb4fe3d0">open</a>() && fee != beast::zero)</div>
|
||||
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a6dd28e2ef7cc9935403cbe303ebb5011">destroyXRP</a>(fee);</div>
|
||||
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  </div>
|
||||
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="comment">// Once we call apply, we will no longer be able to look at view()</span></div>
|
||||
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#aca57d8bdb6612a3d8042cadf62694125">apply</a>(result);</div>
|
||||
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  }</div>
|
||||
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  </div>
|
||||
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) << (applied ? <span class="stringliteral">"applied"</span> : <span class="stringliteral">"not applied"</span>)</div>
|
||||
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  << <a class="code" href="namespaceripple.html#a875ae996b37ed036597d70628ae053e3">transToken</a>(result);</div>
|
||||
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  </div>
|
||||
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keywordflow">return</span> {result, applied};</div>
|
||||
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span> }</div>
|
||||
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  </div>
|
||||
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span> } <span class="comment">// namespace ripple</span></div>
|
||||
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <a class="code" href="classripple_1_1NumberSO.html">NumberSO</a> stNumberSO{<a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().<a class="code" href="classripple_1_1ReadView.html#aaf2fa03be723bb78d8bdf41614a75a30">rules</a>().<a class="code" href="classripple_1_1Rules.html#a1a8388a2b9588aa9446ece92a88e0dd2">enabled</a>(<a class="code" href="namespaceripple.html#aca7b4bf41e621edeabbb353a76e9b055">fixUniversalNumber</a>)};</div>
|
||||
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  </div>
|
||||
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span> <span class="preprocessor">#ifdef DEBUG</span></div>
|
||||
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  {</div>
|
||||
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <a class="code" href="classripple_1_1Serializer.html">Serializer</a> ser;</div>
|
||||
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code" href="classripple_1_1STObject.html#a7adccac3a1b54244ae210afe7c5916e8">add</a>(ser);</div>
|
||||
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <a class="code" href="classripple_1_1SerialIter.html">SerialIter</a> sit(ser.<a class="code" href="classripple_1_1Serializer.html#a394c3299f6cfcebdaa4bc98ec0c602d6">slice</a>());</div>
|
||||
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <a class="code" href="classripple_1_1STTx.html">STTx</a> s2(sit);</div>
|
||||
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  </div>
|
||||
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="keywordflow">if</span> (!s2.<a class="code" href="classripple_1_1STObject.html#a3b5c3ab2b3da4ecc342bd8cf5e9c3947">isEquivalent</a>(<a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>))</div>
|
||||
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  {</div>
|
||||
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">fatal</a>()) << <span class="stringliteral">"Transaction serdes mismatch"</span>;</div>
|
||||
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>()) << <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(<a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code" href="classripple_1_1STTx.html#a489c8110e24455a2e7dac783f4760cc2">getJson</a>(<a class="code" href="namespaceripple.html#a169967ff418b80729654b6d45ade8711a334c4a4c42fdb79d7ebc3e73b517e6f8">JsonOptions::none</a>));</div>
|
||||
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">fatal</a>()) << s2.<a class="code" href="classripple_1_1STTx.html#a489c8110e24455a2e7dac783f4760cc2">getJson</a>(<a class="code" href="namespaceripple.html#a169967ff418b80729654b6d45ade8711a334c4a4c42fdb79d7ebc3e73b517e6f8">JsonOptions::none</a>);</div>
|
||||
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  assert(<span class="keyword">false</span>);</div>
|
||||
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  }</div>
|
||||
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  }</div>
|
||||
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  </div>
|
||||
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keyword">auto</span> result = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#ae7e2361dfcb8bfc1d367389148c07634">preclaimResult</a>;</div>
|
||||
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
|
||||
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  result = <a class="code" href="classripple_1_1Transactor.html#ac2faaa3bfd1c9b9f91ae24f367474d0f">apply</a>();</div>
|
||||
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  </div>
|
||||
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <span class="comment">// No transaction can return temUNKNOWN from apply,</span></div>
|
||||
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="comment">// and it can't be passed in from a preclaim.</span></div>
|
||||
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  assert(result != <a class="code" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a1dad6e2d630423dd67f4a540305f8b3c">temUNKNOWN</a>);</div>
|
||||
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  </div>
|
||||
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keywordflow">if</span> (<span class="keyword">auto</span> stream = <a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>())</div>
|
||||
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  stream << <span class="stringliteral">"preclaim result: "</span> << <a class="code" href="namespaceripple.html#a875ae996b37ed036597d70628ae053e3">transToken</a>(result);</div>
|
||||
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  </div>
|
||||
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keywordtype">bool</span> applied = <a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(result);</div>
|
||||
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keyword">auto</span> fee = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code" href="classripple_1_1STObject.html#a8e207109e646759f4927d90e4404893f">getFieldAmount</a>(<a class="code" href="namespaceripple.html#a13864ec0864daa5d24b70d276414b8ff">sfFee</a>).<a class="code" href="classripple_1_1STAmount.html#a6c2ca92e9c91e2a34493d61e02d79ebf">xrp</a>();</div>
|
||||
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  </div>
|
||||
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#aaf553f68175966af2a29eafaf78e596e">size</a>() > <a class="code" href="namespaceripple.html#a4fa9a45199e7918a98e750262ba7be96">oversizeMetaDataCap</a>)</div>
|
||||
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  result = <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>;</div>
|
||||
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  </div>
|
||||
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result) && (<a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().flags() & <a class="code" href="namespaceripple.html#ad2487abbcc1a5d6064b72144b461df6ea72934cf56aa148d1f25bf08fe8922150">tapFAIL_HARD</a>))</div>
|
||||
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  {</div>
|
||||
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="comment">// If the tapFAIL_HARD flag is set, a tec result</span></div>
|
||||
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="comment">// must not do anything</span></div>
|
||||
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  </div>
|
||||
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a5967451fa668bfc8b6e6bf763da92aa7">discard</a>();</div>
|
||||
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  applied = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  }</div>
|
||||
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (</div>
|
||||
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>) || (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca82773cd87fbf942a9cb626416218f52b">tecKILLED</a>) ||</div>
|
||||
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc">tecEXPIRED</a>) || (<a class="code" href="namespaceripple.html#aaad7838ce24fa0ffc4c6e388b18c86a4">isTecClaimHardFail</a>(result, <a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().flags())))</div>
|
||||
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  {</div>
|
||||
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) << <span class="stringliteral">"reapplying because of "</span> << <a class="code" href="namespaceripple.html#a875ae996b37ed036597d70628ae053e3">transToken</a>(result);</div>
|
||||
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  </div>
|
||||
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="comment">// FIXME: This mechanism for doing work while returning a `tec` is</span></div>
|
||||
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="comment">// awkward and very limiting. A more general purpose approach</span></div>
|
||||
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="comment">// should be used, making it possible to do more useful work</span></div>
|
||||
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="comment">// when transactions fail with a `tec` code.</span></div>
|
||||
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<uint256></a> removedOffers;</div>
|
||||
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  </div>
|
||||
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <span class="keywordflow">if</span> ((result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>) || (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca82773cd87fbf942a9cb626416218f52b">tecKILLED</a>))</div>
|
||||
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  {</div>
|
||||
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a04256a4e26ba636830cb0c6cf1c41bee">visit</a>([&removedOffers](</div>
|
||||
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <a class="code" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>& index,</div>
|
||||
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <span class="keywordtype">bool</span> isDelete,</div>
|
||||
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SLE const></a> <span class="keyword">const</span>& before,</div>
|
||||
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SLE const></a> <span class="keyword">const</span>& <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>) {</div>
|
||||
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="keywordflow">if</span> (isDelete)</div>
|
||||
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  {</div>
|
||||
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  assert(before && <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>);</div>
|
||||
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keywordflow">if</span> (before && <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a> && (before->getType() == <a class="code" href="namespaceripple.html#ac151bf19e1f4daae2b04c65c65117139a8a24a7b08fcdd8a76109f80f056a176d">ltOFFER</a>) &&</div>
|
||||
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  (before->getFieldAmount(<a class="code" href="namespaceripple.html#a1bd06b8a74779afd739e715cbdbacddd">sfTakerPays</a>) ==</div>
|
||||
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>->getFieldAmount(<a class="code" href="namespaceripple.html#a1bd06b8a74779afd739e715cbdbacddd">sfTakerPays</a>)))</div>
|
||||
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  {</div>
|
||||
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="comment">// Removal of offer found or made unfunded</span></div>
|
||||
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  removedOffers.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(index);</div>
|
||||
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  }</div>
|
||||
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  }</div>
|
||||
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  });</div>
|
||||
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  }</div>
|
||||
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  </div>
|
||||
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<uint256></a> expiredNFTokenOffers;</div>
|
||||
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  </div>
|
||||
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc">tecEXPIRED</a>)</div>
|
||||
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  {</div>
|
||||
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a04256a4e26ba636830cb0c6cf1c41bee">visit</a>([&expiredNFTokenOffers](</div>
|
||||
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <a class="code" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>& index,</div>
|
||||
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="keywordtype">bool</span> isDelete,</div>
|
||||
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SLE const></a> <span class="keyword">const</span>& before,</div>
|
||||
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SLE const></a> <span class="keyword">const</span>& <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>) {</div>
|
||||
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordflow">if</span> (isDelete)</div>
|
||||
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  {</div>
|
||||
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  assert(before && <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>);</div>
|
||||
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="keywordflow">if</span> (before && <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a> &&</div>
|
||||
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  (before->getType() == <a class="code" href="namespaceripple.html#ac151bf19e1f4daae2b04c65c65117139aac7da9a5712625a2feed8f6cdc9295a8">ltNFTOKEN_OFFER</a>))</div>
|
||||
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  expiredNFTokenOffers.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(index);</div>
|
||||
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  }</div>
|
||||
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  });</div>
|
||||
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  }</div>
|
||||
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  </div>
|
||||
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="comment">// Reset the context, potentially adjusting the fee.</span></div>
|
||||
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  {</div>
|
||||
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keyword">auto</span> <span class="keyword">const</span> resetResult = <a class="code" href="classripple_1_1Transactor.html#af81f796422a3f66771e31a6ecbbbf57b">reset</a>(fee);</div>
|
||||
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(resetResult.first))</div>
|
||||
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  result = resetResult.first;</div>
|
||||
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  </div>
|
||||
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  fee = resetResult.second;</div>
|
||||
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  }</div>
|
||||
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  </div>
|
||||
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="comment">// If necessary, remove any offers found unfunded during processing</span></div>
|
||||
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keywordflow">if</span> ((result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>) || (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca82773cd87fbf942a9cb626416218f52b">tecKILLED</a>))</div>
|
||||
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <a class="code" href="namespaceripple.html#a6aab406eb9522bb36ba7247335e303ec">removeUnfundedOffers</a>(</div>
|
||||
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>(), removedOffers, <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a6ec1f10e560afe30ed435c3f7eea715d">app</a>.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"View"</span>));</div>
|
||||
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  </div>
|
||||
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc">tecEXPIRED</a>)</div>
|
||||
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <a class="code" href="namespaceripple.html#a8ba581584f364d79f3b5020b6a2c66da">removeExpiredNFTokenOffers</a>(</div>
|
||||
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  <a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>(), expiredNFTokenOffers, <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a6ec1f10e560afe30ed435c3f7eea715d">app</a>.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"View"</span>));</div>
|
||||
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  </div>
|
||||
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  applied = <a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result);</div>
|
||||
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  }</div>
|
||||
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  </div>
|
||||
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <span class="keywordflow">if</span> (applied)</div>
|
||||
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  {</div>
|
||||
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="comment">// Check invariants: if `tecINVARIANT_FAILED` is not returned, we can</span></div>
|
||||
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="comment">// proceed to apply the tx</span></div>
|
||||
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  result = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#acf5f75ec76cec199781a945226834410">checkInvariants</a>(result, fee);</div>
|
||||
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  </div>
|
||||
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7dccd25363fdff0d363bd16553d1c84">tecINVARIANT_FAILED</a>)</div>
|
||||
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  {</div>
|
||||
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="comment">// if invariants checking failed again, reset the context and</span></div>
|
||||
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="comment">// attempt to only claim a fee.</span></div>
|
||||
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="keyword">auto</span> <span class="keyword">const</span> resetResult = <a class="code" href="classripple_1_1Transactor.html#af81f796422a3f66771e31a6ecbbbf57b">reset</a>(fee);</div>
|
||||
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(resetResult.first))</div>
|
||||
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  result = resetResult.first;</div>
|
||||
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  </div>
|
||||
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  fee = resetResult.second;</div>
|
||||
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  </div>
|
||||
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="comment">// Check invariants again to ensure the fee claiming doesn't</span></div>
|
||||
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="comment">// violate invariants.</span></div>
|
||||
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(result) || <a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result))</div>
|
||||
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  result = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#acf5f75ec76cec199781a945226834410">checkInvariants</a>(result, fee);</div>
|
||||
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  }</div>
|
||||
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  </div>
|
||||
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="comment">// We ran through the invariant checker, which can, in some cases,</span></div>
|
||||
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="comment">// return a tef error code. Don't apply the transaction in that case.</span></div>
|
||||
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result) && !<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(result))</div>
|
||||
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  applied = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  }</div>
|
||||
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  </div>
|
||||
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keywordflow">if</span> (applied)</div>
|
||||
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  {</div>
|
||||
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="comment">// Transaction succeeded fully or (retries are not allowed and the</span></div>
|
||||
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <span class="comment">// transaction could claim a fee)</span></div>
|
||||
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  </div>
|
||||
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="comment">// The transactor and invariant checkers guarantee that this will</span></div>
|
||||
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="comment">// *never* trigger but if it, somehow, happens, don't allow a tx</span></div>
|
||||
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="comment">// that charges a negative fee.</span></div>
|
||||
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="keywordflow">if</span> (fee < beast::zero)</div>
|
||||
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  Throw<std::logic_error>(<span class="stringliteral">"fee charged is negative!"</span>);</div>
|
||||
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  </div>
|
||||
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="comment">// Charge whatever fee they specified. The fee has already been</span></div>
|
||||
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <span class="comment">// deducted from the balance of the account that issued the</span></div>
|
||||
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="comment">// transaction. We just need to account for it in the ledger</span></div>
|
||||
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <span class="comment">// header.</span></div>
|
||||
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="keywordflow">if</span> (!<a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().<a class="code" href="namespaceripple.html#a886ed36db831a964fc5f66ebbb4fe3d0">open</a>() && fee != beast::zero)</div>
|
||||
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a6dd28e2ef7cc9935403cbe303ebb5011">destroyXRP</a>(fee);</div>
|
||||
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  </div>
|
||||
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="comment">// Once we call apply, we will no longer be able to look at view()</span></div>
|
||||
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#aca57d8bdb6612a3d8042cadf62694125">apply</a>(result);</div>
|
||||
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  }</div>
|
||||
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  </div>
|
||||
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) << (applied ? <span class="stringliteral">"applied"</span> : <span class="stringliteral">"not applied"</span>)</div>
|
||||
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  << <a class="code" href="namespaceripple.html#a875ae996b37ed036597d70628ae053e3">transToken</a>(result);</div>
|
||||
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  </div>
|
||||
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <span class="keywordflow">return</span> {result, applied};</div>
|
||||
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span> }</div>
|
||||
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  </div>
|
||||
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span> } <span class="comment">// namespace ripple</span></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<div class="ttc" id="aclassbeast_1_1Journal_html_a3dfb8e2e3eecccdb5cf78ff21bca069c"><div class="ttname"><a href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">beast::Journal::fatal</a></div><div class="ttdeci">Stream fatal() const</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00339">Journal.h:339</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>
|
||||
@@ -1032,7 +1033,7 @@ $(function() {
|
||||
<div class="ttc" id="aclassripple_1_1Application_html"><div class="ttname"><a href="classripple_1_1Application.html">ripple::Application</a></div><div class="ttdef"><b>Definition:</b> <a href="Application_8h_source.html#l00115">Application.h:115</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_adebe4d783be9c979e67fdbb2bc27162fad237d4c433f46906a2b8b2e1624c1aff"><div class="ttname"><a href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fad237d4c433f46906a2b8b2e1624c1aff">ripple::terPRE_TICKET</a></div><div class="ttdeci">@ terPRE_TICKET</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00204">TER.h:204</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html_a26fe74d797620b2d08d06d50527380e1"><div class="ttname"><a href="classripple_1_1STObject.html#a26fe74d797620b2d08d06d50527380e1">ripple::STObject::getFieldArray</a></div><div class="ttdeci">const STArray & getFieldArray(SField const &field) const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00624">STObject.cpp:624</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STAmountSO_html"><div class="ttname"><a href="classripple_1_1STAmountSO.html">ripple::STAmountSO</a></div><div class="ttdoc">RAII class to set and restore the STAmount canonicalize switchover.</div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00529">STAmount.h:529</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STAmountSO_html"><div class="ttname"><a href="classripple_1_1STAmountSO.html">ripple::STAmountSO</a></div><div class="ttdoc">RAII class to set and restore the STAmount canonicalize switchover.</div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00544">STAmount.h:544</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a8b257ff89d14ac75ce240946f32d3773"><div class="ttname"><a href="namespaceripple.html#a8b257ff89d14ac75ce240946f32d3773">ripple::preflight2</a></div><div class="ttdeci">NotTEC preflight2(PreflightContext const &ctx)</div><div class="ttdoc">Checks whether the signature appears valid.</div><div class="ttdef"><b>Definition:</b> <a href="Transactor_8cpp_source.html#l00109">Transactor.cpp:109</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_aabe37451093c21757855542d68fba3ce"><div class="ttname"><a href="namespaceripple.html#aabe37451093c21757855542d68fba3ce">ripple::makeSlice</a></div><div class="ttdeci">std::enable_if_t< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &a)</div><div class="ttdef"><b>Definition:</b> <a href="Slice_8h_source.html#l00241">Slice.h:241</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1Transactor_html_a5c4568739676c5335b8d63dc375f7920"><div class="ttname"><a href="classripple_1_1Transactor.html#a5c4568739676c5335b8d63dc375f7920">ripple::Transactor::minimumFee</a></div><div class="ttdeci">static XRPAmount minimumFee(Application &app, XRPAmount baseFee, Fees const &fees, ApplyFlags flags)</div><div class="ttdoc">Compute the minimum fee required to process a transaction with a given baseFee based on the current s...</div><div class="ttdef"><b>Definition:</b> <a href="Transactor_8cpp_source.html#l00159">Transactor.cpp:159</a></div></div>
|
||||
@@ -1064,6 +1065,7 @@ $(function() {
|
||||
<div class="ttc" id="aclassripple_1_1ApplyView_html_afda9c12acbda605becf20f54d45587d4"><div class="ttname"><a href="classripple_1_1ApplyView.html#afda9c12acbda605becf20f54d45587d4">ripple::ApplyView::erase</a></div><div class="ttdeci">virtual void erase(std::shared_ptr< SLE > const &sle)=0</div><div class="ttdoc">Remove a peeked SLE.</div></div>
|
||||
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a></div><div class="ttdoc">STL class.</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1ReadView_html_a9bbdb3fb4754482a8d6c6e6d25c2d1eb"><div class="ttname"><a href="classripple_1_1ReadView.html#a9bbdb3fb4754482a8d6c6e6d25c2d1eb">ripple::ReadView::fees</a></div><div class="ttdeci">virtual Fees const & fees() const =0</div><div class="ttdoc">Returns the fees for the base ledger.</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1NumberSO_html"><div class="ttname"><a href="classripple_1_1NumberSO.html">ripple::NumberSO</a></div><div class="ttdoc">RAII class to set and restore the Number switchover.</div><div class="ttdef"><b>Definition:</b> <a href="IOUAmount_8h_source.html#l00194">IOUAmount.h:194</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a590913040d5c9a68f3bf1d4da20311ad"><div class="ttname"><a href="namespaceripple.html#a590913040d5c9a68f3bf1d4da20311ad">ripple::sfSigningPubKey</a></div><div class="ttdeci">const SF_VL sfSigningPubKey</div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a58db4f19d243f6c82a533a40a0db89cd"><div class="ttname"><a href="namespaceripple.html#a58db4f19d243f6c82a533a40a0db89cd">ripple::fixSTAmountCanonicalize</a></div><div class="ttdeci">const uint256 fixSTAmountCanonicalize</div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_acf006b1d073655e03dd2426f56f13100"><div class="ttname"><a href="namespaceripple.html#acf006b1d073655e03dd2426f56f13100">ripple::expiredOfferRemoveLimit</a></div><div class="ttdeci">constexpr std::size_t expiredOfferRemoveLimit</div><div class="ttdoc">The maximum number of expired offers to delete at once.</div><div class="ttdef"><b>Definition:</b> <a href="Protocol_8h_source.html#l00049">Protocol.h:49</a></div></div>
|
||||
@@ -1132,7 +1134,7 @@ $(function() {
|
||||
<div class="ttc" id="anamespaceripple_html_a260d2970ac1119109937ed1c5d4ca962a595a44bbc04dffad91a353227660d6ba"><div class="ttname"><a href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a595a44bbc04dffad91a353227660d6ba">ripple::telINSUF_FEE_P</a></div><div class="ttdeci">@ telINSUF_FEE_P</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00056">TER.h:56</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a8b7ad58ef0bd67e998b61e1a1292b3e5"><div class="ttname"><a href="namespaceripple.html#a8b7ad58ef0bd67e998b61e1a1292b3e5">ripple::sfTicketCount</a></div><div class="ttdeci">const SF_UINT32 sfTicketCount</div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_afa87acdfb963b2129980b58d05b99c1d"><div class="ttname"><a href="namespaceripple.html#afa87acdfb963b2129980b58d05b99c1d">ripple::sfAccountTxnID</a></div><div class="ttdeci">const SF_UINT256 sfAccountTxnID</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STAmount_html"><div class="ttname"><a href="classripple_1_1STAmount.html">ripple::STAmount</a></div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00044">STAmount.h:44</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STAmount_html"><div class="ttname"><a href="classripple_1_1STAmount.html">ripple::STAmount</a></div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00045">STAmount.h:45</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1PreflightContext_html_a027e5fc872737a81a7d2428e6f251c1f"><div class="ttname"><a href="structripple_1_1PreflightContext.html#a027e5fc872737a81a7d2428e6f251c1f">ripple::PreflightContext::app</a></div><div class="ttdeci">Application & app</div><div class="ttdef"><b>Definition:</b> <a href="Transactor_8h_source.html#l00034">Transactor.h:34</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1ApplyContext_html_a5967451fa668bfc8b6e6bf763da92aa7"><div class="ttname"><a href="classripple_1_1ApplyContext.html#a5967451fa668bfc8b6e6bf763da92aa7">ripple::ApplyContext::discard</a></div><div class="ttdeci">void discard()</div><div class="ttdoc">Discard changes and start fresh.</div><div class="ttdef"><b>Definition:</b> <a href="ApplyContext_8cpp_source.html#l00051">ApplyContext.cpp:51</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1Serializer_html_a394c3299f6cfcebdaa4bc98ec0c602d6"><div class="ttname"><a href="classripple_1_1Serializer.html#a394c3299f6cfcebdaa4bc98ec0c602d6">ripple::Serializer::slice</a></div><div class="ttdeci">Slice slice() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00063">Serializer.h:63</a></div></div>
|
||||
@@ -1179,6 +1181,7 @@ $(function() {
|
||||
<div class="ttc" id="anamespaceripple_html_ac1371098a8a7c1e1238290d0220dc941"><div class="ttname"><a href="namespaceripple.html#ac1371098a8a7c1e1238290d0220dc941">ripple::sfFlags</a></div><div class="ttdeci">const SF_UINT32 sfFlags</div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a75cb21d7f1df42f2fdc8efddb79b63f4ac01c14dcda25a99606dcd9a039bcaa70"><div class="ttname"><a href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ac01c14dcda25a99606dcd9a039bcaa70">ripple::tefALREADY</a></div><div class="ttdeci">@ tefALREADY</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00146">TER.h:146</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 &field) const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00428">STObject.cpp:428</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_aca7b4bf41e621edeabbb353a76e9b055"><div class="ttname"><a href="namespaceripple.html#aca7b4bf41e621edeabbb353a76e9b055">ripple::fixUniversalNumber</a></div><div class="ttdeci">const uint256 fixUniversalNumber</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1Transactor_html_abb2f6f5d7fd8c663c5df76b6fcba2c49"><div class="ttname"><a href="classripple_1_1Transactor.html#abb2f6f5d7fd8c663c5df76b6fcba2c49">ripple::Transactor::mPriorBalance</a></div><div class="ttdeci">XRPAmount mPriorBalance</div><div class="ttdef"><b>Definition:</b> <a href="Transactor_8h_source.html#l00092">Transactor.h:92</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1Transactor_html_ae20c19d8ecec32cec52399081e76cc45"><div class="ttname"><a href="classripple_1_1Transactor.html#ae20c19d8ecec32cec52399081e76cc45">ripple::Transactor::mSourceBalance</a></div><div class="ttdeci">XRPAmount mSourceBalance</div><div class="ttdef"><b>Definition:</b> <a href="Transactor_8h_source.html#l00093">Transactor.h:93</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ab8a9c54401e8209fca7396c6b9c610f4"><div class="ttname"><a href="namespaceripple.html#ab8a9c54401e8209fca7396c6b9c610f4">ripple::sfBalance</a></div><div class="ttdeci">const SF_AMOUNT sfBalance</div></div>
|
||||
|
||||
Reference in New Issue
Block a user