mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-26 22:15:52 +00:00
This is not optimal, but this should at least make the logic for when we
publish transactions to which accounts sensible.
This commit is contained in:
@@ -1329,11 +1329,10 @@ void NetworkOPs::pubAccountTransaction(Ledger::ref lpCurrent, const SerializedTr
|
|||||||
|
|
||||||
if (!mSubAccount.empty() || (!mSubRTAccount.empty()) )
|
if (!mSubAccount.empty() || (!mSubRTAccount.empty()) )
|
||||||
{
|
{
|
||||||
typedef std::map<RippleAddress, bool>::value_type AccountPair;
|
std::vector<RippleAddress> accounts = meta ? meta->getAffectedAccounts() : stTxn.getMentionedAccounts();
|
||||||
|
BOOST_FOREACH(const RippleAddress& affectedAccount, accounts)
|
||||||
BOOST_FOREACH(const AccountPair& affectedAccount, getAffectedAccounts(stTxn))
|
|
||||||
{
|
{
|
||||||
subInfoMapIterator simiIt = mSubRTAccount.find(affectedAccount.first.getAccountID());
|
subInfoMapIterator simiIt = mSubRTAccount.find(affectedAccount.getAccountID());
|
||||||
|
|
||||||
if (simiIt != mSubRTAccount.end())
|
if (simiIt != mSubRTAccount.end())
|
||||||
{
|
{
|
||||||
@@ -1345,7 +1344,7 @@ void NetworkOPs::pubAccountTransaction(Ledger::ref lpCurrent, const SerializedTr
|
|||||||
|
|
||||||
if (bAccepted)
|
if (bAccepted)
|
||||||
{
|
{
|
||||||
simiIt = mSubAccount.find(affectedAccount.first.getAccountID());
|
simiIt = mSubAccount.find(affectedAccount.getAccountID());
|
||||||
|
|
||||||
if (simiIt != mSubAccount.end())
|
if (simiIt != mSubAccount.end())
|
||||||
{
|
{
|
||||||
@@ -1372,35 +1371,6 @@ void NetworkOPs::pubAccountTransaction(Ledger::ref lpCurrent, const SerializedTr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// JED: I know this is sort of ugly. I'm going to rework this to get the affected accounts in a different way when we want finer granularity than just "account"
|
|
||||||
std::map<RippleAddress,bool> NetworkOPs::getAffectedAccounts(const SerializedTransaction& stTxn)
|
|
||||||
{
|
|
||||||
std::map<RippleAddress,bool> accounts;
|
|
||||||
|
|
||||||
BOOST_FOREACH(const SerializedType& it, stTxn.peekData())
|
|
||||||
{
|
|
||||||
const STAccount* sa = dynamic_cast<const STAccount*>(&it);
|
|
||||||
if (sa)
|
|
||||||
{
|
|
||||||
RippleAddress na = sa->getValueNCA();
|
|
||||||
accounts[na]=true;
|
|
||||||
}else
|
|
||||||
{
|
|
||||||
if( it.getFName() == sfLimitAmount )
|
|
||||||
{
|
|
||||||
const STAmount* amount = dynamic_cast<const STAmount*>(&it);
|
|
||||||
if(amount)
|
|
||||||
{
|
|
||||||
RippleAddress na;
|
|
||||||
na.setAccountID(amount->getIssuer());
|
|
||||||
accounts[na]=true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return accounts;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Monitoring
|
// Monitoring
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -122,7 +122,6 @@ protected:
|
|||||||
|
|
||||||
void pubAcceptedTransaction(Ledger::ref lpCurrent, const SerializedTransaction& stTxn, TER terResult,TransactionMetaSet::pointer& meta);
|
void pubAcceptedTransaction(Ledger::ref lpCurrent, const SerializedTransaction& stTxn, TER terResult,TransactionMetaSet::pointer& meta);
|
||||||
void pubAccountTransaction(Ledger::ref lpCurrent, const SerializedTransaction& stTxn, TER terResult,bool accepted,TransactionMetaSet::pointer& meta);
|
void pubAccountTransaction(Ledger::ref lpCurrent, const SerializedTransaction& stTxn, TER terResult,bool accepted,TransactionMetaSet::pointer& meta);
|
||||||
std::map<RippleAddress,bool> getAffectedAccounts(const SerializedTransaction& stTxn);
|
|
||||||
|
|
||||||
void pubServer();
|
void pubServer();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user