• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

loresoft / MediatR.CommandQuery / 8911801772

01 May 2024 04:09PM CUT coverage: 57.379% (-1.8%) from 59.163%
8911801772

push

github

pwelter34
tweak build

342 of 700 branches covered (48.86%)

Branch coverage included in aggregate %.

1011 of 1658 relevant lines covered (60.98%)

18.48 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

78.57
/src/MediatR.CommandQuery/Behaviors/PipelineBehaviorBase.cs
1
using System.Diagnostics;
2

3
using Microsoft.Extensions.Logging;
4

5
namespace MediatR.CommandQuery.Behaviors;
6

7
public abstract partial class PipelineBehaviorBase<TRequest, TResponse>
8
    : IPipelineBehavior<TRequest, TResponse>
9
    where TRequest : class, IRequest<TResponse>
10
{
11
    private readonly string _name;
12

13
    protected PipelineBehaviorBase(ILoggerFactory loggerFactory)
224✔
14
    {
15
        if (loggerFactory is null)
224!
16
            throw new ArgumentNullException(nameof(loggerFactory));
×
17

18
        var type = GetType();
224✔
19

20
        Logger = loggerFactory.CreateLogger(type);
224✔
21
        _name = type.Name;
224✔
22
    }
224✔
23

24
    protected ILogger Logger { get; }
424✔
25

26

27
    public virtual async Task<TResponse> Handle(
28
        TRequest request,
29
        RequestHandlerDelegate<TResponse> next,
30
        CancellationToken cancellationToken)
31
    {
32
        if (request is null)
212!
33
            throw new ArgumentNullException(nameof(request));
×
34

35
        if (next is null)
212!
36
            throw new ArgumentNullException(nameof(next));
×
37

38
        try
39
        {
40
            LogStart(Logger, _name, request);
212✔
41
            var watch = Stopwatch.StartNew();
212✔
42

43
            var response = await Process(request, next, cancellationToken).ConfigureAwait(false);
212✔
44

45
            watch.Stop();
204✔
46
            LogFinish(Logger, _name, request, watch.ElapsedMilliseconds);
204✔
47

48
            return response;
204✔
49
        }
50
        catch (Exception ex)
8✔
51
        {
52
            LogError(Logger, _name, request, ex.Message, ex);
8✔
53
            throw;
8✔
54
        }
55
    }
204✔
56

57
    protected abstract Task<TResponse> Process(
58
        TRequest request,
59
        RequestHandlerDelegate<TResponse> next,
60
        CancellationToken cancellationToken);
61

62

63
    [LoggerMessage(1, LogLevel.Trace, "Processing behavior '{behavior}' for request '{request}' ...")]
64
    static partial void LogStart(ILogger logger, string behavior, IRequest<TResponse> request);
65

66
    [LoggerMessage(2, LogLevel.Trace, "Processed behavior '{behavior}' for request '{request}': {elapsed} ms")]
67
    static partial void LogFinish(ILogger logger, string behavior, IRequest<TResponse> request, long elapsed);
68

69
    [LoggerMessage(3, LogLevel.Trace, "Error processing behavior '{behavior}' for request '{request}': {errorMessage}")]
70
    static partial void LogError(ILogger logger, string behavior, IRequest<TResponse> request, string errorMessage, Exception? exception);
71
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc