/
afanasevn
/
RedisLab
Обзор
Документация
Войти
/
afanasevn
/
RedisLab
Код
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/RedisLab.Infrastructure/Notifications/ProcessedNotificationStore.cs
38 строк
1 KB
IBS\NAfanasev
Solution commit
24 июн 2026, 16:45
24 июн 2026, 16:45
bab80b7
Код
Авторство
О чём код?
using RedisLab.Application.Abstractions; using RedisLab.Application.Contracts.Notifications; namespace RedisLab.Infrastructure.Notifications; /// <summary> /// Кольцевой буфер обработанных уведомлений для GET /api/notifications/processed. /// </summary> public sealed class ProcessedNotificationStore : IProcessedNotificationStore { private const int MaxItems = 100; private readonly object _sync = new(); private readonly List<ProcessedNotificationDto> _items = []; /// <inheritdoc /> public void Add(ProcessedNotificationDto notification) { lock (_sync) { _items.Insert(0, notification); if (_items.Count > MaxItems) { _items.RemoveRange(MaxItems, _items.Count - MaxItems); } } } /// <inheritdoc /> public IReadOnlyList<ProcessedNotificationDto> GetRecent(int count) { var take = Math.Clamp(count, 1, MaxItems); lock (_sync) { return _items.Take(take).ToList(); } } }