diff --git a/src/cpp/ripple/RippleCalc.cpp b/src/cpp/ripple/RippleCalc.cpp index 45e0096e8..07772686e 100644 --- a/src/cpp/ripple/RippleCalc.cpp +++ b/src/cpp/ripple/RippleCalc.cpp @@ -313,8 +313,8 @@ TER PathState::pushNode( && -saOwed >= (saLimit = lesEntries.rippleLimit(pnCur.uAccountID, pnBck.uAccountID, pnCur.uCurrencyID))) { cLog(lsWARNING) << boost::str(boost::format("pushNode: dry: saOwed=%s saLimit=%s") - % saOwed.getFullText() - % saLimit.getFullText()); + % saOwed + % saLimit); terResult = tecPATH_DRY; } @@ -1154,9 +1154,10 @@ TER RippleCalc::calcNodeDeliverRev( // YYY Note this gets zeroed on each increment, ideally only on first increment, then it could be a limit on the forward pass. saOutAct.zero(saOutReq); - cLog(lsINFO) << boost::str(boost::format("calcNodeDeliverRev: saOutAct=%s saOutReq=%s") + cLog(lsINFO) << boost::str(boost::format("calcNodeDeliverRev> saOutAct=%s saOutReq=%s saPrvDlvReq=%s") % saOutAct - % saOutReq); + % saOutReq + % saPrvDlvReq); assert(!!saOutReq); @@ -1387,11 +1388,16 @@ TER RippleCalc::calcNodeDeliverRev( << boost::str(boost::format("calcNodeDeliverRev: TOO MUCH: saOutAct=%s saOutReq=%s") % saOutAct % saOutReq); + assert(saOutAct <= saOutReq); // XXX Perhaps need to check if partial is okay to relax this? if (tesSUCCESS == terResult && !saOutAct) terResult = tecPATH_DRY; // Unable to meet request, consider path dry. + cLog(lsINFO) << boost::str(boost::format("calcNodeDeliverRev< saOutAct=%s saOutReq=%s saPrvDlvReq=%s") + % saOutAct + % saOutReq + % saPrvDlvReq); return terResult; } @@ -1780,13 +1786,15 @@ void RippleCalc::calcNodeRipple( cLog(lsTRACE) << boost::str(boost::format("calcNodeRipple> uQualityIn=%d uQualityOut=%d saPrvReq=%s saCurReq=%s saPrvAct=%s saCurAct=%s") % uQualityIn % uQualityOut - % saPrvReq.getFullText() - % saCurReq.getFullText() - % saPrvAct.getFullText() - % saCurAct.getFullText()); + % saPrvReq + % saCurReq + % saPrvAct + % saCurAct); assert(saCurReq.isPositive()); assert(saPrvReq.getCurrency() == saCurReq.getCurrency()); + assert(saPrvReq.getCurrency() == saPrvAct.getCurrency()); + assert(saPrvReq.getIssuer() == saPrvAct.getIssuer()); const bool bPrvUnlimited = saPrvReq.isNegative(); const STAmount saPrv = bPrvUnlimited ? STAmount(saPrvReq) : saPrvReq-saPrvAct; @@ -1795,8 +1803,8 @@ void RippleCalc::calcNodeRipple( #if 0 cLog(lsINFO) << boost::str(boost::format("calcNodeRipple: bPrvUnlimited=%d saPrv=%s saCur=%s") % bPrvUnlimited - % saPrv.getFullText() - % saCur.getFullText()); + % saPrv + % saCur); #endif if (uQualityIn >= uQualityOut) @@ -1835,19 +1843,19 @@ void RippleCalc::calcNodeRipple( STAmount saCurIn = STAmount::divRound(STAmount::mulRound(saCur, uQualityOut, uCurrencyID, uCurIssuerID, true), uQualityIn, uCurrencyID, uCurIssuerID, true); - cLog(lsTRACE) << boost::str(boost::format("calcNodeRipple: bPrvUnlimited=%d saPrv=%s saCurIn=%s") % bPrvUnlimited % saPrv.getFullText() % saCurIn.getFullText()); + cLog(lsTRACE) << boost::str(boost::format("calcNodeRipple: bPrvUnlimited=%d saPrv=%s saCurIn=%s") % bPrvUnlimited % saPrv % saCurIn); if (bPrvUnlimited || saCurIn <= saPrv) { // All of cur. Some amount of prv. saCurAct += saCur; saPrvAct += saCurIn; - cLog(lsTRACE) << boost::str(boost::format("calcNodeRipple:3c: saCurReq=%s saPrvAct=%s") % saCurReq.getFullText() % saPrvAct.getFullText()); + cLog(lsTRACE) << boost::str(boost::format("calcNodeRipple:3c: saCurReq=%s saPrvAct=%s") % saCurReq % saPrvAct); } else { // A part of cur. All of prv. (cur as driver) STAmount saCurOut = STAmount::divRound(STAmount::mulRound(saPrv, uQualityIn, uCurrencyID, uCurIssuerID, true), uQualityOut, uCurrencyID, uCurIssuerID, true); - cLog(lsTRACE) << boost::str(boost::format("calcNodeRipple:4: saCurReq=%s") % saCurReq.getFullText()); + cLog(lsTRACE) << boost::str(boost::format("calcNodeRipple:4: saCurReq=%s") % saCurReq); saCurAct += saCurOut; saPrvAct = saPrvReq; @@ -1861,10 +1869,10 @@ void RippleCalc::calcNodeRipple( cLog(lsTRACE) << boost::str(boost::format("calcNodeRipple< uQualityIn=%d uQualityOut=%d saPrvReq=%s saCurReq=%s saPrvAct=%s saCurAct=%s") % uQualityIn % uQualityOut - % saPrvReq.getFullText() - % saCurReq.getFullText() - % saPrvAct.getFullText() - % saCurAct.getFullText()); + % saPrvReq + % saCurReq + % saPrvAct + % saCurAct); } // Calculate saPrvRedeemReq, saPrvIssueReq, saPrvDeliver from saCur... @@ -1921,8 +1929,8 @@ TER RippleCalc::calcNodeAccountRev(const unsigned int uNode, PathState& psCur, c % STAmount::createHumanCurrency(uCurrencyID) % uQualityIn % uQualityOut - % saPrvOwed.getFullText() - % saPrvLimit.getFullText()); + % saPrvOwed + % saPrvLimit); // Previous can redeem the owed IOUs it holds. const STAmount saPrvRedeemReq = saPrvOwed.isPositive() ? saPrvOwed : STAmount(saPrvOwed.getCurrency(), saPrvOwed.getIssuer()); @@ -1947,12 +1955,14 @@ TER RippleCalc::calcNodeAccountRev(const unsigned int uNode, PathState& psCur, c const STAmount& saCurDeliverReq = pnCur.saRevDeliver; STAmount saCurDeliverAct(saCurDeliverReq.getCurrency(), saCurDeliverReq.getIssuer()); - cLog(lsTRACE) << boost::str(boost::format("calcNodeAccountRev: saPrvRedeemReq=%s saPrvIssueReq=%s saCurRedeemReq=%s saCurIssueReq=%s saNxtOwed=%s") - % saPrvRedeemReq.getFullText() - % saPrvIssueReq.getFullText() - % saCurRedeemReq.getFullText() - % saCurIssueReq.getFullText() - % saNxtOwed.getFullText()); + cLog(lsTRACE) << boost::str(boost::format("calcNodeAccountRev: saPrvRedeemReq=%s saPrvIssueReq=%s saPrvDeliverAct=%s saPrvDeliverReq=%s saCurRedeemReq=%s saCurIssueReq=%s saNxtOwed=%s") + % saPrvRedeemReq + % saPrvIssueReq + % saPrvDeliverAct + % saPrvDeliverReq + % saCurRedeemReq + % saCurIssueReq + % saNxtOwed); cLog(lsTRACE) << psCur.getJson(); @@ -1978,7 +1988,8 @@ TER RippleCalc::calcNodeAccountRev(const unsigned int uNode, PathState& psCur, c STAmount saCurWantedAct(saCurWantedReq.getCurrency(), saCurWantedReq.getIssuer()); cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountRev: account --> ACCOUNT --> $ : saCurWantedReq=%s") - % saCurWantedReq.getFullText()); + % saCurWantedReq); + // Calculate redeem if (saPrvRedeemReq) // Previous has IOUs to redeem. @@ -1991,8 +2002,8 @@ TER RippleCalc::calcNodeAccountRev(const unsigned int uNode, PathState& psCur, c uRateMax = STAmount::uRateOne; cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountRev: Redeem at 1:1 saPrvRedeemReq=%s (available) saPrvRedeemAct=%s uRateMax=%s") - % saPrvRedeemReq.getFullText() - % saPrvRedeemAct.getFullText() + % saPrvRedeemReq + % saPrvRedeemAct % STAmount::saFromRate(uRateMax).getText()); } else @@ -2012,8 +2023,8 @@ TER RippleCalc::calcNodeAccountRev(const unsigned int uNode, PathState& psCur, c calcNodeRipple(uQualityIn, QUALITY_ONE, saPrvIssueReq, saCurWantedReq, saPrvIssueAct, saCurWantedAct, uRateMax); cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountRev: Issuing: Rate: quality in : 1.0 saPrvIssueAct=%s saCurWantedAct=%s") - % saPrvIssueAct.getFullText() - % saCurWantedAct.getFullText()); + % saPrvIssueAct + % saCurWantedAct); } if (!saCurWantedAct) @@ -2036,8 +2047,8 @@ TER RippleCalc::calcNodeAccountRev(const unsigned int uNode, PathState& psCur, c calcNodeRipple(QUALITY_ONE, uQualityOut, saPrvRedeemReq, saCurRedeemReq, saPrvRedeemAct, saCurRedeemAct, uRateMax); cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountRev: Rate : 1.0 : quality out saPrvRedeemAct=%s saCurRedeemAct=%s") - % saPrvRedeemAct.getFullText() - % saCurRedeemAct.getFullText()); + % saPrvRedeemAct + % saCurRedeemAct); } // issue (part 1) -> redeem @@ -2048,8 +2059,8 @@ TER RippleCalc::calcNodeAccountRev(const unsigned int uNode, PathState& psCur, c calcNodeRipple(uQualityIn, uQualityOut, saPrvIssueReq, saCurRedeemReq, saPrvIssueAct, saCurRedeemAct, uRateMax); cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountRev: Rate: quality in : quality out: saPrvIssueAct=%s saCurRedeemAct=%s") - % saPrvIssueAct.getFullText() - % saCurRedeemAct.getFullText()); + % saPrvIssueAct + % saCurRedeemAct); } // redeem (part 2) -> issue. @@ -2061,8 +2072,8 @@ TER RippleCalc::calcNodeAccountRev(const unsigned int uNode, PathState& psCur, c calcNodeRipple(QUALITY_ONE, lesActive.rippleTransferRate(uCurAccountID), saPrvRedeemReq, saCurIssueReq, saPrvRedeemAct, saCurIssueAct, uRateMax); cLog(lsINFO) << boost::str(boost::format("calcNodeAccountRev: Rate : 1.0 : transfer_rate: saPrvRedeemAct=%s saCurIssueAct=%s") - % saPrvRedeemAct.getFullText() - % saCurIssueAct.getFullText()); + % saPrvRedeemAct + % saCurIssueAct); } // issue (part 2) -> issue @@ -2075,8 +2086,8 @@ TER RippleCalc::calcNodeAccountRev(const unsigned int uNode, PathState& psCur, c calcNodeRipple(uQualityIn, QUALITY_ONE, saPrvIssueReq, saCurIssueReq, saPrvIssueAct, saCurIssueAct, uRateMax); cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountRev: Rate: quality in : 1.0: saPrvIssueAct=%s saCurIssueAct=%s") - % saPrvIssueAct.getFullText() - % saCurIssueAct.getFullText()); + % saPrvIssueAct + % saCurIssueAct); } if (!saCurRedeemAct && !saCurIssueAct) @@ -2086,11 +2097,11 @@ TER RippleCalc::calcNodeAccountRev(const unsigned int uNode, PathState& psCur, c } cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountRev: ^|account --> ACCOUNT --> account : saCurRedeemReq=%s saCurIssueReq=%s saPrvOwed=%s saCurRedeemAct=%s saCurIssueAct=%s") - % saCurRedeemReq.getFullText() - % saCurIssueReq.getFullText() - % saPrvOwed.getFullText() - % saCurRedeemAct.getFullText() - % saCurIssueAct.getFullText()); + % saCurRedeemReq + % saCurIssueReq + % saPrvOwed + % saCurRedeemAct + % saCurIssueAct); } } else if (bPrvAccount && !bNxtAccount) @@ -2125,9 +2136,9 @@ TER RippleCalc::calcNodeAccountRev(const unsigned int uNode, PathState& psCur, c } cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountRev: saCurDeliverReq=%s saCurDeliverAct=%s saPrvOwed=%s") - % saCurDeliverReq.getFullText() - % saCurDeliverAct.getFullText() - % saPrvOwed.getFullText()); + % saCurDeliverReq + % saCurDeliverAct + % saPrvOwed); } else if (!bPrvAccount && bNxtAccount) { @@ -2138,7 +2149,7 @@ TER RippleCalc::calcNodeAccountRev(const unsigned int uNode, PathState& psCur, c STAmount saCurWantedAct(saCurWantedReq.getCurrency(), saCurWantedReq.getIssuer()); cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountRev: offer --> ACCOUNT --> $ : saCurWantedReq=%s saOutAct=%s saOutReq=%s") - % saCurWantedReq.getFullText() + % saCurWantedReq % psCur.saOutAct % psCur.saOutReq); @@ -2163,7 +2174,8 @@ TER RippleCalc::calcNodeAccountRev(const unsigned int uNode, PathState& psCur, c { // offer --> ACCOUNT --> account // Note: offer is always delivering(redeeming) as account is issuer. - cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountRev: offer --> ACCOUNT --> account")); + cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountRev: offer --> ACCOUNT --> account : saCurRedeemReq=%s saCurIssueReq=%s") + % saCurRedeemReq % saCurIssueReq); // deliver -> redeem if (saCurRedeemReq) // Next wants us to redeem. @@ -2282,12 +2294,12 @@ TER RippleCalc::calcNodeAccountFwd( cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountFwd> uNode=%d/%d saPrvRedeemReq=%s saPrvIssueReq=%s saPrvDeliverReq=%s saCurRedeemReq=%s saCurIssueReq=%s saCurDeliverReq=%s") % uNode % uLast - % saPrvRedeemReq.getFullText() - % saPrvIssueReq.getFullText() - % saPrvDeliverReq.getFullText() - % saCurRedeemReq.getFullText() - % saCurIssueReq.getFullText() - % saCurDeliverReq.getFullText()); + % saPrvRedeemReq + % saPrvIssueReq + % saPrvDeliverReq + % saCurRedeemReq + % saCurIssueReq + % saCurDeliverReq); // Ripple through account. @@ -2324,12 +2336,12 @@ TER RippleCalc::calcNodeAccountFwd( saCurSendMaxPass += saCurIssueAct; cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountFwd: ^ --> ACCOUNT --> account : saInReq=%s saInAct=%s saCurRedeemAct=%s saCurIssueReq=%s saCurIssueAct=%s saCurSendMaxPass=%s") - % psCur.saInReq.getFullText() - % psCur.saInAct.getFullText() - % saCurRedeemAct.getFullText() - % saCurIssueReq.getFullText() - % saCurIssueAct.getFullText() - % saCurSendMaxPass.getFullText()); + % psCur.saInReq + % psCur.saInAct + % saCurRedeemAct + % saCurIssueReq + % saCurIssueAct + % saCurSendMaxPass); } else if (uNode == uLast) { @@ -2337,8 +2349,8 @@ TER RippleCalc::calcNodeAccountFwd( cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountFwd: account --> ACCOUNT --> $ : uPrvAccountID=%s uCurAccountID=%s saPrvRedeemReq=%s saPrvIssueReq=%s") % RippleAddress::createHumanAccountID(uPrvAccountID) % RippleAddress::createHumanAccountID(uCurAccountID) - % saPrvRedeemReq.getFullText() - % saPrvIssueReq.getFullText()); + % saPrvRedeemReq + % saPrvIssueReq); // Last node. Accept all funds. Calculate amount actually to credit. @@ -2495,7 +2507,7 @@ TER RippleCalc::calcNodeAccountFwd( if (uNode == uLast) { // offer --> ACCOUNT --> $ - cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountFwd: offer --> ACCOUNT --> $ : %s") % saPrvDeliverReq.getFullText()); + cLog(lsDEBUG) << boost::str(boost::format("calcNodeAccountFwd: offer --> ACCOUNT --> $ : %s") % saPrvDeliverReq); STAmount& saCurReceive = psCur.saOutPass; @@ -2605,7 +2617,7 @@ TER RippleCalc::calcNodeRev(const unsigned int uNode, PathState& psCur, const bo % uNode % bCurAccount % RippleAddress::createHumanAccountID(uCurIssuerID) - % saTransferRate.getFullText()); + % saTransferRate); terResult = bCurAccount ? calcNodeAccountRev(uNode, psCur, bMultiQuality) @@ -2669,8 +2681,8 @@ void RippleCalc::pathNext(PathState::ref psrCur, const bool bMultiQuality, const { tLog(!psrCur->saInPass || !psrCur->saOutPass, lsDEBUG) << boost::str(boost::format("pathNext: Error calcNodeFwd reported success for nothing: saOutPass=%s saInPass=%s") - % psrCur->saOutPass.getFullText() - % psrCur->saInPass.getFullText()); + % psrCur->saOutPass + % psrCur->saInPass); if (!psrCur->saOutPass || !psrCur->saInPass) throw std::runtime_error("Made no progress."); @@ -2716,8 +2728,8 @@ TER RippleCalc::rippleCalc( RippleCalc rc(lesActive, bOpenLedger); cLog(lsTRACE) << boost::str(boost::format("rippleCalc> saMaxAmountReq=%s saDstAmountReq=%s") - % saMaxAmountReq.getFullText() - % saDstAmountReq.getFullText()); + % saMaxAmountReq + % saDstAmountReq); TER terResult = temUNCERTAIN; @@ -2777,8 +2789,8 @@ cLog(lsDEBUG) << boost::str(boost::format("rippleCalc: Build direct: status: %s" return temUNKNOWN; cLog(lsTRACE) << boost::str(boost::format("rippleCalc: EXPAND: saDstAmountReq=%s saMaxAmountReq=%s uDstAccountID=%s uSrcAccountID=%s") - % saDstAmountReq.getFullText() - % saMaxAmountReq.getFullText() + % saDstAmountReq + % saMaxAmountReq % RippleAddress::createHumanAccountID(uDstAccountID) % RippleAddress::createHumanAccountID(uSrcAccountID)); @@ -2870,8 +2882,8 @@ int iPass = 0; tLog(!pspCur->saInPass || !pspCur->saOutPass, lsDEBUG) << boost::str(boost::format("rippleCalc: better: uQuality=%s saInPass=%s saOutPass=%s") % STAmount::saFromRate(pspCur->uQuality) - % pspCur->saInPass.getFullText() - % pspCur->saOutPass.getFullText()); + % pspCur->saInPass + % pspCur->saOutPass); assert(!!pspCur->saInPass && !!pspCur->saOutPass); @@ -2883,8 +2895,8 @@ int iPass = 0; % pspCur->mIndex % pspCur->uQuality % STAmount::saFromRate(pspCur->uQuality) - % pspCur->saInPass.getFullText() - % pspCur->saOutPass.getFullText()); + % pspCur->saInPass + % pspCur->saOutPass); assert(lesActive.isValid()); lesActive.swapWith(pspCur->lesEntries); // For the path, save ledger state. @@ -2917,8 +2929,8 @@ int iPass = 0; cLog(lsDEBUG) << boost::str(boost::format("rippleCalc: best: uQuality=%s saInPass=%s saOutPass=%s") % STAmount::saFromRate(pspBest->uQuality) - % pspBest->saInPass.getFullText() - % pspBest->saOutPass.getFullText()); + % pspBest->saInPass + % pspBest->saOutPass); // Record best pass' offers that became unfunded for deletion on success. vuUnfundedBecame.insert(vuUnfundedBecame.end(), pspBest->vUnfundedBecame.begin(), pspBest->vUnfundedBecame.end());