diff --git a/src/AzureCosmos/AzureCosmosActionCacheFactory.cs b/src/AzureCosmos/AzureCosmosActionCacheFactory.cs
index 58e79d0..7e83faf 100644
--- a/src/AzureCosmos/AzureCosmosActionCacheFactory.cs
+++ b/src/AzureCosmos/AzureCosmosActionCacheFactory.cs
@@ -14,7 +14,7 @@ namespace ActionCache.AzureCosmos;
public class AzureCosmosActionCacheFactory : ActionCacheFactoryBase
{
///
- /// An Azure Cosmos Db client implementation.
+ /// The Azure Cosmos DB container used as the backing store for created cache instances.
///
protected readonly Container Cache;
diff --git a/src/AzureCosmos/AzureCosmosCacheOptions.cs b/src/AzureCosmos/AzureCosmosCacheOptions.cs
index d059d27..d611c97 100644
--- a/src/AzureCosmos/AzureCosmosCacheOptions.cs
+++ b/src/AzureCosmos/AzureCosmosCacheOptions.cs
@@ -8,11 +8,8 @@ namespace ActionCache.AzureCosmos;
public class AzureCosmosCacheOptions
{
///
- /// Gets or sets the connection string for the Azure Cosmos cache.
+ /// Gets or sets the connection string used to connect to the Azure Cosmos DB account.
///
- ///
- /// The is required to establish a connection to the Cosmos database.
- ///
public string? ConnectionString { get; set; }
///
diff --git a/src/AzureCosmos/AzureCosmosEntry.cs b/src/AzureCosmos/AzureCosmosEntry.cs
index d8ffc09..b5eed07 100644
--- a/src/AzureCosmos/AzureCosmosEntry.cs
+++ b/src/AzureCosmos/AzureCosmosEntry.cs
@@ -37,23 +37,23 @@ public class AzureCosmosEntry
public required string Value { get; set; }
///
- /// Gets or sets the absolute expiration associated with the entry.
+ /// Gets or sets the absolute expiration of the entry as a Unix timestamp in milliseconds.
///
[JsonPropertyName("absoluteExpiration")]
- [JsonProperty(PropertyName = "absoluteExpiration")]
+ [JsonProperty(PropertyName = "absoluteExpiration")]
public long AbsoluteExpiration { get; set; }
///
- /// Gets or sets the sliding expiration associated with the entry.
+ /// Gets or sets the sliding expiration of the entry in milliseconds.
///
[JsonPropertyName("slidingExpiration")]
- [JsonProperty(PropertyName = "slidingExpiration")]
+ [JsonProperty(PropertyName = "slidingExpiration")]
public long SlidingExpiration { get; set; }
///
- /// Gets or sets the TTL associated with the entry.
+ /// Gets or sets the Cosmos DB TTL for the entry in seconds; -1 disables TTL-based expiration.
///
[JsonPropertyName("ttl")]
- [JsonProperty(PropertyName = "ttl")]
+ [JsonProperty(PropertyName = "ttl")]
public long TTL { get; set; }
}
\ No newline at end of file
diff --git a/src/AzureCosmos/Exceptions/AzureCosmosContainerNotFoundOrCreated.cs b/src/AzureCosmos/Exceptions/AzureCosmosContainerNotFoundOrCreated.cs
index 4b2ccb1..717a487 100644
--- a/src/AzureCosmos/Exceptions/AzureCosmosContainerNotFoundOrCreated.cs
+++ b/src/AzureCosmos/Exceptions/AzureCosmosContainerNotFoundOrCreated.cs
@@ -9,10 +9,10 @@ namespace ActionCache.AzureCosmos.Exceptions;
public class AzureCosmosContainerNotFoundOrCreated : Exception
{
///
- /// Initializes a new instance of the class
- /// with the default error message.
+ /// Initializes a new instance of the class with an error message containing the HTTP status code from .
///
- public AzureCosmosContainerNotFoundOrCreated(ContainerResponse response)
+ /// The Cosmos DB container response whose status code is included in the exception message.
+ public AzureCosmosContainerNotFoundOrCreated(ContainerResponse response)
: base($"An error occurred fetching or creating Azure Cosmos container ({response.StatusCode}).")
{
}
diff --git a/src/AzureCosmos/Exceptions/AzureCosmosDatabaseNotFoundOrCreated.cs b/src/AzureCosmos/Exceptions/AzureCosmosDatabaseNotFoundOrCreated.cs
index 7aadf12..7e31f17 100644
--- a/src/AzureCosmos/Exceptions/AzureCosmosDatabaseNotFoundOrCreated.cs
+++ b/src/AzureCosmos/Exceptions/AzureCosmosDatabaseNotFoundOrCreated.cs
@@ -9,10 +9,10 @@ namespace ActionCache.AzureCosmos.Exceptions;
public class AzureCosmosDatabaseNotFoundOrCreated : Exception
{
///
- /// Initializes a new instance of the class
- /// with the default error message.
+ /// Initializes a new instance of the class with an error message containing the HTTP status code from .
///
- public AzureCosmosDatabaseNotFoundOrCreated(DatabaseResponse response)
+ /// The Cosmos DB database response whose status code is included in the exception message.
+ public AzureCosmosDatabaseNotFoundOrCreated(DatabaseResponse response)
: base($"An error occurred fetching or creating Azure Cosmos database ({response.StatusCode}).")
{
}
diff --git a/src/Common/Caching/ActionCacheFactoryBase.cs b/src/Common/Caching/ActionCacheFactoryBase.cs
index 34ab463..8012288 100644
--- a/src/Common/Caching/ActionCacheFactoryBase.cs
+++ b/src/Common/Caching/ActionCacheFactoryBase.cs
@@ -19,10 +19,10 @@ public abstract class ActionCacheFactoryBase : IActionCacheFactory
protected readonly IActionCacheRefreshProvider RefreshProvider;
///
- /// The base constructor.
+ /// Initializes a new instance of the class.
///
- /// entryOptionsAccessor global entry options accessor.
- /// The refresh provider.
+ /// Accessor for the globally configured .
+ /// The provider used to refresh stale cache entries by re-invoking their originating actions.
public ActionCacheFactoryBase(
IOptions entryOptionsAccessor,
IActionCacheRefreshProvider refreshProvider
diff --git a/src/Common/Caching/ActionCacheOptionsBuilder.cs b/src/Common/Caching/ActionCacheOptionsBuilder.cs
index 719cbe1..9e41623 100644
--- a/src/Common/Caching/ActionCacheOptionsBuilder.cs
+++ b/src/Common/Caching/ActionCacheOptionsBuilder.cs
@@ -65,7 +65,7 @@ public ActionCacheOptionsBuilder UseSqlServerCache(Action
}
///
- /// Enables the use of SQL Server cache.
+ /// Enables the use of Azure Cosmos DB as a cache backend.
///
/// Returns this instance of .
public ActionCacheOptionsBuilder UseAzureCosmosCache(Action configureOptions)
diff --git a/src/Common/Caching/ActionCacheRefreshProvider.cs b/src/Common/Caching/ActionCacheRefreshProvider.cs
index 40e74a4..fb93015 100644
--- a/src/Common/Caching/ActionCacheRefreshProvider.cs
+++ b/src/Common/Caching/ActionCacheRefreshProvider.cs
@@ -5,7 +5,7 @@
namespace ActionCache.Common.Caching;
///
-/// A class responsible for executing controller actions for cache keys
+/// Re-invokes cached controller actions to produce up-to-date values for each cache key.
///
public class ActionCacheRefreshProvider : IActionCacheRefreshProvider
{
diff --git a/src/Common/Concurrency/CacheLockerBase.cs b/src/Common/Concurrency/CacheLockerBase.cs
index c35ba3d..892599c 100644
--- a/src/Common/Concurrency/CacheLockerBase.cs
+++ b/src/Common/Concurrency/CacheLockerBase.cs
@@ -76,10 +76,7 @@ public virtual Task WaitForLockThenAsync(string resource, Action thenFunc) =>
/// The resource to acquire the lock for.
/// The action to execute once the lock is acquired.
/// A task representing the asynchronous operation.
- ///
- /// The action will be executed after the lock is acquired and released once the action completes.
- /// If the lock acquisition fails, no action is executed.
- ///
+ /// Thrown when the lock cannot be acquired within the configured timeout.
public virtual async Task WaitForLockThenAsync(string resource, Func thenFunc)
{
var cacheLock = await WaitForLockAsync(resource);
@@ -107,10 +104,7 @@ public virtual async Task WaitForLockThenAsync(string resource, Func thenF
/// The resource to acquire the lock for.
/// The function that will be executed once the lock is acquired, which returns a result.
/// A task representing the asynchronous operation, with the result of the function.
- ///
- /// The result will be returned after the lock is acquired and released once the function completes.
- /// If the lock acquisition fails, the result will be null.
- ///
+ /// Thrown when the lock cannot be acquired within the configured timeout.
public virtual async Task WaitForLockThenAsync(string resource, Func> resultAccessor)
{
TResult? result = default;
diff --git a/src/Common/Concurrency/Interfaces/ICacheLockerHandler.cs b/src/Common/Concurrency/Interfaces/ICacheLockerHandler.cs
index 25ae26c..505b6ea 100644
--- a/src/Common/Concurrency/Interfaces/ICacheLockerHandler.cs
+++ b/src/Common/Concurrency/Interfaces/ICacheLockerHandler.cs
@@ -28,10 +28,7 @@ public interface ICacheLockerHandler
/// The resource to acquire the lock for.
/// The action to execute once the lock is acquired.
/// A task representing the asynchronous operation.
- ///
- /// The action will be executed after the lock is acquired and released once the action completes.
- /// If the lock acquisition fails, no action is executed.
- ///
+ /// Thrown when the lock cannot be acquired within the configured timeout.
Task WaitForLockThenAsync(string resource, Func thenFunc);
///
@@ -41,9 +38,6 @@ public interface ICacheLockerHandler
/// The resource to acquire the lock for.
/// The function that will be executed once the lock is acquired, which returns a result.
/// A task representing the asynchronous operation, with the result of the function.
- ///
- /// The result will be returned after the lock is acquired and released once the function completes.
- /// If the lock acquisition fails, the result will be null.
- ///
+ /// Thrown when the lock cannot be acquired within the configured timeout.
Task WaitForLockThenAsync(string resource, Func> resultAccessor);
}
\ No newline at end of file
diff --git a/src/Common/Concurrency/Locks/CacheLock.cs b/src/Common/Concurrency/Locks/CacheLock.cs
index 99420ce..4534c1b 100644
--- a/src/Common/Concurrency/Locks/CacheLock.cs
+++ b/src/Common/Concurrency/Locks/CacheLock.cs
@@ -15,7 +15,7 @@ public CacheLock(string resource)
}
///
- /// Gets or sets the unique resource identifier associated with the lock.
+ /// Gets the unique resource identifier associated with the lock.
///
public readonly string Resource;
@@ -35,7 +35,7 @@ public CacheLock(string resource)
public TimeSpan Timeout { get; set; } = TimeSpan.FromMilliseconds(150);
///
- /// Gets the timestamp when the lock request was initiated.
+ /// Gets the UTC timestamp when the lock request was initiated.
///
public DateTime DateRequested { get; } = DateTime.UtcNow;
}
\ No newline at end of file
diff --git a/src/Common/Concurrency/Locks/NullCacheLock.cs b/src/Common/Concurrency/Locks/NullCacheLock.cs
index f35aedc..ba57969 100644
--- a/src/Common/Concurrency/Locks/NullCacheLock.cs
+++ b/src/Common/Concurrency/Locks/NullCacheLock.cs
@@ -1,8 +1,7 @@
namespace ActionCache.Common.Concurrency.Locks;
///
-/// Represents a no-operation cache lock that does not perform any locking mechanism.
-/// This is useful as a fallback when no actual locking is required.
+/// Represents a no-operation cache lock that always reports itself as acquired without performing any locking.
///
public class NullCacheLock : CacheLock
{
diff --git a/src/Common/Concurrency/NullCacheLocker.cs b/src/Common/Concurrency/NullCacheLocker.cs
index 2df1993..4497679 100644
--- a/src/Common/Concurrency/NullCacheLocker.cs
+++ b/src/Common/Concurrency/NullCacheLocker.cs
@@ -3,8 +3,7 @@
namespace ActionCache.Common.Concurrency;
///
-/// Represents a no-operation cache locker that does not perform any actual locking mechanism.
-/// It serves as a fallback implementation where a locking system is required but not enforced.
+/// A no-operation that immediately grants every lock request without any blocking or synchronization.
///
public class NullCacheLocker : CacheLockerBase
{
@@ -16,16 +15,14 @@ public NullCacheLocker() : base(TimeSpan.Zero, TimeSpan.Zero)
}
///
- /// Releases the specified lock asynchronously. Since this is a no-operation implementation,
- /// the method completes immediately.
+ /// Releases the specified lock asynchronously as a no-operation and returns a completed task immediately.
///
/// The lock to be released.
/// A completed task.
public override Task ReleaseLockAsync(NullCacheLock cacheLock) => Task.CompletedTask;
///
- /// Attempts to acquire a lock for the specified resource asynchronously.
- /// Since this is a no-operation implementation, it always returns a new lock immediately.
+ /// Returns a pre-acquired for the specified resource without any blocking.
///
/// The resource to lock.
/// A completed task containing the acquired lock.
@@ -33,8 +30,7 @@ public override Task TryAcquireLockAsync(string resource) =>
Task.FromResult(new NullCacheLock(resource));
///
- /// Waits for a lock on the specified resource asynchronously.
- /// Since this is a no-operation implementation, it immediately returns a new lock.
+ /// Returns a pre-acquired for the specified resource without any waiting.
///
/// The resource to lock.
/// A completed task containing the acquired lock.
diff --git a/src/Common/EndpointFilters/ActionCacheEndpointEvictionFilterFactory.cs b/src/Common/EndpointFilters/ActionCacheEndpointEvictionFilterFactory.cs
index f297762..7ee477b 100644
--- a/src/Common/EndpointFilters/ActionCacheEndpointEvictionFilterFactory.cs
+++ b/src/Common/EndpointFilters/ActionCacheEndpointEvictionFilterFactory.cs
@@ -5,7 +5,7 @@
namespace ActionCache.Filters;
///
-/// Provides a custom filter factory for caching action results based on the configuration.
+/// A filter factory attribute that creates an to evict cached entries for the configured namespace.
///
[AttributeUsage(AttributeTargets.Method)]
public class ActionCacheEndpointEvictionFilterFactory : ActionCacheEndpointFilterFactoryBase
diff --git a/src/Common/EndpointFilters/ActionCacheEndpointFilterAbstractFactory.cs b/src/Common/EndpointFilters/ActionCacheEndpointFilterAbstractFactory.cs
index e322334..d9a7f2b 100644
--- a/src/Common/EndpointFilters/ActionCacheEndpointFilterAbstractFactory.cs
+++ b/src/Common/EndpointFilters/ActionCacheEndpointFilterAbstractFactory.cs
@@ -26,7 +26,7 @@ public class ActionCacheEndpointFilterAbstractFactory : IActionCacheFilterAbstra
protected readonly TemplateBinderFactory BinderFactory;
///
- /// Initializes a new instance of the class.
+ /// Initializes a new instance of the class.
///
/// The cache factories used to create caches.
/// The template binder for parsing route parameters for templated namespaces.
@@ -40,14 +40,14 @@ TemplateBinderFactory binderFactory
}
///
- ///
- ///
- public IEndpointFilter CreateInstance(Namespace @namespace, FilterType type) =>
+ /// Thrown if no cache instances could be created for the namespace.
+ /// Thrown if the specified filter type is not supported.
+ public IEndpointFilter CreateInstance(Namespace @namespace, FilterType type) =>
CreateInstance(@namespace, absoluteExpiration: null, slidingExpiration: null, type);
///
- ///
- ///
+ /// Thrown if no cache instances could be created for the namespace.
+ /// Thrown if the specified filter type is not supported.
public IEndpointFilter CreateInstance(Namespace @namespace, TimeSpan? absoluteExpiration, TimeSpan? slidingExpiration, FilterType type)
{
ArgumentException.ThrowIfNullOrWhiteSpace(@namespace, nameof(@namespace));
diff --git a/src/Common/EndpointFilters/ActionCacheEndpointFilterFactoryBase.cs b/src/Common/EndpointFilters/ActionCacheEndpointFilterFactoryBase.cs
index c950788..dd18891 100644
--- a/src/Common/EndpointFilters/ActionCacheEndpointFilterFactoryBase.cs
+++ b/src/Common/EndpointFilters/ActionCacheEndpointFilterFactoryBase.cs
@@ -8,7 +8,7 @@
namespace ActionCache.Filters;
///
-/// Provides a base factory for creating instances of action cache filters.
+/// Provides a base factory for creating instances of Minimal API endpoint cache filters.
///
public abstract class ActionCacheEndpointFilterFactoryBase : Attribute
{
@@ -27,13 +27,13 @@ public abstract class ActionCacheEndpointFilterFactoryBase : Attribute
public abstract IEndpointFilter CreateInstance(IServiceProvider serviceProvider);
///
- ///
+ /// Resolves and creates an of the specified type with optional expiration settings.
///
- /// The service provider.
+ /// The service provider used to resolve the abstract filter factory.
/// The type of filter to be created.
- /// The absolute expiration in milliseconds for a cache entry.
- /// The sliding expiration in milliseconds for a cache entry.
- /// An instance of a cache filter.
+ /// The absolute expiration duration for a cache entry, or for no absolute expiration.
+ /// The sliding expiration duration for a cache entry, or for no sliding expiration.
+ /// An instance representing the resolved cache filter.
protected IEndpointFilter CreateInstance(IServiceProvider serviceProvider,
FilterType type,
TimeSpan? absoluteExpiration = null,
diff --git a/src/Common/Filters/ActionCacheFilterAbstractFactory.cs b/src/Common/Filters/ActionCacheFilterAbstractFactory.cs
index 8caef82..6bf74ef 100644
--- a/src/Common/Filters/ActionCacheFilterAbstractFactory.cs
+++ b/src/Common/Filters/ActionCacheFilterAbstractFactory.cs
@@ -25,7 +25,7 @@ public class ActionCacheFilterAbstractFactory : IActionCacheFilterAbstractFactor
protected readonly TemplateBinderFactory BinderFactory;
///
- /// Initializes a new instance of the class.
+ /// Initializes a new instance of the class.
///
/// The cache factories used to create caches.
/// The template binder for parsing route parameters for templated namespaces.
@@ -39,14 +39,14 @@ TemplateBinderFactory binderFactory
}
///
- ///
- ///
- public IFilterMetadata CreateInstance(Namespace @namespace, FilterType type) =>
+ /// Thrown if no cache instances could be created for the namespace.
+ /// Thrown if the specified filter type is not supported.
+ public IFilterMetadata CreateInstance(Namespace @namespace, FilterType type) =>
CreateInstance(@namespace, absoluteExpiration: null, slidingExpiration: null, type);
///
- ///
- ///
+ /// Thrown if no cache instances could be created for the namespace.
+ /// Thrown if the specified filter type is not supported.
public IFilterMetadata CreateInstance(Namespace @namespace, TimeSpan? absoluteExpiration, TimeSpan? slidingExpiration, FilterType type)
{
ArgumentException.ThrowIfNullOrWhiteSpace(@namespace, nameof(@namespace));
diff --git a/src/Common/Filters/ActionCacheFilterFactoryBase.cs b/src/Common/Filters/ActionCacheFilterFactoryBase.cs
index 8504b69..bf4f3d6 100644
--- a/src/Common/Filters/ActionCacheFilterFactoryBase.cs
+++ b/src/Common/Filters/ActionCacheFilterFactoryBase.cs
@@ -27,14 +27,14 @@ public abstract class ActionCacheFilterFactoryBase : Attribute, IFilterFactory
public abstract IFilterMetadata CreateInstance(IServiceProvider serviceProvider);
///
- ///
+ /// Resolves and creates an of the specified type with optional expiration settings.
///
- /// The service provider.
+ /// The service provider used to resolve the abstract filter factory.
/// The type of filter to be created.
- /// The absolute expiration in milliseconds for a cache entry.
- /// The sliding expiration in milliseconds for a cache entry.
- /// An instance of a cache filter.
- protected IFilterMetadata CreateInstance(IServiceProvider serviceProvider,
+ /// The absolute expiration duration for a cache entry, or for no absolute expiration.
+ /// The sliding expiration duration for a cache entry, or for no sliding expiration.
+ /// An instance representing the resolved cache filter.
+ protected IFilterMetadata CreateInstance(IServiceProvider serviceProvider,
FilterType type,
TimeSpan? absoluteExpiration = null,
TimeSpan? slidingExpiration = null
diff --git a/src/Common/Keys/ActionCacheKeyComponents.cs b/src/Common/Keys/ActionCacheKeyComponents.cs
index d055c18..97c1594 100644
--- a/src/Common/Keys/ActionCacheKeyComponents.cs
+++ b/src/Common/Keys/ActionCacheKeyComponents.cs
@@ -22,14 +22,12 @@ public class ActionCacheKeyComponents
public const string ActionArgumentsKey = nameof(ActionArgumentsKey);
///
- /// Gets or sets the route values for the current action.
- /// These values are typically used to help uniquely identify the route for caching purposes.
+ /// Gets or sets the route values used to uniquely identify the route for caching purposes.
///
public RouteValueDictionary? RouteValues { get; set; } = new();
///
- /// Gets or sets the dictionary of action arguments for the current action.
- /// These arguments provide additional context for identifying the action and are used in caching.
+ /// Gets or sets the action arguments used as additional context for identifying and caching the action.
///
public Dictionary? ActionArguments { get; set; } = new Dictionary();
@@ -45,11 +43,11 @@ public string Serialize()
}
///
- /// Deconstructs route values into string representations of an area, controller and action.
+ /// Deconstructs the route values into the area, controller, and action name components.
///
- ///
- ///
- ///
+ /// The area name, or if not present in the route values.
+ /// The controller name, or if not present in the route values.
+ /// The action name, or if not present in the route values.
public void Deconstruct(out string? area, out string? controller, out string? action)
{
ArgumentNullException.ThrowIfNull(RouteValues);
diff --git a/src/Common/Utilities/Namespace.cs b/src/Common/Utilities/Namespace.cs
index 5360d14..a0c75be 100644
--- a/src/Common/Utilities/Namespace.cs
+++ b/src/Common/Utilities/Namespace.cs
@@ -33,17 +33,17 @@ public string? ValueWithRouteTemplateParameters
public string Create(string key) => Concat(Assembly, ValueWithRouteTemplateParameters ?? Value, key);
///
- /// Allows implicit conversion of the Namespace instance to a string.
+ /// Implicitly converts a to its fully qualified string representation.
///
- /// The Namespace instance.
- /// A concatenated string with the assembly and namespace value.
+ /// The instance to convert.
+ /// A colon-separated string combining the assembly name and namespace value.
public static implicit operator string(Namespace @this) => Concat(Assembly, @this.ValueWithRouteTemplateParameters ?? @this.Value);
///
- /// Allows implicit conversion of a string to a Namespace instance.
+ /// Implicitly converts a string to a instance.
///
- /// The string to convert.
- /// A new Namespace instance based on the string.
+ /// The namespace value string.
+ /// A new wrapping the given string.
public static implicit operator Namespace(string @namespace) => new Namespace(@namespace);
///
diff --git a/src/Memory/ExpirationTokens/ExpirationTokenSources.cs b/src/Memory/ExpirationTokens/ExpirationTokenSources.cs
index 931aa29..8592152 100644
--- a/src/Memory/ExpirationTokens/ExpirationTokenSources.cs
+++ b/src/Memory/ExpirationTokens/ExpirationTokenSources.cs
@@ -4,7 +4,7 @@
namespace ActionCache.Memory;
///
-/// Class to manage expiration token sources using memory cache.
+/// Manages instances used as expiration tokens for memory cache entries.
///
public class ExpirationTokenSources : IExpirationTokenSources
{
@@ -14,9 +14,9 @@ public class ExpirationTokenSources : IExpirationTokenSources
protected readonly IMemoryCache Cache;
///
- /// Constructor for ExpirationTokenSources class.
+ /// Initializes a new instance of the class.
///
- /// The memory cache to use.
+ /// The memory cache used to store and retrieve instances.
public ExpirationTokenSources(IMemoryCache cache) => Cache = cache;
///
diff --git a/src/Memory/ExpirationTokens/ExpirationTokenSourcesFallback.cs b/src/Memory/ExpirationTokens/ExpirationTokenSourcesFallback.cs
index 8bb4516..42df5f7 100644
--- a/src/Memory/ExpirationTokens/ExpirationTokenSourcesFallback.cs
+++ b/src/Memory/ExpirationTokens/ExpirationTokenSourcesFallback.cs
@@ -8,7 +8,7 @@ namespace ActionCache.Memory;
public class ExpirationTokenSourcesFallback : IExpirationTokenSources
{
///
- /// Tokens dictionary to store cancellationTokenSources based on keys
+ /// Thread-safe dictionary mapping cache keys to their associated instances.
///
protected ConcurrentDictionary Tokens = new();
diff --git a/src/Memory/ExpirationTokens/Interfaces/IExpirationTokenSources.cs b/src/Memory/ExpirationTokens/Interfaces/IExpirationTokenSources.cs
index 9775456..6f7719e 100644
--- a/src/Memory/ExpirationTokens/Interfaces/IExpirationTokenSources.cs
+++ b/src/Memory/ExpirationTokens/Interfaces/IExpirationTokenSources.cs
@@ -1,15 +1,15 @@
namespace ActionCache.Memory;
///
-/// Interface for managing expiration token sources
+/// Defines a mechanism for retrieving or creating instances keyed by a cache namespace.
///
public interface IExpirationTokenSources
{
///
- /// Attempts to get or add a cancellation token source for the specified key
+ /// Retrieves an existing for the given key, or creates and stores a new one if none exists.
///
- /// The key associated with the cancellation token source
- /// The cancellation token source associated with the key
- /// True if the cancellation token source was retrieved or added successfully, false otherwise
+ /// The cache key used to look up or register the token source.
+ /// When this method returns, contains the associated with .
+ /// if the token source was successfully retrieved or created; otherwise, .
bool TryGetOrAdd(string key, out CancellationTokenSource cancellationTokenSource);
}
\ No newline at end of file
diff --git a/src/Redis/RedisActionCacheFactory.cs b/src/Redis/RedisActionCacheFactory.cs
index 5956e4a..9ef35b5 100644
--- a/src/Redis/RedisActionCacheFactory.cs
+++ b/src/Redis/RedisActionCacheFactory.cs
@@ -14,14 +14,14 @@ namespace ActionCache.Redis;
public class RedisActionCacheFactory : ActionCacheFactoryBase
{
///
- /// An IDatabase representation of a Redis cache.
+ /// The Redis database instance used for cache read and write operations.
///
protected readonly IDatabase Cache;
///
- /// Constructor for RedisActionCacheFactory.
+ /// Initializes a new instance of the class.
///
- /// ConnectionMultiplexer for Redis.
+ /// The Redis connection multiplexer used to obtain the database instance.
/// The global entry options used for creation when expiration times are not supplied.
/// The refresh provider to handle cache refreshes.
public RedisActionCacheFactory(
diff --git a/src/SqlServer/SqlServerActionCache.cs b/src/SqlServer/SqlServerActionCache.cs
index e18d102..1c54eca 100644
--- a/src/SqlServer/SqlServerActionCache.cs
+++ b/src/SqlServer/SqlServerActionCache.cs
@@ -27,12 +27,9 @@ public SqlServerActionCache(IDistributedCache cache, ActionCacheContext Cache = cache;
///
- /// Gets or sets the cache entry options that control the expiration and sliding expiration of cache items.
+ /// Creates the distributed cache entry options from the current .
///
- ///
- /// Creates the entry options for memory cache.
- ///
- /// The cache entry options applied to new entries.
+ /// A configured with the current sliding and absolute expiration values.
private DistributedCacheEntryOptions CreateEntryOptions() =>
new DistributedCacheEntryOptions
{