void ModuleMgr::updateSucceed() { // Every thing is correctly downloaded, do the following // 1. rename temporary manifest to valid manifest _fileUtils->renameFile(_storagePath, TEMP_MANIFEST_FILENAME, MANIFEST_FILENAME); // 4. decompress all compressed files decompressDownloadedZip(); // 5. Set update state _updateState = State::UP_TO_DATE; // 6. Notify finished event dispatchUpdateEvent(ModuleMgrEvent::EventCode::UPDATE_FINISHED); }
void AssetsManagerEx::onSuccess(const std::string &/*srcUrl*/, const std::string &storagePath, const std::string &customId) { if (customId == VERSION_ID) { _updateState = State::VERSION_LOADED; parseVersion(); } else if (customId == MANIFEST_ID) { _updateState = State::MANIFEST_LOADED; parseManifest(); } else { bool ok = true; auto &assets = _remoteManifest->getAssets(); auto assetIt = assets.find(customId); if (assetIt != assets.end()) { Manifest::Asset asset = assetIt->second; if (_verifyCallback != nullptr) { ok = _verifyCallback(storagePath, asset); } } if (ok) { bool compressed = assetIt != assets.end() ? assetIt->second.compressed : false; if (compressed) { decompressDownloadedZip(customId, storagePath); } else { fileSuccess(customId, storagePath); } } else { fileError(customId, "Asset file verification failed after downloaded"); } } }
void AssetsManager::updateSucceed() { // Every thing is correctly downloaded, do the following // 1. rename temporary manifest to valid manifest _fileUtils->renameFile(_storagePath, TEMP_MANIFEST_FILENAME, MANIFEST_FILENAME); // 2. swap the localManifest if (_localManifest != nullptr) _localManifest->release(); _localManifest = _remoteManifest; _remoteManifest = nullptr; // 3. make local manifest take effect prepareLocalManifest(); // 4. decompress all compressed files decompressDownloadedZip(); // 5. Set update state _updateState = State::UP_TO_DATE; // 6. Notify finished event dispatchUpdateEvent(EventAssetsManager::EventCode::UPDATE_FINISHED); }
void ModuleMgr::onSuccess(const std::string &srcUrl, const std::string &storagePath, const std::string &customId) { CCLOG("ModuleMgr::onSuccess: %s %s", customId.c_str(), storagePath.c_str()); if (customId == MANIFEST_ID) { _updateState = State::MANIFEST_LOADED; parseManifest(); } else if (customId == BATCH_UPDATE_ID) { // Finished with error check if (_failedUnits.size() > 0 || _totalWaitToDownload > 0) { // Save current download manifest information for resuming //_tempManifest->saveToFile(_tempManifestPath); decompressDownloadedZip(); _updateState = State::FAIL_TO_UPDATE; dispatchUpdateEvent(ModuleMgrEvent::EventCode::UPDATE_FAILED); } else { updateSucceed(); } } else { auto assets = _remoteManifest->getAssets(); auto assetIt = assets.find(customId); if (assetIt != assets.end()) { // Set download state to SUCCESSED _remoteManifest->setAssetDownloadState(customId, ModuleManifest::DownloadState::SUCCESSED); // Add file to need decompress list if (assetIt->second.compressed) { _compressedFiles.push_back(storagePath); } } auto unitIt = _downloadUnits.find(customId); if (unitIt != _downloadUnits.end()) { // Reduce count only when unit found in _downloadUnits _totalWaitToDownload--; _percentByFile = 100 * (float)(_totalToDownload - _totalWaitToDownload) / _totalToDownload; // Notify progression event dispatchUpdateEvent(ModuleMgrEvent::EventCode::UPDATE_PROGRESSION, ""); } // Notify asset updated event dispatchUpdateEvent(ModuleMgrEvent::EventCode::ASSET_UPDATED, customId); unitIt = _failedUnits.find(customId); // Found unit and delete it if (unitIt != _failedUnits.end()) { // Remove from failed units list _failedUnits.erase(unitIt); } } }