// WingsEmu // // Developed by NosWings Team using System.Threading; using System.Threading.Tasks; namespace PhoenixLib.Events { public class ConvertedEventForwarder : IAsyncEventProcessor where TSource : IAsyncEvent where TDest : IAsyncEvent { private readonly IConverter _converter; private readonly IAsyncEventPipeline _eventPipeline; public ConvertedEventForwarder(IConverter converter, IAsyncEventPipeline eventPipeline) { _converter = converter; _eventPipeline = eventPipeline; } public async Task HandleAsync(TSource e, CancellationToken cancellation) { TDest dest = _converter.Convert(e); await _eventPipeline.ProcessEventAsync(dest, cancellation); } } }