using Elsa.Caching.Distributed.Contracts;
using JetBrains.Annotations;
using Microsoft.Extensions.Primitives;
namespace Elsa.Caching.Distributed.Services;
///
/// Decorates an and publishes a signal after the signal has been triggered.
///
[UsedImplicitly]
public class DistributedChangeTokenSignaler(IChangeTokenSignaler decoratedSignaler, IChangeTokenSignalPublisher signalPublisher, IChangeTokenSignalInvoker invoker) : IChangeTokenSignaler
{
///
public IChangeToken GetToken(string key)
{
return decoratedSignaler.GetToken(key);
}
///
public async ValueTask TriggerTokenAsync(string key, CancellationToken cancellationToken = default)
{
await decoratedSignaler.TriggerTokenAsync(key, cancellationToken);
await signalPublisher.PublishAsync(key, cancellationToken);
}
}