/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit/Middleware/ScopedExecuteFilter.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 ScopedExecuteFilter<TActivity, TArguments, TFilter> : IFilter<ExecuteContext<TArguments>> where TActivity : class, IExecuteActivity<TArguments> where TArguments : class where TFilter : class, IFilter<ExecuteContext<TArguments>> { readonly IExecuteActivityScopeProvider<TActivity, TArguments> _scopeProvider; public ScopedExecuteFilter(IExecuteActivityScopeProvider<TActivity, TArguments> scopeProvider) { _scopeProvider = scopeProvider; } public async Task Send(ExecuteContext<TArguments> context, IPipe<ExecuteContext<TArguments>> next) { await using IExecuteScopeContext<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); } } }