bool TransactionMetaSet::thread (STObject& node, uint256 const& prevTxID, std::uint32_t prevLgrID) { if (node.getFieldIndex (sfPreviousTxnID) == -1) { assert (node.getFieldIndex (sfPreviousTxnLgrSeq) == -1); node.setFieldH256 (sfPreviousTxnID, prevTxID); node.setFieldU32 (sfPreviousTxnLgrSeq, prevLgrID); return true; } assert (node.getFieldH256 (sfPreviousTxnID) == prevTxID); assert (node.getFieldU32 (sfPreviousTxnLgrSeq) == prevLgrID); return false; }
TxMeta::TxMeta (uint256 const& txid, std::uint32_t ledger, STObject const& obj, beast::Journal j) : mTransactionID (txid) , mLedger (ledger) , mNodes (obj.getFieldArray (sfAffectedNodes)) , j_ (j) { mResult = obj.getFieldU8 (sfTransactionResult); mIndex = obj.getFieldU32 (sfTransactionIndex); auto affectedNodes = dynamic_cast <STArray const*> (obj.peekAtPField (sfAffectedNodes)); assert (affectedNodes); if (affectedNodes) mNodes = *affectedNodes; if (obj.isFieldPresent (sfDeliveredAmount)) setDeliveredAmount (obj.getFieldAmount (sfDeliveredAmount)); }