Interface over passing ticks

This commit is contained in:
2025-07-04 09:11:05 -07:00
parent 93598255c0
commit 8f7fd02ba8
17 changed files with 124 additions and 105 deletions

View File

@ -17,6 +17,9 @@ namespace View_by_Distance.Windows;
public partial class Windows : IWindows, IDisposable
{
public long Ticks { get; init; }
public int? CurrentTick => _ProgressBar?.CurrentTick;
private ProgressBar? _ProgressBar;
private readonly ProgressBarOptions _ProgressBarOptions;
@ -157,9 +160,9 @@ public partial class Windows : IWindows, IDisposable
throw new NullReferenceException(nameof(console));
IWindows windows = this;
LogNetToHoursSince(logger);
long ticks = DateTime.Now.Ticks;
Ticks = DateTime.Now.Ticks;
_ProgressBarOptions = new() { ProgressCharacter = '─', ProgressBarOnBottom = true, DisableBottomPercentage = true };
WindowsWork(logger, appSettings, windows, ticks);
WindowsWork(logger, appSettings, windows);
}
private static void LogNetToHoursSince(ILogger<Program>? logger)
@ -178,7 +181,7 @@ public partial class Windows : IWindows, IDisposable
logger?.LogInformation("It has been {net9TotalHours} hours since net9 was released", net9TotalHours);
}
private void WindowsWork(ILogger<Program>? logger, AppSettings appSettings, IWindows windows, long ticks)
private void WindowsWork(ILogger<Program>? logger, AppSettings appSettings, IWindows windows)
{
if (appSettings.WindowsSettings.VerifyOnly && !string.IsNullOrEmpty(appSettings.WindowsSettings.Host) && !string.IsNullOrEmpty(appSettings.WindowsSettings.Page))
Verify(logger, appSettings, windows, appSettings.WindowsSettings.Host, appSettings.WindowsSettings.Page);
@ -187,8 +190,8 @@ public partial class Windows : IWindows, IDisposable
string sourceDirectory = Path.GetFullPath(appSettings.ResultSettings.RootDirectory);
if (!Directory.Exists(sourceDirectory))
_ = Directory.CreateDirectory(sourceDirectory);
logger?.LogInformation("{Ticks} {RootDirectory}", ticks, sourceDirectory);
WindowsWork(logger, appSettings, windows, ticks, sourceDirectory);
logger?.LogInformation("{Ticks} {RootDirectory}", windows.Ticks, sourceDirectory);
WindowsWork(logger, appSettings, windows, sourceDirectory);
}
}
@ -271,7 +274,7 @@ public partial class Windows : IWindows, IDisposable
messages.Add($"!{nginxFileSystem.Name}.StartsWith({paddedId})");
}
private void WindowsWork(ILogger<Program>? logger, AppSettings appSettings, IWindows windows, long ticks, string sourceDirectory)
private void WindowsWork(ILogger<Program>? logger, AppSettings appSettings, IWindows windows, string sourceDirectory)
{
ReadOnlyCollection<FirstPass> results;
ReadOnlyCollection<string> files = Directory.GetFiles(sourceDirectory, "*", SearchOption.AllDirectories).AsReadOnly();
@ -286,7 +289,7 @@ public partial class Windows : IWindows, IDisposable
else
results = WindowsAsynchronousWork(appSettings, windows, files, metadata, appSettingsMaxDegreeOfParallelism);
string json = JsonSerializer.Serialize(results, FirstPassCollectionSourceGenerationContext.Default.ListFirstPass);
File.WriteAllText(Path.Combine(sourceDirectory, $"{ticks}.json"), json);
File.WriteAllText(Path.Combine(sourceDirectory, $"{windows.Ticks}.json"), json);
}
private static ReadOnlyCollection<FirstPass> WindowsSynchronousWork(ILogger<Program>? logger, AppSettings appSettings, IWindows windows, IEnumerable<string> files, A_Metadata metadata)
@ -394,7 +397,7 @@ public partial class Windows : IWindows, IDisposable
List<MetadataGroup> metadataGroups = [];
ParallelOptions parallelOptions = new() { MaxDegreeOfParallelism = appSettingsMaxDegreeOfParallelism };
files.AsParallel().ForAll(IMetadata.SetExifDirectoryCollection(windows, appSettings.ResultSettings, appSettings.MetadataSettings, metadata, distinct, metadataGroups));
if (_ProgressBar?.CurrentTick != results.Count)
if (windows?.CurrentTick != results.Count)
throw new NotSupportedException();
foreach (MetadataGroup metadataGroup in metadataGroups)
{