void WalletSerializer::loadCurrentVersion(Common::IInputStream& source, const std::string& password) { CryptoNote::CryptoContext cryptoContext; bool details = false; bool cache = false; loadIv(source, cryptoContext.iv); generateKey(password, cryptoContext.key); loadKeys(source, cryptoContext); checkKeys(); loadWallets(source, cryptoContext); subscribeWallets(); loadFlags(details, cache, source, cryptoContext); if (details) { loadTransactions(source, cryptoContext); loadTransfers(source, cryptoContext); } if (cache) { loadBalances(source, cryptoContext); loadTransfersSynchronizer(source, cryptoContext); loadSpentOutputs(source, cryptoContext); loadUnlockTransactionsJobs(source, cryptoContext); loadChange(source, cryptoContext); } if (details && cache) { updateTransactionsBaseStatus(); } }
void WalletSerializerV1::loadWallet(Common::IInputStream& source, const Crypto::chacha8_key& key, uint32_t version) { CryptoContext cryptoContext; bool details = false; bool cache = false; loadIv(source, cryptoContext.iv); cryptoContext.key = key; loadKeys(source, cryptoContext); checkKeys(); loadWallets(source, cryptoContext); subscribeWallets(); loadFlags(details, cache, source, cryptoContext); if (details) { loadTransactions(source, cryptoContext); loadTransfers(source, cryptoContext, version); } if (version < 5) { updateTransfersSign(); cache = false; } if (cache) { loadBalances(source, cryptoContext); loadTransfersSynchronizer(source, cryptoContext); if (version < 5) { loadObsoleteSpentOutputs(source, cryptoContext); } loadUnlockTransactionsJobs(source, cryptoContext); if (version < 5) { loadObsoleteChange(source, cryptoContext); } if (version > 3) { loadUncommitedTransactions(source, cryptoContext); } } else { resetCachedBalance(); } if (details && cache) { updateTransactionsBaseStatus(); } }
TransferApi::TransferApi(Session* aSession) : SubscribableApiModule(aSession, Access::ANY), timer(getTimer([this] { onTimer(); }, 1000)), view("transfer_view", this, TransferUtils::propertyHandler, std::bind(&TransferApi::getTransfers, this)) { DownloadManager::getInstance()->addListener(this); UploadManager::getInstance()->addListener(this); ConnectionManager::getInstance()->addListener(this); METHOD_HANDLER("tranferred_bytes", Access::ANY, ApiRequest::METHOD_GET, (), false, TransferApi::handleGetTransferredBytes); METHOD_HANDLER("stats", Access::ANY, ApiRequest::METHOD_GET, (), false, TransferApi::handleGetTransferStats); METHOD_HANDLER("force", Access::TRANSFERS, ApiRequest::METHOD_POST, (TOKEN_PARAM), false, TransferApi::handleForce); METHOD_HANDLER("disconnect", Access::TRANSFERS, ApiRequest::METHOD_POST, (TOKEN_PARAM), false, TransferApi::handleDisconnect); createSubscription("transfer_statistics"); timer->start(false); loadTransfers(); }
void WalletSerializerV2::load(Common::IInputStream& source, uint8_t version) { CryptoNote::BinaryInputStreamSerializer s(source); uint8_t saveLevelValue; s(saveLevelValue, "saveLevel"); WalletSaveLevel saveLevel = static_cast<WalletSaveLevel>(saveLevelValue); loadKeyListAndBanalces(s, saveLevel == WalletSaveLevel::SAVE_ALL); if (saveLevel == WalletSaveLevel::SAVE_KEYS_AND_TRANSACTIONS || saveLevel == WalletSaveLevel::SAVE_ALL) { loadTransactions(s); loadTransfers(s); } if (saveLevel == WalletSaveLevel::SAVE_ALL) { loadTransfersSynchronizer(s); loadUnlockTransactionsJobs(s); s(m_uncommitedTransactions, "uncommitedTransactions"); } s(m_extra, "extra"); }