aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs60
1 files changed, 43 insertions, 17 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs
index 537e652e6..f1c722d96 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs
@@ -17,6 +17,7 @@ using Tango.Core.ExtensionMethods;
using Tango.Core.Helpers;
using Tango.Core.IO;
using Tango.Integration.Operation;
+using Tango.Logging;
using Tango.PMR.Synchronization;
using Tango.PPC.Common.Application;
using Tango.PPC.Common.Connection;
@@ -42,6 +43,7 @@ namespace Tango.PPC.Common.MachineSetup
private IUnifiedWriteFilterManager _uwf;
private IOperationSystemManager _windows_manager;
private PPCWebClient _client;
+ private List<LogItemBase> _logs;
#region Events
@@ -80,6 +82,18 @@ namespace Tango.PPC.Common.MachineSetup
_remoteAssistance = remoteAssistance;
_uwf = unifiedWriterFilterManager;
_windows_manager = operationSystemManager;
+
+ _logs = new List<LogItemBase>();
+ LogManager.NewLog += LogManager_NewLog;
+ }
+
+ #endregion
+
+ #region Event Handlers
+
+ private void LogManager_NewLog(object sender, LogItemBase e)
+ {
+ _logs.Add(e);
}
#endregion
@@ -114,6 +128,7 @@ namespace Tango.PPC.Common.MachineSetup
Token = response.NotifyCompletedToken,
Status = BL.Enumerations.TangoUpdateStatuses.SetupFailed,
FailedReason = ex.FlattenMessage(),
+ FailedLog = GetLogsStringAndClear(),
});
}
catch (Exception xx)
@@ -144,6 +159,13 @@ namespace Tango.PPC.Common.MachineSetup
}
}
+ private String GetLogsStringAndClear()
+ {
+ String logsString = String.Join(Environment.NewLine, _logs.ToList().Select(x => x.ToString()));
+ _logs.Clear();
+ return logsString;
+ }
+
#endregion
#region Public Methods
@@ -156,6 +178,8 @@ namespace Tango.PPC.Common.MachineSetup
/// <returns></returns>
public async Task<MachineSetupResult> Setup(string serialNumber)
{
+ _logs.Clear();
+
TaskCompletionSource<MachineSetupResult> result = new TaskCompletionSource<MachineSetupResult>();
MachineSetupResponse setup_response = null;
@@ -249,27 +273,29 @@ namespace Tango.PPC.Common.MachineSetup
LogManager.Log("Downloading software package...");
- long fileSize = 0;
- UpdateProgress("Downloading software package", "Downloading...", false);
-
- await Task.Factory.StartNew(() =>
+ using (AutoFileDownloader downloader = new AutoFileDownloader(setup_response.BlobAddress, setup_response.CdnAddress, tempFile))
{
- using (FileStreamWrapper fs = new FileStreamWrapper(tempFile.Path, FileMode.Create, (current) =>
+ await downloader.ResolveMode();
+
+ if (downloader.Mode == AutoFileDownloader.DownloadMode.Standard)
{
- UpdateProgress("Downloading software package", "Downloading...", false, current, fileSize);
- }))
+ LogManager.Log($"Connecting to storage CDN with address {downloader.Address}");
+ }
+ else
{
-
- LogManager.Log($"Connecting to storage blob with address {setup_response.BlobAddress}");
- CloudBlockBlob blob = new CloudBlockBlob(new Uri(setup_response.BlobAddress));
- LogManager.Log("Fetching blob attributes...");
- blob.FetchAttributes();
- fileSize = blob.Properties.Length;
- LogManager.Log("Download size: " + fileSize + " bytes.");
- LogManager.Log("Starting blob download...");
- blob.DownloadToStream(fs);
+ LogManager.Log($"Connecting to storage blob with address {downloader.Address}");
}
- });
+
+ downloader.Progress += (x, e) =>
+ {
+ UpdateProgress("Downloading software package", "Downloading...", false, e.Current, e.Total);
+ };
+
+ var size = await downloader.GetFileSize();
+ LogManager.Log("Download size: " + size + " bytes.");
+ LogManager.Log("Starting file download...");
+ await downloader.Download();
+ }
UpdateProgress("Downloading software package", "Extracting package...");