protected void OnUpdateCompleted(UpdaterStatus status) { if (UpdateCompleted != null) { UpdateCompleted(this, status); } }
// Called from the worker thread public void HandleUpdateStarted(object sender, UpdaterStatus status) { SetStatusText("Updating Media ..."); lock (this) { bytesNeeded = status.bytes; } UpdateProgress(); }
private static void HandleUpdateCompleted(object sender, UpdaterStatus msg) { Console.WriteLine("Update Succeeded"); }
private static void HandleUpdateStarted(object sender, UpdaterStatus msg) { Console.WriteLine("Updating Media ..."); }
public void ProcessManifest(string currentManifest) { if (currentManifest != null) { ReadManifest(currentManifestDict, currentManifest); } OnStateChanged(UpdateState.FetchingManifest); string baseDir = ""; FileFetcher.FetchFile("MANIFEST", sourceUrl, baseDir); ReadManifest(targetManifestDict, "MANIFEST"); long bytesNeeded = 0; int filesNeeded = 0; List <string> newFiles = new List <string>(); List <string> removedFiles = new List <string>(); List <string> modifiedFiles = new List <string>(); foreach (string key in targetManifestDict.Keys) { long bytes = long.Parse(targetManifestDict[key].length); if (!currentManifestDict.ContainsKey(key)) { newFiles.Add(key); bytesNeeded += bytes; filesNeeded++; } else if (currentManifestDict[key].digest != targetManifestDict[key].digest) { modifiedFiles.Add(key); bytesNeeded += bytes; filesNeeded++; } } foreach (string key in currentManifestDict.Keys) { if (!targetManifestDict.ContainsKey(key)) { removedFiles.Add(key); } } // At this point, we are about to start fetching new files, // so remove our existing manifest. This will cause us to // do a full scan if our download is interrupted, which will // be more efficient than fetching everything again. File.Delete(currentManifest); UpdaterStatus updateStatus = new UpdaterStatus(); updateStatus.files = filesNeeded; updateStatus.bytes = bytesNeeded; OnUpdateStarted(updateStatus); OnStateChanged(UpdateState.UpdatingFiles); foreach (string file in newFiles) { UpdateFileStatus ufs = new UpdateFileStatus(); ufs.file = file; ufs.length = long.Parse(targetManifestDict[file].length); OnFileFetchStarted(ufs); FileFetcher.FetchFile(file, sourceUrl, baseDir); OnFileFetchEnded(ufs); } foreach (string file in modifiedFiles) { UpdateFileStatus ufs = new UpdateFileStatus(); ufs.file = file; ufs.length = long.Parse(targetManifestDict[file].length); OnFileFetchStarted(ufs); FileFetcher.FetchFile(file, sourceUrl, baseDir); OnFileFetchEnded(ufs); } foreach (string file in removedFiles) { UpdateFileStatus ufs = new UpdateFileStatus(); ufs.file = file; File.Delete(file); OnFileRemoved(ufs); } File.Copy("MANIFEST", "MANIFEST.cur"); OnUpdateCompleted(updateStatus); OnStateChanged(UpdateState.UpdateEnded); }
protected void OnUpdateStarted(UpdaterStatus status) { if (UpdateStarted != null) UpdateStarted(this, status); }
public void ProcessManifest(string currentManifest) { if (currentManifest != null) ReadManifest(currentManifestDict, currentManifest); OnStateChanged(UpdateState.FetchingManifest); string baseDir = ""; FileFetcher.FetchFile("MANIFEST", sourceUrl, baseDir); ReadManifest(targetManifestDict, "MANIFEST"); long bytesNeeded = 0; int filesNeeded = 0; List<string> newFiles = new List<string>(); List<string> removedFiles = new List<string>(); List<string> modifiedFiles = new List<string>(); foreach (string key in targetManifestDict.Keys) { long bytes = long.Parse(targetManifestDict[key].length); if (!currentManifestDict.ContainsKey(key)) { newFiles.Add(key); bytesNeeded += bytes; filesNeeded++; } else if (currentManifestDict[key].digest != targetManifestDict[key].digest) { modifiedFiles.Add(key); bytesNeeded += bytes; filesNeeded++; } } foreach (string key in currentManifestDict.Keys) { if (!targetManifestDict.ContainsKey(key)) removedFiles.Add(key); } // At this point, we are about to start fetching new files, // so remove our existing manifest. This will cause us to // do a full scan if our download is interrupted, which will // be more efficient than fetching everything again. File.Delete(currentManifest); UpdaterStatus updateStatus = new UpdaterStatus(); updateStatus.files = filesNeeded; updateStatus.bytes = bytesNeeded; OnUpdateStarted(updateStatus); OnStateChanged(UpdateState.UpdatingFiles); foreach (string file in newFiles) { UpdateFileStatus ufs = new UpdateFileStatus(); ufs.file = file; ufs.length = long.Parse(targetManifestDict[file].length); OnFileFetchStarted(ufs); FileFetcher.FetchFile(file, sourceUrl, baseDir); OnFileFetchEnded(ufs); } foreach (string file in modifiedFiles) { UpdateFileStatus ufs = new UpdateFileStatus(); ufs.file = file; ufs.length = long.Parse(targetManifestDict[file].length); OnFileFetchStarted(ufs); FileFetcher.FetchFile(file, sourceUrl, baseDir); OnFileFetchEnded(ufs); } foreach (string file in removedFiles) { UpdateFileStatus ufs = new UpdateFileStatus(); ufs.file = file; File.Delete(file); OnFileRemoved(ufs); } File.Copy("MANIFEST", "MANIFEST.cur"); OnUpdateCompleted(updateStatus); OnStateChanged(UpdateState.UpdateEnded); }
// Called from the worker thread public void HandleUpdateStarted(object sender, UpdaterStatus status) { SetStatusText("Updating Media ..."); lock (this) { bytesNeeded = status.bytes; } UpdateProgress(); }