1#include <xrpl/tx/paths/RippleCalc.h>
3#include <xrpl/basics/Log.h>
4#include <xrpl/basics/base_uint.h>
5#include <xrpl/beast/utility/Zero.h>
6#include <xrpl/core/ServiceRegistry.h>
7#include <xrpl/ledger/PaymentSandbox.h>
8#include <xrpl/protocol/AccountID.h>
9#include <xrpl/protocol/Asset.h>
10#include <xrpl/protocol/Quality.h>
11#include <xrpl/protocol/STAmount.h>
12#include <xrpl/protocol/STPathSet.h>
13#include <xrpl/protocol/TER.h>
14#include <xrpl/tx/paths/Flow.h>
15#include <xrpl/tx/paths/detail/Steps.h>
50 Input const*
const pInputs)
62 if (pInputs && pInputs->
limitQuality && saMaxAmountReq > beast::kZero)
68 if (saMaxAmountReq >= beast::kZero ||
70 saMaxAmountReq.
getIssuer() != uSrcAccountID)
72 return saMaxAmountReq;
97 JLOG(j.error()) <<
"Exception from flow: " << e.
what();
106 j.
debug() <<
"RippleCalc Result> "
109 <<
", dstAmtReq: " << saDstAmountReq <<
", sendMax: " << saMaxAmountReq;
A wrapper which makes credits unavailable to balances.
void apply(RawView &to)
Apply changes to base view.
Represents the logical ratio of output currency to input currency.
Asset const & asset() const
AccountID const & getIssuer() const
Service registry for dependency injection.
virtual beast::Journal getJournal(std::string const &name)=0
static Output rippleCalculate(PaymentSandbox &view, STAmount const &saMaxAmountReq, STAmount const &saDstAmountReq, AccountID const &uDstAccountID, AccountID const &uSrcAccountID, STPathSet const &spsPaths, std::optional< uint256 > const &domainID, ServiceRegistry ®istry, Input const *const pInputs=nullptr)
TAmounts< STAmount, STAmount > Amounts
StrandResult< TInAmt, TOutAmt > flow(PaymentSandbox const &baseView, Strand const &strand, std::optional< TInAmt > const &maxIn, TOutAmt const &out, beast::Journal j)
Request out amount from a strand.
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
constexpr bool equalTokens(Asset const &lhs, Asset const &rhs)
void setResult(TER const value)