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(); } } }