Add foundation

This commit is contained in:
TheXamlGuy
2024-04-13 11:29:32 +01:00
parent 6f31aa8513
commit 053d8a851e
264 changed files with 3428 additions and 4683 deletions
@@ -0,0 +1,46 @@
namespace Toolkit.Foundation;
public class ConfigurationMonitor<TConfiguration>(IConfigurationFile<TConfiguration> file,
IConfigurationReader<TConfiguration> reader,
IPublisher publisher) :
IConfigurationMonitor<TConfiguration>
where TConfiguration :
class
{
private FileSystemWatcher? watcher;
public Task StartAsync(CancellationToken cancellationToken)
{
async void ChangedHandler(object sender,
FileSystemEventArgs args)
{
if (reader.Read() is { } configuration)
{
await publisher.PublishUI(new Changed<TConfiguration>(configuration));
}
}
if (file.FileInfo.PhysicalPath is { } path)
{
string fileName = Path.GetFileName(path);
watcher = new FileSystemWatcher
{
NotifyFilter = NotifyFilters.LastWrite,
Path = path.Replace(fileName, ""),
Filter = fileName,
EnableRaisingEvents = true
};
watcher.Changed += ChangedHandler;
}
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
watcher?.Dispose();
return Task.CompletedTask;
}
}