/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit/Testing/Implementations/SagaList.cs
55 строк
2 KB
Chris Patterson
Integration of all external packages into MassTransit, split out into Abstractions, Middleware, and the core MassTransit assembly.
22 янв 2022, 18:24
22 янв 2022, 18:24
b5b4f50
Код
Авторство
О чём код?
namespace MassTransit.Testing.Implementations { using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; public class SagaList<T> : AsyncElementList<ISagaInstance<T>>, ISagaList<T> where T : class, ISaga { public SagaList(TimeSpan timeout, CancellationToken testCompleted = default) : base(timeout, testCompleted) { } public IEnumerable<ISagaInstance<T>> Select(FilterDelegate<T> filter, CancellationToken cancellationToken = default) { return Select(x => filter(x.Saga), cancellationToken); } public T Contains(Guid sagaId) { return Select(x => x.Saga.CorrelationId == sagaId).Select(x => x.Saga).FirstOrDefault(); } public IAsyncEnumerable<ISagaInstance<T>> SelectAsync(CancellationToken cancellationToken = default) { return SelectAsync(x => true, cancellationToken); } public IAsyncEnumerable<ISagaInstance<T>> SelectAsync(FilterDelegate<T> filter, CancellationToken cancellationToken = default) { return SelectAsync(x => filter(x.Saga), cancellationToken); } public Task<bool> Any(CancellationToken cancellationToken = default) { return Any(x => true, cancellationToken); } public Task<bool> Any(FilterDelegate<T> filter, CancellationToken cancellationToken = default) { return Any(x => filter(x.Saga), cancellationToken); } public void Add(SagaConsumeContext<T> context) { Add(new SagaInstance<T>(context.Saga)); } } }