using Microsoft.Extensions.Primitives;
using System.Threading;
using Yarp.ReverseProxy.Configuration;
namespace YuanXuan.IM.Api.Proxy
{
///
/// 代理配置
///
public class ProxyConfig : IProxyConfig
{
private static CancellationTokenSource _cts = new CancellationTokenSource();
public ProxyConfig(IReadOnlyList routes, IReadOnlyList clusters, DateTime timestamp)
{
Routes = routes;
Clusters = clusters;
Timestamp = timestamp;
}
public IReadOnlyList Routes { get; }
public IReadOnlyList Clusters { get; }
public DateTime Timestamp { get; }
public IChangeToken ChangeToken => new CancellationChangeToken(_cts.Token);
///
/// 通知配置变更
///
public static void SignalChange()
{
var oldCts = Interlocked.Exchange(ref _cts, new CancellationTokenSource());
oldCts.Cancel();
}
}
}