Add XML documentation for improved code clarity
Added detailed XML documentation across multiple files to enhance code maintainability and readability. Key updates include: - Documented `AllowAllDashboardAuthorizationFilter` to clarify its development-only usage. - Added comments to `DtoExtensions` for Hangfire job ID generation and DTO-to-command conversion methods. - Enhanced `HealthCheckHtmlGenerator` with detailed descriptions of HTML generation methods and utility functions. - Documented `DependencyInjection` and `ProfileWorkerOptionsValidator` to explain service registration and configuration validation. - Updated `ProfileCache` with comments on thread-safe operations. - Added documentation to `ProfileWork` for profile synchronization logic and execution flow. - Enhanced `ProfileWorker` with health check logic and background service execution details. - Documented `ProfileWorkerOptions` configuration properties. These changes aim to improve developer understanding and ensure best practices are followed in production environments.
This commit is contained in:
@@ -5,19 +5,46 @@ namespace ECMJobRunner.WebCron.ProfileWorker;
|
||||
|
||||
/// <summary>
|
||||
/// Thread-safe cache for storing active profile configurations.
|
||||
/// Used to track profile state and detect changes in schedule or removal.
|
||||
/// Uses <see cref="ConcurrentDictionary{TKey, TValue}"/> to track profile state
|
||||
/// and detect changes in schedule or removal.
|
||||
/// </summary>
|
||||
public class ProfileCache
|
||||
{
|
||||
private readonly ConcurrentDictionary<string, CfgProfileDto> _cache = new();
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves a profile from the cache by job identifier.
|
||||
/// </summary>
|
||||
/// <param name="jobId">The unique job identifier.</param>
|
||||
/// <returns>The cached profile, or <c>null</c> if not found.</returns>
|
||||
public CfgProfileDto? Get(string jobId) => _cache.TryGetValue(jobId, out var profile) ? profile : null;
|
||||
|
||||
/// <summary>
|
||||
/// Adds a new profile or updates an existing profile in the cache.
|
||||
/// </summary>
|
||||
/// <param name="jobId">The unique job identifier.</param>
|
||||
/// <param name="profile">The profile configuration to cache.</param>
|
||||
public void AddOrUpdate(string jobId, CfgProfileDto profile) => _cache[jobId] = profile;
|
||||
|
||||
/// <summary>
|
||||
/// Attempts to remove a profile from the cache.
|
||||
/// </summary>
|
||||
/// <param name="jobId">The unique job identifier.</param>
|
||||
/// <param name="profile">The removed profile, or <c>null</c> if not found.</param>
|
||||
/// <returns><c>true</c> if the profile was removed; otherwise, <c>false</c>.</returns>
|
||||
public bool TryRemove(string jobId, out CfgProfileDto? profile) => _cache.TryRemove(jobId, out profile);
|
||||
|
||||
/// <summary>
|
||||
/// Gets all job identifiers currently stored in the cache.
|
||||
/// </summary>
|
||||
/// <returns>A collection of job identifiers.</returns>
|
||||
public IEnumerable<string> GetAllJobIds() => _cache.Keys;
|
||||
|
||||
/// <summary>
|
||||
/// Attempts to retrieve a profile from the cache.
|
||||
/// </summary>
|
||||
/// <param name="jobId">The unique job identifier.</param>
|
||||
/// <param name="profile">The cached profile, or <c>null</c> if not found.</param>
|
||||
/// <returns><c>true</c> if the profile was found; otherwise, <c>false</c>.</returns>
|
||||
public bool TryGetValue(string jobId, out CfgProfileDto? profile) => _cache.TryGetValue(jobId, out profile);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user