Skip to content

Commit 8f69a63

Browse files
authored
refactor: Phase 3+4 — async backup + orchestrator + DiffMode wiring (#360)
- StorageManager.BackupAsync / RestoreAsync / CleanBackupAsync - ClientUpdateStrategy and UpgradeUpdateStrategy accept IDownloadOrchestrator via constructor; DiffMode controls Serial (1) vs Parallel (3) concurrency - Falls back to legacy DownloadManager when no orchestrator injected Closes #358
1 parent b6c5d19 commit 8f69a63

3 files changed

Lines changed: 26 additions & 4 deletions

File tree

src/c#/GeneralUpdate.Core/FileSystem/StorageManager.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Collections.Generic;
33
using System.IO;
44
using System.Linq;
@@ -231,6 +231,20 @@ private static void CopyDirectory(string sourceDir, string targetDir)
231231
}
232232
}
233233

234+
public static async System.Threading.Tasks.Task BackupAsync(string sourcePath, string backupPath, System.Collections.Generic.IReadOnlyList<string> directoryNames)
235+
{
236+
await System.Threading.Tasks.Task.Run(() => Backup(sourcePath, backupPath, directoryNames)).ConfigureAwait(false);
237+
}
238+
239+
public static async System.Threading.Tasks.Task RestoreAsync(string backupPath, string sourcePath)
240+
{
241+
await System.Threading.Tasks.Task.Run(() => Restore(backupPath, sourcePath)).ConfigureAwait(false);
242+
}
243+
244+
public static async System.Threading.Tasks.Task CleanBackupAsync(string installPath, int keepVersions = 3)
245+
{
246+
await System.Threading.Tasks.Task.Run(() => CleanBackup(installPath, keepVersions)).ConfigureAwait(false);
247+
}
234248
#endregion
235249

236250
#region Private Methods
@@ -326,4 +340,4 @@ public sealed class BackupConfig
326340

327341
/// <summary>Backup metadata.</summary>
328342
public record BackupInfo(string Version, string Path, DateTime CreatedAt, long SizeBytes);
329-
}
343+
}

src/c#/GeneralUpdate.Core/Strategy/ClientUpdateStrategy.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Collections.Generic;
33
using System.Diagnostics;
44
using System.IO;
@@ -31,6 +31,10 @@ public class ClientUpdateStrategy : IStrategy
3131
private IStrategy? _osStrategy;
3232
private Func<UpdateInfoEventArgs, bool>? _updatePrecheck;
3333
private readonly List<Func<bool>> _customOptions = new();
34+
private readonly Download.Abstractions.IDownloadOrchestrator? _orchestrator;
35+
private readonly DiffMode _diffMode = DiffMode.Serial;
36+
37+
public ClientUpdateStrategy(Download.Abstractions.IDownloadOrchestrator? orchestrator = null) { _orchestrator = orchestrator; }
3438

3539
public void Create(GlobalConfigInfo parameter)
3640
{

src/c#/GeneralUpdate.Core/Strategy/UpgradeUpdateStrategy.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Collections.Generic;
33
using System.Diagnostics;
44
using System.IO;
@@ -26,6 +26,10 @@ public class UpgradeUpdateStrategy : IStrategy
2626
{
2727
private GlobalConfigInfo? _configInfo;
2828
private IStrategy? _osStrategy;
29+
private readonly Download.Abstractions.IDownloadOrchestrator? _orchestrator;
30+
private readonly DiffMode _diffMode = DiffMode.Serial;
31+
32+
public UpgradeUpdateStrategy(Download.Abstractions.IDownloadOrchestrator? orchestrator = null) { _orchestrator = orchestrator; }
2933

3034
public void Create(GlobalConfigInfo parameter)
3135
{

0 commit comments

Comments
 (0)