void CatchupWork::onFailureRaise() { mApp.getCatchupManager().historyCaughtup(); asio::error_code ec = std::make_error_code(std::errc::timed_out); mProgressHandler(ec, ProgressState::FINISHED, LedgerHeaderHistoryEntry{}); }
void IHTTPDownloader::FireProgressEvent( double total, double now ) { if (mProgressHandler) { SingleDownloadingProgressEventArg eventArg(*this,total,now); mProgressHandler(this,eventArg); } }
Work::State CatchupWork::onSuccess() { if (!hasAnyLedgersToCatchupTo()) { mApp.getCatchupManager().historyCaughtup(); asio::error_code ec = std::make_error_code(std::errc::invalid_argument); mProgressHandler(ec, ProgressState::FINISHED, LedgerHeaderHistoryEntry{}); return WORK_SUCCESS; } auto resolvedConfiguration = mCatchupConfiguration.resolve(mRemoteState.currentLedger); auto catchupRange = makeCatchupRange(mLastClosedLedgerAtReset, resolvedConfiguration, mApp.getHistoryManager()); auto ledgerRange = catchupRange.first; auto checkpointRange = CheckpointRange{ledgerRange, mApp.getHistoryManager()}; if (downloadLedgers(checkpointRange)) { return WORK_PENDING; } if (verifyLedgers(ledgerRange)) { return WORK_PENDING; } if (catchupRange.second) { if (!alreadyHaveBucketsHistoryArchiveState(checkpointRange.first())) { if (downloadBucketsHistoryArchiveState(checkpointRange.first())) { return WORK_PENDING; } } else { mApplyBucketsRemoteState = mRemoteState; } if (downloadBuckets()) { return WORK_PENDING; } if (applyBuckets()) { return WORK_PENDING; } if (!mBucketsAppliedEmitted) { mProgressHandler({}, ProgressState::APPLIED_BUCKETS, mFirstVerified); mBucketsAppliedEmitted = true; } } else { CLOG(INFO, "History") << "Catchup downloading history archive " "state for applying buckets at checkpoint " << checkpointRange.first() << " not needed"; } if (downloadTransactions(checkpointRange)) { return WORK_PENDING; } if (applyTransactions(ledgerRange)) { return WORK_PENDING; } mProgressHandler({}, ProgressState::APPLIED_TRANSACTIONS, mLastApplied); mProgressHandler({}, ProgressState::FINISHED, mLastApplied); mApp.getCatchupManager().historyCaughtup(); return WORK_SUCCESS; }