Interface over passing ticks
This commit is contained in:
@ -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)
|
||||
{
|
||||
|
Reference in New Issue
Block a user