mirror of
https://github.com/AleziaKurdis/overte.git
synced 2025-04-08 06:32:35 +02:00
Add backup status getters
This commit is contained in:
parent
a7ca539899
commit
b76e1b9750
4 changed files with 66 additions and 24 deletions
|
@ -111,6 +111,42 @@ void AssetsBackupHandler::checkForAssetsToDelete() {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
std::pair<bool, float> AssetsBackupHandler::isAvailable(QString filePath) {
|
||||
auto it = find_if(begin(_backups), end(_backups), [&](const std::vector<AssetServerBackup>::value_type& value) {
|
||||
return value.filePath == filePath;
|
||||
});
|
||||
if (it == end(_backups)) {
|
||||
return { true, 1.0f };
|
||||
}
|
||||
|
||||
float progress = (float)it->mappings.size();
|
||||
for (const auto& mapping : it->mappings) {
|
||||
if (_assetsLeftToRequest.find(mapping.second) != end(_assetsLeftToRequest)) {
|
||||
progress -= 1.0f;
|
||||
}
|
||||
}
|
||||
progress /= (float)it->mappings.size();
|
||||
|
||||
return { false, progress };
|
||||
}
|
||||
|
||||
std::pair<bool, float> AssetsBackupHandler::getRecoveryStatus() {
|
||||
if (_assetsLeftToUpload.empty() &&
|
||||
_mappingsLeftToSet.empty() &&
|
||||
_mappingsLeftToDelete.empty() &&
|
||||
_mappingRequestsInFlight == 0) {
|
||||
return { false, 1.0f };
|
||||
}
|
||||
|
||||
float progress = (float)_numRestoreOperations;
|
||||
progress -= (float)_assetsLeftToUpload.size();
|
||||
progress -= (float)_mappingRequestsInFlight;
|
||||
progress /= (float)_numRestoreOperations;
|
||||
|
||||
return { true, progress };
|
||||
}
|
||||
|
||||
void AssetsBackupHandler::loadBackup(QuaZip& zip) {
|
||||
Q_ASSERT(QThread::currentThread() == thread());
|
||||
|
||||
|
@ -451,6 +487,11 @@ void AssetsBackupHandler::computeServerStateDifference(const AssetUtils::Mapping
|
|||
}
|
||||
}
|
||||
|
||||
_numRestoreOperations = _assetsLeftToUpload.size() + _mappingsLeftToSet.size();
|
||||
if (!_mappingsLeftToDelete.empty()) {
|
||||
++_numRestoreOperations;
|
||||
}
|
||||
|
||||
qCDebug(asset_backup) << "Mappings to set:" << _mappingsLeftToSet.size();
|
||||
qCDebug(asset_backup) << "Mappings to del:" << _mappingsLeftToDelete.size();
|
||||
qCDebug(asset_backup) << "Assets to upload:" << _assetsLeftToUpload.size();
|
||||
|
@ -461,8 +502,6 @@ void AssetsBackupHandler::restoreAllAssets() {
|
|||
}
|
||||
|
||||
void AssetsBackupHandler::restoreNextAsset() {
|
||||
startOperation();
|
||||
|
||||
if (_assetsLeftToUpload.empty()) {
|
||||
updateMappings();
|
||||
return;
|
||||
|
@ -500,9 +539,7 @@ void AssetsBackupHandler::updateMappings() {
|
|||
qCCritical(asset_backup) << " Error:" << request->getErrorString();
|
||||
}
|
||||
|
||||
if (--_mappingRequestsInFlight == 0) {
|
||||
stopOperation();
|
||||
}
|
||||
--_mappingRequestsInFlight;
|
||||
|
||||
request->deleteLater();
|
||||
});
|
||||
|
@ -519,9 +556,7 @@ void AssetsBackupHandler::updateMappings() {
|
|||
qCCritical(asset_backup) << " Error:" << request->getErrorString();
|
||||
}
|
||||
|
||||
if (--_mappingRequestsInFlight == 0) {
|
||||
stopOperation();
|
||||
}
|
||||
--_mappingRequestsInFlight;
|
||||
|
||||
request->deleteLater();
|
||||
});
|
||||
|
|
|
@ -31,13 +31,16 @@ class AssetsBackupHandler : public QObject, public BackupHandlerInterface {
|
|||
public:
|
||||
AssetsBackupHandler(const QString& backupDirectory);
|
||||
|
||||
void loadBackup(QuaZip& zip);
|
||||
void createBackup(QuaZip& zip);
|
||||
void recoverBackup(QuaZip& zip);
|
||||
void deleteBackup(QuaZip& zip);
|
||||
void consolidateBackup(QuaZip& zip);
|
||||
std::pair<bool, float> isAvailable(QString filePath) override;
|
||||
std::pair<bool, float> getRecoveryStatus() override;
|
||||
|
||||
bool operationInProgress() const { return _operationInProgress; }
|
||||
void loadBackup(QuaZip& zip) override;
|
||||
void createBackup(QuaZip& zip) override;
|
||||
void recoverBackup(QuaZip& zip) override;
|
||||
void deleteBackup(QuaZip& zip) override;
|
||||
void consolidateBackup(QuaZip& zip) override;
|
||||
|
||||
bool operationInProgress() { return getRecoveryStatus().first; }
|
||||
|
||||
private:
|
||||
void setupRefreshTimer();
|
||||
|
@ -48,9 +51,6 @@ private:
|
|||
void checkForMissingAssets();
|
||||
void checkForAssetsToDelete();
|
||||
|
||||
void startOperation() { _operationInProgress = true; }
|
||||
void stopOperation() { _operationInProgress = false; }
|
||||
|
||||
void downloadMissingFiles(const AssetUtils::Mappings& mappings);
|
||||
void downloadNextMissingFile();
|
||||
bool writeAssetFile(const AssetUtils::AssetHash& hash, const QByteArray& data);
|
||||
|
@ -73,8 +73,6 @@ private:
|
|||
bool corruptedBackup;
|
||||
};
|
||||
|
||||
bool _operationInProgress { false };
|
||||
|
||||
// Internal storage for backups on disk
|
||||
bool _allBackupsLoadedSuccessfully { false };
|
||||
std::vector<AssetServerBackup> _backups;
|
||||
|
@ -89,6 +87,7 @@ private:
|
|||
std::vector<std::pair<AssetUtils::AssetPath, AssetUtils::AssetHash>> _mappingsLeftToSet;
|
||||
AssetUtils::AssetPathList _mappingsLeftToDelete;
|
||||
int _mappingRequestsInFlight { 0 };
|
||||
int _numRestoreOperations { 0 }; // Used to compute a restore progress.
|
||||
};
|
||||
|
||||
#endif /* hifi_AssetsBackupHandler_h */
|
||||
|
|
|
@ -20,6 +20,11 @@ class BackupHandlerInterface {
|
|||
public:
|
||||
virtual ~BackupHandlerInterface() = default;
|
||||
|
||||
virtual std::pair<bool, float> isAvailable(QString filePath) = 0;
|
||||
|
||||
// Returns whether a recovery is ongoing and a progress between 0 and 1 if one is.
|
||||
virtual std::pair<bool, float> getRecoveryStatus() = 0;
|
||||
|
||||
virtual void loadBackup(QuaZip& zip) = 0;
|
||||
virtual void createBackup(QuaZip& zip) = 0;
|
||||
virtual void recoverBackup(QuaZip& zip) = 0;
|
||||
|
|
|
@ -20,19 +20,22 @@ class EntitiesBackupHandler : public BackupHandlerInterface {
|
|||
public:
|
||||
EntitiesBackupHandler(QString entitiesFilePath, QString entitiesReplacementFilePath);
|
||||
|
||||
void loadBackup(QuaZip& zip) {}
|
||||
std::pair<bool, float> isAvailable(QString filePath) override { return { true, 1.0f }; }
|
||||
std::pair<bool, float> getRecoveryStatus() override { return { false, 1.0f }; }
|
||||
|
||||
void loadBackup(QuaZip& zip) override {}
|
||||
|
||||
// Create a skeleton backup
|
||||
void createBackup(QuaZip& zip);
|
||||
void createBackup(QuaZip& zip) override;
|
||||
|
||||
// Recover from a full backup
|
||||
void recoverBackup(QuaZip& zip);
|
||||
void recoverBackup(QuaZip& zip) override;
|
||||
|
||||
// Delete a skeleton backup
|
||||
void deleteBackup(QuaZip& zip) {}
|
||||
void deleteBackup(QuaZip& zip) override {}
|
||||
|
||||
// Create a full backup
|
||||
void consolidateBackup(QuaZip& zip) {}
|
||||
void consolidateBackup(QuaZip& zip) override {}
|
||||
|
||||
private:
|
||||
QString _entitiesFilePath;
|
||||
|
|
Loading…
Reference in a new issue