protected void OnUpdateCompleted(UpdaterStatus status)
 {
     if (UpdateCompleted != null)
     {
         UpdateCompleted(this, status);
     }
 }
Example #2
0
 // 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();
 }