< Summary

Information
Class: ClientManager.Shared.Messaging.MessagePublishPipeline
Assembly: ClientManager.Shared
File(s): /home/runner/work/ClientManagerDemo/ClientManagerDemo/src/ClientManager/ClientManager.Shared/Messaging/Middleware/MessagePublishPipeline.cs
Line coverage
100%
Covered lines: 9
Uncovered lines: 0
Coverable lines: 9
Total lines: 27
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%11100%
ExecuteAsync(...)100%22100%
Use(...)100%11100%

File(s)

/home/runner/work/ClientManagerDemo/ClientManagerDemo/src/ClientManager/ClientManager.Shared/Messaging/Middleware/MessagePublishPipeline.cs

#LineLine coverage
 1namespace ClientManager.Shared.Messaging;
 2
 3public class MessagePublishPipeline
 4{
 15    readonly List<IMessagePublishMiddleware> _messagePublishMiddlewares = [];
 6
 7    public Task ExecuteAsync<T>(T message, MessagePublishDeleagte<T> finalHandler, CancellationToken cancellationToken)
 8        where T : IMessage
 9    {
 410        MessagePublishDeleagte<T> next = finalHandler;
 11
 1612        foreach (var middleware in _messagePublishMiddlewares.AsEnumerable().Reverse())
 13        {
 414            var current = middleware;
 415            var nextCopy = next;
 816            next = (msg, token) => current.InvokeAsync(msg, nextCopy, token);
 17        }
 18
 419        return next(message, cancellationToken);
 20    }
 21
 22    public MessagePublishPipeline Use(IMessagePublishMiddleware middleware)
 23    {
 124        _messagePublishMiddlewares.Add(middleware);
 125        return this;
 26    }
 27}