Changeset View
Changeset View
Standalone View
Standalone View
src/wallet/walletdb.cpp
Show First 20 Lines • Show All 819 Lines • ▼ Show 20 Lines | DBErrors WalletBatch::LoadWallet(CWallet *pwallet) { | ||||
} catch (...) { | } catch (...) { | ||||
result = DBErrors::CORRUPT; | result = DBErrors::CORRUPT; | ||||
} | } | ||||
return result; | return result; | ||||
} | } | ||||
DBErrors WalletBatch::FindWalletTx(std::vector<TxId> &txIds, | DBErrors WalletBatch::FindWalletTx(std::vector<TxId> &txIds, | ||||
std::vector<CWalletTx> &vWtx) { | std::list<CWalletTx> &vWtx) { | ||||
DBErrors result = DBErrors::LOAD_OK; | DBErrors result = DBErrors::LOAD_OK; | ||||
try { | try { | ||||
int nMinVersion = 0; | int nMinVersion = 0; | ||||
if (m_batch.Read(DBKeys::MINVERSION, nMinVersion)) { | if (m_batch.Read(DBKeys::MINVERSION, nMinVersion)) { | ||||
if (nMinVersion > FEATURE_LATEST) { | if (nMinVersion > FEATURE_LATEST) { | ||||
return DBErrors::TOO_NEW; | return DBErrors::TOO_NEW; | ||||
} | } | ||||
Show All 20 Lines | try { | ||||
return DBErrors::CORRUPT; | return DBErrors::CORRUPT; | ||||
} | } | ||||
std::string strType; | std::string strType; | ||||
ssKey >> strType; | ssKey >> strType; | ||||
if (strType == DBKeys::TX) { | if (strType == DBKeys::TX) { | ||||
TxId txid; | TxId txid; | ||||
ssKey >> txid; | ssKey >> txid; | ||||
CWalletTx wtx(nullptr /* pwallet */, MakeTransactionRef()); | |||||
ssValue >> wtx; | |||||
txIds.push_back(txid); | txIds.push_back(txid); | ||||
vWtx.push_back(wtx); | vWtx.emplace_back(nullptr /* wallet */, nullptr /* tx */); | ||||
ssValue >> vWtx.back(); | |||||
} | } | ||||
} | } | ||||
pcursor->close(); | pcursor->close(); | ||||
} catch (...) { | } catch (...) { | ||||
result = DBErrors::CORRUPT; | result = DBErrors::CORRUPT; | ||||
} | } | ||||
return result; | return result; | ||||
} | } | ||||
DBErrors WalletBatch::ZapSelectTx(std::vector<TxId> &txIdsIn, | DBErrors WalletBatch::ZapSelectTx(std::vector<TxId> &txIdsIn, | ||||
std::vector<TxId> &txIdsOut) { | std::vector<TxId> &txIdsOut) { | ||||
// Build list of wallet TXs and hashes. | // Build list of wallet TXs and hashes. | ||||
std::vector<TxId> txIds; | std::vector<TxId> txIds; | ||||
std::vector<CWalletTx> vWtx; | std::list<CWalletTx> vWtx; | ||||
DBErrors err = FindWalletTx(txIds, vWtx); | DBErrors err = FindWalletTx(txIds, vWtx); | ||||
if (err != DBErrors::LOAD_OK) { | if (err != DBErrors::LOAD_OK) { | ||||
return err; | return err; | ||||
} | } | ||||
std::sort(txIds.begin(), txIds.end()); | std::sort(txIds.begin(), txIds.end()); | ||||
std::sort(txIdsIn.begin(), txIdsIn.end()); | std::sort(txIdsIn.begin(), txIdsIn.end()); | ||||
Show All 21 Lines | DBErrors WalletBatch::ZapSelectTx(std::vector<TxId> &txIdsIn, | ||||
} | } | ||||
if (delerror) { | if (delerror) { | ||||
return DBErrors::CORRUPT; | return DBErrors::CORRUPT; | ||||
} | } | ||||
return DBErrors::LOAD_OK; | return DBErrors::LOAD_OK; | ||||
} | } | ||||
DBErrors WalletBatch::ZapWalletTx(std::vector<CWalletTx> &vWtx) { | DBErrors WalletBatch::ZapWalletTx(std::list<CWalletTx> &vWtx) { | ||||
// Build list of wallet TXs. | // Build list of wallet TXs. | ||||
std::vector<TxId> txIds; | std::vector<TxId> txIds; | ||||
DBErrors err = FindWalletTx(txIds, vWtx); | DBErrors err = FindWalletTx(txIds, vWtx); | ||||
if (err != DBErrors::LOAD_OK) { | if (err != DBErrors::LOAD_OK) { | ||||
return err; | return err; | ||||
} | } | ||||
// Erase each wallet TX. | // Erase each wallet TX. | ||||
▲ Show 20 Lines • Show All 82 Lines • Show Last 20 Lines |