Files
JiboExperiments/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Application/Services/JiboExperienceContentCache.cs
Jacob Dubin dfcf521a5a refactors
2026-05-17 08:08:11 -05:00

25 lines
709 B
C#

using Jibo.Cloud.Application.Abstractions;
namespace Jibo.Cloud.Application.Services;
public sealed class JiboExperienceContentCache(IJiboExperienceContentRepository repository)
{
private readonly SemaphoreSlim _gate = new(1, 1);
private JiboExperienceCatalog? _catalog;
public async Task<JiboExperienceCatalog> GetCatalogAsync(CancellationToken cancellationToken = default)
{
if (_catalog is not null) return _catalog;
await _gate.WaitAsync(cancellationToken);
try
{
_catalog ??= await repository.GetCatalogAsync(cancellationToken);
return _catalog;
}
finally
{
_gate.Release();
}
}
}