mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Add owner_funds to client subscription data (RIPD-377)
Conflicts: src/ripple/module/app/ledger/AcceptedLedger.cpp
This commit is contained in:
committed by
Vinnie Falco
parent
6e934ee6a1
commit
ce2cecf046
@@ -111,6 +111,7 @@ JSS ( none );
|
||||
JSS ( no_ripple );
|
||||
JSS ( no_ripple_peer );
|
||||
JSS ( offers );
|
||||
JSS ( owner_funds );
|
||||
JSS ( params );
|
||||
JSS ( parent_hash );
|
||||
JSS ( peer );
|
||||
|
||||
@@ -34,8 +34,7 @@ AcceptedLedger::AcceptedLedger (Ledger::ref ledger) : mLedger (ledger)
|
||||
item = txSet.peekNextItem (item->getTag ()))
|
||||
{
|
||||
SerializerIterator sit (item->peekSerializer ());
|
||||
insert (std::make_shared<AcceptedLedgerTx> (
|
||||
ledger->getLedgerSeq (), sit));
|
||||
insert (std::make_shared<AcceptedLedgerTx> (ledger, std::ref (sit)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,28 +19,38 @@
|
||||
|
||||
namespace ripple {
|
||||
|
||||
AcceptedLedgerTx::AcceptedLedgerTx (std::uint32_t seq, SerializerIterator& sit)
|
||||
AcceptedLedgerTx::AcceptedLedgerTx (Ledger::ref ledger, SerializerIterator& sit)
|
||||
: mLedger (ledger)
|
||||
{
|
||||
Serializer txnSer (sit.getVL ());
|
||||
SerializerIterator txnIt (txnSer);
|
||||
|
||||
mTxn = std::make_shared<SerializedTransaction> (std::ref (txnIt));
|
||||
mRawMeta = sit.getVL ();
|
||||
mMeta = std::make_shared<TransactionMetaSet> (mTxn->getTransactionID (), seq, mRawMeta);
|
||||
mMeta = std::make_shared<TransactionMetaSet> (mTxn->getTransactionID (),
|
||||
ledger->getLedgerSeq (), mRawMeta);
|
||||
mAffected = mMeta->getAffectedAccounts ();
|
||||
mResult = mMeta->getResultTER ();
|
||||
buildJson ();
|
||||
}
|
||||
|
||||
AcceptedLedgerTx::AcceptedLedgerTx (SerializedTransaction::ref txn, TransactionMetaSet::ref met) :
|
||||
mTxn (txn), mMeta (met), mAffected (met->getAffectedAccounts ())
|
||||
AcceptedLedgerTx::AcceptedLedgerTx (Ledger::ref ledger,
|
||||
SerializedTransaction::ref txn, TransactionMetaSet::ref met)
|
||||
: mLedger (ledger)
|
||||
, mTxn (txn)
|
||||
, mMeta (met)
|
||||
, mAffected (met->getAffectedAccounts ())
|
||||
{
|
||||
mResult = mMeta->getResultTER ();
|
||||
buildJson ();
|
||||
}
|
||||
|
||||
AcceptedLedgerTx::AcceptedLedgerTx (SerializedTransaction::ref txn, TER result) :
|
||||
mTxn (txn), mResult (result), mAffected (txn->getMentionedAccounts ())
|
||||
AcceptedLedgerTx::AcceptedLedgerTx (Ledger::ref ledger,
|
||||
SerializedTransaction::ref txn, TER result)
|
||||
: mLedger (ledger)
|
||||
, mTxn (txn)
|
||||
, mResult (result)
|
||||
, mAffected (txn->getMentionedAccounts ())
|
||||
{
|
||||
buildJson ();
|
||||
}
|
||||
@@ -71,6 +81,21 @@ void AcceptedLedgerTx::buildJson ()
|
||||
{
|
||||
affected.append (ra.humanAccountID ());
|
||||
}
|
||||
}
|
||||
|
||||
if (mTxn->getTxnType () == ttOFFER_CREATE)
|
||||
{
|
||||
auto const account (mTxn->getSourceAccount ().getAccountID ());
|
||||
auto const amount (mTxn->getFieldAmount (sfTakerGets));
|
||||
|
||||
// If the offer create is not self funded then add the owner balance
|
||||
if (account != amount.issue ().account)
|
||||
{
|
||||
LedgerEntrySet les (mLedger, tapNONE, true);
|
||||
auto const ownerFunds (les.accountFunds (account, amount, fhIGNORE_FREEZE));
|
||||
|
||||
mJson[jss::owner_funds] = ownerFunds.getText ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -48,9 +48,10 @@ public:
|
||||
typedef const pointer& ref;
|
||||
|
||||
public:
|
||||
AcceptedLedgerTx (LedgerIndex ledgerSeq, SerializerIterator& sit);
|
||||
AcceptedLedgerTx (SerializedTransaction::ref, TransactionMetaSet::ref);
|
||||
AcceptedLedgerTx (SerializedTransaction::ref, TER result);
|
||||
AcceptedLedgerTx (Ledger::ref ledger, SerializerIterator& sit);
|
||||
AcceptedLedgerTx (Ledger::ref ledger, SerializedTransaction::ref,
|
||||
TransactionMetaSet::ref);
|
||||
AcceptedLedgerTx (Ledger::ref ledger, SerializedTransaction::ref, TER result);
|
||||
|
||||
SerializedTransaction::ref getTxn () const
|
||||
{
|
||||
@@ -97,6 +98,7 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
Ledger::pointer mLedger;
|
||||
SerializedTransaction::pointer mTxn;
|
||||
TransactionMetaSet::pointer mMeta;
|
||||
TER mResult;
|
||||
|
||||
@@ -2546,7 +2546,7 @@ void NetworkOPsImp::pubProposedTransaction (
|
||||
}
|
||||
}
|
||||
}
|
||||
AcceptedLedgerTx alt (stTxn, terResult);
|
||||
AcceptedLedgerTx alt (lpCurrent, stTxn, terResult);
|
||||
m_journal.trace << "pubProposed: " << alt.getJson ();
|
||||
pubAccountTransaction (lpCurrent, alt, false);
|
||||
}
|
||||
@@ -3133,6 +3133,7 @@ void NetworkOPsImp::getBookPage (
|
||||
auto const& saTakerPays =
|
||||
sleOffer->getFieldAmount (sfTakerPays);
|
||||
STAmount saOwnerFunds;
|
||||
bool firstOwnerOffer (true);
|
||||
|
||||
if (book.out.account == uOfferOwnerID)
|
||||
{
|
||||
@@ -3154,6 +3155,7 @@ void NetworkOPsImp::getBookPage (
|
||||
// Found in running balance table.
|
||||
|
||||
saOwnerFunds = umBalanceEntry->second;
|
||||
firstOwnerOffer = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3227,12 +3229,12 @@ void NetworkOPsImp::getBookPage (
|
||||
|
||||
umBalance[uOfferOwnerID] = saOwnerFunds - saOwnerPays;
|
||||
|
||||
if (saOwnerFunds != zero || uOfferOwnerID == uTakerID)
|
||||
{
|
||||
// Only provide funded offers and offers of the taker.
|
||||
Json::Value& jvOf = jvOffers.append (jvOffer);
|
||||
jvOf[jss::quality] = saDirRate.getText ();
|
||||
}
|
||||
// Include all offers funded and unfunded
|
||||
Json::Value& jvOf = jvOffers.append (jvOffer);
|
||||
jvOf[jss::quality] = saDirRate.getText ();
|
||||
|
||||
if (firstOwnerOffer)
|
||||
jvOf[jss::owner_funds] = saOwnerFunds.getText ();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user