diff --git a/CoRProcessor/CoRProcessor.cs b/CoRProcessor/CoRProcessor.cs index e6faa10..37e1c24 100644 --- a/CoRProcessor/CoRProcessor.cs +++ b/CoRProcessor/CoRProcessor.cs @@ -6,12 +6,12 @@ namespace CoRProcessor { - public delegate Task ActionDelegate(T arg, CancellationToken cancellationToken) where T : IChainContext; + public delegate Task ActionDelegate(T ctx, CancellationToken cancelToken) where T : IChainContext; - public delegate Task FuncDelegate(T arg, CancellationToken cancellationToken) + public delegate Task FuncDelegate(T ctx, CancellationToken cancelToken) where T : IChainContext; - public delegate Task OnExceptionDelegate(T arg, Exception e, CancellationToken cancellationToken) + public delegate Task OnExceptionDelegate(T ctx, Exception e, CancellationToken cancelToken) where T : IChainContext; public class CoRProcessor where T : IChainContext @@ -39,34 +39,33 @@ public CoRProcessor AddRange(IEnumerable> processors) return this; } - public async Task Execute(T t, CancellationToken token = default) + public async Task Execute(T ctx, CancellationToken cancelToken = default) { - var context = t; try { - if (_beforeAction != null) await _beforeAction.Invoke(t, token); + if (_beforeAction != null) await _beforeAction.Invoke(ctx, cancelToken); foreach (var chainProcessor in _chainProcessors) { - if (context.Abort) break; + if (ctx.Abort) break; if (chainProcessor.CompensateOnFailure != null) _delegates.Add(chainProcessor.CompensateOnFailure); - context = await chainProcessor.Handle(context, token); + ctx = await chainProcessor.Handle(ctx, cancelToken); } - if (_afterAction == null) return context; + if (_afterAction == null) return ctx; - await _afterAction.Invoke(context, token); + await _afterAction.Invoke(ctx, cancelToken); - return context; + return ctx; } catch (Exception e) { - foreach (var funcDelegate in _delegates) await funcDelegate.Invoke(context, token); + foreach (var funcDelegate in _delegates) await funcDelegate.Invoke(ctx, cancelToken); if (_onException != null) { - var isThrow = await _onException.Invoke(context, e, token); - if (!isThrow) return context; + var isThrow = await _onException.Invoke(ctx, e, cancelToken); + if (!isThrow) return ctx; } ExceptionDispatchInfo.Capture(e).Throw(); @@ -75,7 +74,7 @@ public async Task Execute(T t, CancellationToken token = default) finally { if (_finallyAction != null) - await _finallyAction.Invoke(context, token); + await _finallyAction.Invoke(ctx, cancelToken); } } diff --git a/CoRProcessor/EmptyProcessor.cs b/CoRProcessor/EmptyProcessor.cs index 0d50340..550740c 100644 --- a/CoRProcessor/EmptyProcessor.cs +++ b/CoRProcessor/EmptyProcessor.cs @@ -5,14 +5,12 @@ namespace CoRProcessor { public class EmptyProcessor : IChainProcessor where T : IChainContext { - public IChainProcessor Next { get; set; } = default; - public Task Handle(T t, CancellationToken token = default) { return Task.FromResult(t); } - public FuncDelegate CompensateOnFailure { get; set; } = (arg, token) => Task.FromResult(arg); + public FuncDelegate CompensateOnFailure { get; set; } = (ctx, token) => Task.FromResult(ctx); } } diff --git a/CoRProcessor/IChainProcessor.cs b/CoRProcessor/IChainProcessor.cs index eeb5a8e..a39fe58 100644 --- a/CoRProcessor/IChainProcessor.cs +++ b/CoRProcessor/IChainProcessor.cs @@ -5,7 +5,7 @@ namespace CoRProcessor { public interface IChainProcessor where T : IChainContext { - Task Handle(T t, CancellationToken cancellationToken = default); + Task Handle(T ctx, CancellationToken cancelToken = default); FuncDelegate CompensateOnFailure { get; set; } } } \ No newline at end of file diff --git a/UnitTests/UnitTests.cs b/UnitTests/UnitTests.cs index 1901222..33a5d31 100644 --- a/UnitTests/UnitTests.cs +++ b/UnitTests/UnitTests.cs @@ -222,7 +222,6 @@ public async Task TestCorProcessorRunningOnAutofac() public async Task TestEmptyProcessorRunning() { var emptyProcessor = new EmptyProcessor(); - emptyProcessor.Next = new AdditionProcessor(); var result = await emptyProcessor.Handle(new NumberContext() { @@ -232,7 +231,6 @@ public async Task TestEmptyProcessorRunning() }, default); Assert.That(result.Result, Is.EqualTo(0)); - Assert.That(emptyProcessor.Next.GetType().FullName, Is.EqualTo(typeof(AdditionProcessor).FullName)); } [Test]