From fb7e00919a93df9bc18b97549ce57817bc79c0bc Mon Sep 17 00:00:00 2001 From: Vladyslav Zaiets Date: Thu, 21 May 2026 16:11:53 +0000 Subject: [PATCH] Add XML doc comments to IPluginManagerService interface - Add , , and tags to all 10 lifecycle methods - Document initialization order, dependency resolution, and shutdown semantics - Describe plugin activation/deactivation hooks and resource cleanup --- .../Abstractions/IPluginManagerService.cs | 47 +++++++++++++++---- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/src/PluginEngine/Services/Abstractions/IPluginManagerService.cs b/src/PluginEngine/Services/Abstractions/IPluginManagerService.cs index d704b44..ab4faf3 100644 --- a/src/PluginEngine/Services/Abstractions/IPluginManagerService.cs +++ b/src/PluginEngine/Services/Abstractions/IPluginManagerService.cs @@ -14,53 +14,80 @@ namespace PluginEngine.Services.Abstractions; public interface IPluginManagerService { /// - /// Initializes the plugin manager. + /// Discovers and loads all plugins from configured directories, resolves dependencies, + /// and activates auto-start plugins. Must be called before any other operations. /// + /// Token to cancel the initialization. Task InitializeAsync(CancellationToken cancellationToken = default); /// - /// Shuts down the plugin manager. + /// Gracefully shuts down all active plugins in reverse dependency order and + /// releases all associated AssemblyLoadContexts. /// + /// Token to cancel the shutdown. Task ShutdownAsync(CancellationToken cancellationToken = default); /// - /// Gets the manager status. + /// Returns the current status of the plugin manager including initialization state, + /// plugin counts by category, and last error information. /// + /// A snapshot. Task GetStatusAsync(); /// - /// Gets all plugins. + /// Returns all registered plugins regardless of their current status. /// + /// Cancellation token. + /// An enumerable of all instances. Task> GetAllPluginsAsync(CancellationToken cancellationToken = default); /// - /// Gets plugins filtered by status. + /// Returns plugins filtered by their current lifecycle status. /// + /// The plugin status to filter by (e.g., Active, Inactive, Failed). + /// Cancellation token. + /// An enumerable of plugins matching the specified status. Task> GetPluginsByStatusAsync(PluginStatus status, CancellationToken cancellationToken = default); /// - /// Activates a plugin. + /// Activates a previously loaded but inactive plugin. Resolves its dependencies + /// and invokes the plugin's initialization hook. /// + /// The unique identifier of the plugin to activate. + /// Cancellation token. + /// true if the plugin was activated successfully; false if not found or activation failed. Task ActivatePluginAsync(Guid pluginId, CancellationToken cancellationToken = default); /// - /// Deactivates a plugin. + /// Deactivates a running plugin, invoking its shutdown hook and releasing resources. /// + /// The unique identifier of the plugin to deactivate. + /// Cancellation token. + /// true if the plugin was deactivated successfully; false if not found or already inactive. Task DeactivatePluginAsync(Guid pluginId, CancellationToken cancellationToken = default); /// - /// Gets plugin details. + /// Retrieves detailed information about a plugin including metadata, loaded assemblies, + /// dependency graph, and declared capabilities. /// + /// The unique identifier of the plugin. + /// Cancellation token. + /// A object, or null if the plugin is not found. Task GetPluginDetailsAsync(Guid pluginId, CancellationToken cancellationToken = default); /// - /// Searches for plugins. + /// Searches for plugins matching the specified criteria with pagination support. /// + /// Search filters including name, author, status, version, and tags. + /// Cancellation token. + /// A paginated enumerable of matching instances. Task> SearchPluginsAsync(PluginSearchCriteria criteria, CancellationToken cancellationToken = default); /// - /// Gets manager statistics. + /// Returns aggregate statistics about plugin manager operations including memory usage, + /// load context counts, and average load times. /// + /// A snapshot. Task GetStatisticsAsync(); }