/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit/MessageData/InMemoryMessageDataRepository.cs
44 строки
1 KB
Chris Patterson
Massive file cleanup
27 мар 2024, 02:43
27 мар 2024, 02:43
2ac69e8
Код
Авторство
О чём код?
namespace MassTransit.MessageData { using System; using System.Collections.Concurrent; using System.IO; using System.Threading; using System.Threading.Tasks; public class InMemoryMessageDataRepository : IMessageDataRepository { readonly ConcurrentDictionary<Uri, byte[]> _values; public InMemoryMessageDataRepository() { _values = new ConcurrentDictionary<Uri, byte[]>(); } Task<Stream> IMessageDataRepository.Get(Uri address, CancellationToken cancellationToken) { if (address == null) throw new ArgumentNullException(nameof(address)); if (_values.TryGetValue(address, out var value)) return Task.FromResult<Stream>(new MemoryStream(value, false)); throw new MessageDataNotFoundException(address); } async Task<Uri> IMessageDataRepository.Put(Stream stream, TimeSpan? timeToLive, CancellationToken cancellationToken) { var address = new InMemoryMessageDataId().Uri; using var ms = new MemoryStream(); await stream.CopyToAsync(ms).ConfigureAwait(false); _values.TryAdd(address, ms.ToArray()); return address; } } }