mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Add DeliveredAmount to transaction metadata
This commit is contained in:
@@ -592,7 +592,7 @@ void LedgerEntrySet::calcRawMeta (Serializer& s, TER result, uint32 index)
|
||||
// add any new modified nodes to the modification set
|
||||
typedef std::map<uint256, SLE::pointer>::value_type u256_sle_pair;
|
||||
BOOST_FOREACH (u256_sle_pair & it, newMod)
|
||||
entryModify (it.second);
|
||||
entryModify (it.second);
|
||||
|
||||
mSet.addRaw (s, result, index);
|
||||
WriteLog (lsTRACE, LedgerEntrySet) << "Metadata:" << mSet.getJson (0);
|
||||
|
||||
@@ -246,6 +246,11 @@ public:
|
||||
return mEntries.end ();
|
||||
}
|
||||
|
||||
void setDeliveredAmount (STAmount const& amt)
|
||||
{
|
||||
mSet.setDeliveredAmount (amt);
|
||||
}
|
||||
|
||||
private:
|
||||
Ledger::pointer mLedger;
|
||||
std::map<uint256, LedgerEntrySetEntry> mEntries; // cannot be unordered!
|
||||
|
||||
@@ -204,8 +204,11 @@ TER PaymentTransactor::doApply ()
|
||||
false, // Not standalone, delete unfundeds.
|
||||
isSetBit (mParams, tapOPEN_LEDGER));
|
||||
|
||||
if (terNO_LINE == terResult)
|
||||
terResult = tecPATH_DRY;
|
||||
if (terNO_LINE == terResult)
|
||||
terResult = tecPATH_DRY;
|
||||
|
||||
if ((tesSUCCESS == terResult) && (saDstAmountAct != saDstAmount))
|
||||
mEngine->getNodes().setDeliveredAmount (saDstAmountAct);
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
|
||||
@@ -36,6 +36,9 @@ TransactionMetaSet::TransactionMetaSet (uint256 const& txid, uint32 ledger, Blob
|
||||
mResult = obj->getFieldU8 (sfTransactionResult);
|
||||
mIndex = obj->getFieldU32 (sfTransactionIndex);
|
||||
mNodes = * dynamic_cast<STArray*> (&obj->getField (sfAffectedNodes));
|
||||
|
||||
if (obj->isFieldPresent (sfDeliveredAmount))
|
||||
setDeliveredAmount (obj->getFieldAmount (sfDeliveredAmount));
|
||||
}
|
||||
|
||||
bool TransactionMetaSet::isNodeAffected (uint256 const& node) const
|
||||
@@ -177,6 +180,7 @@ void TransactionMetaSet::init (uint256 const& id, uint32 ledger)
|
||||
mTransactionID = id;
|
||||
mLedger = ledger;
|
||||
mNodes = STArray (sfAffectedNodes, 32);
|
||||
mDelivered = boost::optional <STAmount> ();
|
||||
}
|
||||
|
||||
void TransactionMetaSet::swap (TransactionMetaSet& s)
|
||||
@@ -212,6 +216,8 @@ STObject TransactionMetaSet::getAsObject () const
|
||||
metaData.setFieldU8 (sfTransactionResult, mResult);
|
||||
metaData.setFieldU32 (sfTransactionIndex, mIndex);
|
||||
metaData.addObject (mNodes);
|
||||
if (hasDeliveredAmount ())
|
||||
metaData.setFieldAmount (sfDeliveredAmount, getDeliveredAmount ());
|
||||
return metaData;
|
||||
}
|
||||
|
||||
|
||||
@@ -86,6 +86,22 @@ public:
|
||||
return (mNodes);
|
||||
}
|
||||
|
||||
void setDeliveredAmount (STAmount const& delivered)
|
||||
{
|
||||
mDelivered.reset (delivered);
|
||||
}
|
||||
|
||||
STAmount getDeliveredAmount () const
|
||||
{
|
||||
assert (hasDeliveredAmount ());
|
||||
return *mDelivered;
|
||||
}
|
||||
|
||||
bool hasDeliveredAmount () const
|
||||
{
|
||||
return mDelivered;
|
||||
}
|
||||
|
||||
static bool thread (STObject& node, uint256 const& prevTxID, uint32 prevLgrID);
|
||||
|
||||
private:
|
||||
@@ -94,6 +110,8 @@ private:
|
||||
uint32 mIndex;
|
||||
int mResult;
|
||||
|
||||
boost::optional <STAmount> mDelivered;
|
||||
|
||||
STArray mNodes;
|
||||
};
|
||||
|
||||
|
||||
@@ -146,6 +146,7 @@ FIELD (SendMax, AMOUNT, 9)
|
||||
// currency amount (uncommon)
|
||||
FIELD (MinimumOffer, AMOUNT, 16)
|
||||
FIELD (RippleEscrow, AMOUNT, 17)
|
||||
FIELD (DeliveredAmount, AMOUNT, 18)
|
||||
|
||||
// variable length
|
||||
FIELD (PublicKey, VL, 1)
|
||||
|
||||
Reference in New Issue
Block a user