Operations pipeline start

This commit is contained in:
Mikhail Shabanov committed 2020-07-19 13:04:31 +02:00
1 parent 6c10c6c654
commit 7ffbeb6b17
19 files changed
+432 -5

No files matched your search

@@ -0,0 +1,22 @@
using System;
using System.Threading.Tasks;
namespace WotBlitzStatisticsPro.Logic.Pipeline
{
public class OperationMediator<TContext>: IOperation<TContext>
{
private readonly IOperation<TContext> _current;
private readonly IOperation<TContext> _next;
public OperationMediator(IOperation<TContext> current, IOperation<TContext> next)
{
_current = current ?? throw new ArgumentNullException(nameof(current));
_next = next;
}
public Task Invoke(TContext context, Func<TContext, Task> next)
{
return _current.Invoke(context, c => _next == null ? Task.CompletedTask : _next.Invoke(c, null));
}
}
}