mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2025-08-20 20:32:56 +00:00
Refactor hot reload system to improve event handling & monitor delete events as well
This commit is contained in:
parent
7903f13a93
commit
85fcb4a6c8
@ -15,12 +15,26 @@ public static partial class PluginFactory
|
||||
LOG.LogInformation($"Start hot reloading plugins for path '{HOT_RELOAD_WATCHER.Path}'.");
|
||||
try
|
||||
{
|
||||
var messageBus = Program.SERVICE_PROVIDER.GetRequiredService<MessageBus>();
|
||||
|
||||
HOT_RELOAD_WATCHER.IncludeSubdirectories = true;
|
||||
HOT_RELOAD_WATCHER.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName;
|
||||
HOT_RELOAD_WATCHER.Filter = "*.lua";
|
||||
HOT_RELOAD_WATCHER.Changed += async (_, args) =>
|
||||
HOT_RELOAD_WATCHER.Changed += HotReloadEventHandler;
|
||||
HOT_RELOAD_WATCHER.Deleted += HotReloadEventHandler;
|
||||
HOT_RELOAD_WATCHER.EnableRaisingEvents = true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOG.LogError(e, "Error while setting up hot reloading.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
LOG.LogInformation("Hot reloading plugins set up.");
|
||||
}
|
||||
}
|
||||
|
||||
private static async void HotReloadEventHandler(object _, FileSystemEventArgs args)
|
||||
{
|
||||
try
|
||||
{
|
||||
var changeType = args.ChangeType.ToString().ToLowerInvariant();
|
||||
if (!await HOT_RELOAD_SEMAPHORE.WaitAsync(0))
|
||||
@ -33,23 +47,16 @@ public static partial class PluginFactory
|
||||
{
|
||||
LOG.LogInformation($"File changed ({changeType}): {args.FullPath}. Reloading plugins...");
|
||||
await LoadAll();
|
||||
await messageBus.SendMessage<bool>(null, Event.PLUGINS_RELOADED);
|
||||
await MessageBus.INSTANCE.SendMessage<bool>(null, Event.PLUGINS_RELOADED);
|
||||
}
|
||||
finally
|
||||
{
|
||||
HOT_RELOAD_SEMAPHORE.Release();
|
||||
}
|
||||
};
|
||||
|
||||
HOT_RELOAD_WATCHER.EnableRaisingEvents = true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOG.LogError(e, "Error while setting up hot reloading.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
LOG.LogInformation("Hot reloading plugins set up.");
|
||||
LOG.LogError(e, $"Error while handling hot reload event for file '{args.FullPath}' with change type '{args.ChangeType}'.");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user