< Summary

Information
Class: Intentum.Runtime.Resilience.Timeout.MemoryTimeoutPolicy
Assembly: Intentum.Runtime
File(s): /home/runner/work/Intentum/Intentum/src/Intentum.Runtime/Resilience/Timeout/MemoryTimeoutPolicy.cs
Line coverage
100%
Covered lines: 13
Uncovered lines: 0
Coverable lines: 13
Total lines: 26
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.ctor(...)100%11100%
ExecuteAsync()100%11100%

File(s)

/home/runner/work/Intentum/Intentum/src/Intentum.Runtime/Resilience/Timeout/MemoryTimeoutPolicy.cs

#LineLine coverage
 1namespace Intentum.Runtime.Resilience.Timeout;
 2
 3public sealed class MemoryTimeoutPolicy : ITimeoutPolicy
 4{
 5    private readonly TimeoutOptions _options;
 6
 57    public MemoryTimeoutPolicy(TimeoutOptions options)
 58    {
 59        _options = options;
 510    }
 11
 12    public async Task<T> ExecuteAsync<T>(Func<CancellationToken, Task<T>> operation, CancellationToken cancellationToken
 513    {
 514        using var timeoutCts = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
 515        timeoutCts.CancelAfter(_options.TimeoutDuration);
 16
 17        try
 518        {
 519            return await operation(timeoutCts.Token);
 20        }
 121        catch (OperationCanceledException) when (!cancellationToken.IsCancellationRequested)
 122        {
 123            throw new TaskCanceledException("Operation timed out.");
 24        }
 325    }
 26}