31 lines
1.1 KiB
C#
31 lines
1.1 KiB
C#
|
|
using Elsa.Caching.Distributed.Contracts;
|
||
|
|
using JetBrains.Annotations;
|
||
|
|
using Microsoft.Extensions.Primitives;
|
||
|
|
|
||
|
|
namespace Elsa.Caching.Distributed.Services;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// Decorates an <see cref="IChangeTokenSignaler"/> and publishes a signal after the signal has been triggered.
|
||
|
|
/// </summary>
|
||
|
|
[UsedImplicitly]
|
||
|
|
public class DistributedChangeTokenSignaler(IChangeTokenSignaler decoratedSignaler, IChangeTokenSignalPublisher signalPublisher) : IChangeTokenSignaler, IChangeTokenSignalInvoker
|
||
|
|
{
|
||
|
|
/// <inheritdoc />
|
||
|
|
public IChangeToken GetToken(string key)
|
||
|
|
{
|
||
|
|
return decoratedSignaler.GetToken(key);
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <inheritdoc />
|
||
|
|
public async ValueTask TriggerTokenAsync(string key, CancellationToken cancellationToken = default)
|
||
|
|
{
|
||
|
|
await decoratedSignaler.TriggerTokenAsync(key, cancellationToken);
|
||
|
|
await signalPublisher.PublishAsync(key, cancellationToken);
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <inheritdoc />
|
||
|
|
async ValueTask IChangeTokenSignalInvoker.InvokeAsync(string key, CancellationToken cancellationToken)
|
||
|
|
{
|
||
|
|
await decoratedSignaler.TriggerTokenAsync(key, cancellationToken);
|
||
|
|
}
|
||
|
|
}
|