/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit/Middleware/ScopedCompensateFilter.cs
38 строк
1 KB
Chris Patterson
Add generic scoped filter type to configuration JSON
22 май 2023, 18:29
22 май 2023, 18:29
a4163e8
Код
Авторство
О чём код?
namespace MassTransit.Middleware { using System.Threading.Tasks; using DependencyInjection; using Metadata; public class ScopedCompensateFilter<TActivity, TArguments, TFilter> : IFilter<CompensateContext<TArguments>> where TActivity : class, ICompensateActivity<TArguments> where TArguments : class where TFilter : class, IFilter<CompensateContext<TArguments>> { readonly ICompensateActivityScopeProvider<TActivity, TArguments> _scopeProvider; public ScopedCompensateFilter(ICompensateActivityScopeProvider<TActivity, TArguments> scopeProvider) { _scopeProvider = scopeProvider; } public async Task Send(CompensateContext<TArguments> context, IPipe<CompensateContext<TArguments>> next) { await using ICompensateScopeContext<TArguments> scope = await _scopeProvider.GetScope(context).ConfigureAwait(false); var filter = scope.GetService<TFilter>(); await filter.Send(scope.Context, next).ConfigureAwait(false); } public void Probe(ProbeContext context) { var scope = context.CreateFilterScope("scopedFilter"); scope.Add("filter", TypeMetadataCache<TFilter>.ShortName); _scopeProvider.Probe(scope); } } }