Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
TimeoutPolicy.cs
1using System;
3using System.Linq;
4using System.Text;
5using System.Threading.Tasks;
6
8{
10 {
11 private readonly TimeSpan timeout;
12 public TimeoutPolicy(TimeSpan t) => this.timeout = t;
13
14 public async Task ExecuteAsync(Func<CancellationToken, Task> action, CancellationToken ct)
15 {
16 using CancellationTokenSource Linked = CancellationTokenSource.CreateLinkedTokenSource(ct);
17 Linked.CancelAfter(this.timeout);
18 await action(Linked.Token);
19 }
20
21 public async Task<T> ExecuteAsync<T>(Func<CancellationToken, Task<T>> action, CancellationToken ct)
22 {
23 using CancellationTokenSource Linked = CancellationTokenSource.CreateLinkedTokenSource(ct);
24 Linked.CancelAfter(this.timeout);
25 return await action(Linked.Token);
26 }
27 }
28}
async Task< T > ExecuteAsync< T >(Func< CancellationToken, Task< T > > action, CancellationToken ct)
Executes an async action producing a value through the policy pipeline.