void WalletSerializer::save(const std::string& password, Common::IOutputStream& destination, bool saveDetails, bool saveCache) { CryptoContext cryptoContext = generateCryptoContext(password); CryptoNote::BinaryOutputStreamSerializer s(destination); s.beginObject("wallet"); saveVersion(destination); saveIv(destination, cryptoContext.iv); saveKeys(destination, cryptoContext); saveWallets(destination, saveCache, cryptoContext); saveFlags(saveDetails, saveCache, destination, cryptoContext); if (saveDetails) { saveTransactions(destination, cryptoContext); saveTransfers(destination, cryptoContext); } if (saveCache) { saveBalances(destination, saveCache, cryptoContext); saveTransfersSynchronizer(destination, cryptoContext); saveSpentOutputs(destination, cryptoContext); saveUnlockTransactionsJobs(destination, cryptoContext); saveChange(destination, cryptoContext); } s.endObject(); }
void WalletSerializerV2::save(Common::IOutputStream& destination, WalletSaveLevel saveLevel) { CryptoNote::BinaryOutputStreamSerializer s(destination); uint8_t saveLevelValue = static_cast<uint8_t>(saveLevel); s(saveLevelValue, "saveLevel"); saveKeyListAndBanalces(s, saveLevel == WalletSaveLevel::SAVE_ALL); if (saveLevel == WalletSaveLevel::SAVE_KEYS_AND_TRANSACTIONS || saveLevel == WalletSaveLevel::SAVE_ALL) { saveTransactions(s); saveTransfers(s); } if (saveLevel == WalletSaveLevel::SAVE_ALL) { saveTransfersSynchronizer(s); saveUnlockTransactionsJobs(s); s(m_uncommitedTransactions, "uncommitedTransactions"); } s(m_extra, "extra"); }