txRequest meetsCriteria isIncoming/isOutgoing cleanup;

getTxs() erases unrequested txs
This commit is contained in:
woodser
2019-06-26 17:14:17 -04:00
parent c6ad55c340
commit 8dfe0bd390
2 changed files with 18 additions and 11 deletions
+16 -8
View File
@@ -587,8 +587,16 @@ namespace monero {
// filter txs that don't meet transfer request
request.transferRequest = transferRequest;
vector<shared_ptr<MoneroTxWallet>> txsRequested;
for (const shared_ptr<MoneroTxWallet>& tx : txs) {
if (request.meetsCriteria(tx.get())) txsRequested.push_back(tx);
vector<shared_ptr<MoneroTxWallet>>::iterator txIter = txs.begin();
while (txIter != txs.end()) {
shared_ptr<MoneroTxWallet> tx = *txIter;
if (request.meetsCriteria(tx.get())) {
txsRequested.push_back(tx);
txIter++;
} else {
txIter = txs.erase(txIter);
tx->block.get()->txs.erase(std::remove(tx->block.get()->txs.begin(), tx->block.get()->txs.end(), tx), tx->block.get()->txs.end()); // TODO, no way to use txIter?
}
}
txs = txsRequested;
@@ -628,12 +636,12 @@ namespace monero {
//cout << "1" << endl;
// // print request
// cout << "Transfer request: " << request.serialize() << endl;
// if (request.txRequest != boost::none) {
// if ((*request.txRequest)->block == boost::none) cout << "Transfer request's tx request rooted at [tx]:" << (*request.txRequest)->serialize() << endl;
// else cout << "Transfer request's tx request rooted at [block]: " << (*(*request.txRequest)->block)->serialize() << endl;
// }
// print request
cout << "Transfer request: " << request.serialize() << endl;
if (request.txRequest != boost::none) {
if ((*request.txRequest)->block == boost::none) cout << "Transfer request's tx request rooted at [tx]:" << (*request.txRequest)->serialize() << endl;
else cout << "Transfer request's tx request rooted at [block]: " << (*(*request.txRequest)->block)->serialize() << endl;
}
// normalize request
// TODO: this will modify original request, construct copy? add test
+2 -3
View File
@@ -145,15 +145,14 @@ namespace monero {
// filter on incoming
if (isIncoming != boost::none) {
if (*isIncoming && !tx->getIsIncoming()) return false;
if (!*isIncoming && tx->getIsIncoming()) return false;
if (isIncoming != tx->getIsIncoming()) return false;
}
//cout << "5" << endl;
// filter on outgoing
if (isOutgoing != boost::none) {
if (isOutgoing.get() != tx->getIsOutgoing()) return false;
if (isOutgoing != tx->getIsOutgoing()) return false;
}
//cout << "6" << endl;