23 lines
800 B
C#
23 lines
800 B
C#
using Microsoft.AspNetCore.Mvc.Infrastructure;
|
|
using Microsoft.Extensions.Primitives;
|
|
using System.Threading;
|
|
|
|
namespace Lampac.Engine
|
|
{
|
|
public class DynamicActionDescriptorChangeProvider : IActionDescriptorChangeProvider
|
|
{
|
|
public static DynamicActionDescriptorChangeProvider Instance { get; } = new DynamicActionDescriptorChangeProvider();
|
|
|
|
private CancellationTokenSource tokenSource = new CancellationTokenSource();
|
|
public CancellationTokenSource TokenSource => tokenSource;
|
|
|
|
public IChangeToken GetChangeToken() => new CancellationChangeToken(tokenSource.Token);
|
|
|
|
public void NotifyChanges()
|
|
{
|
|
var previous = Interlocked.Exchange(ref tokenSource, new CancellationTokenSource());
|
|
previous.Cancel();
|
|
}
|
|
}
|
|
}
|