Files
git.stella-ops.org/src/__Libraries/StellaOps.Provcache/WriteBehindQueue.Enqueue.cs

28 lines
780 B
C#

using System;
using System.Threading;
using System.Threading.Tasks;
namespace StellaOps.Provcache;
public sealed partial class WriteBehindQueue
{
/// <inheritdoc />
public ValueTask EnqueueAsync(ProvcacheEntry entry, CancellationToken cancellationToken = default)
{
ArgumentNullException.ThrowIfNull(entry);
var item = new WriteBehindItem
{
Entry = entry,
EnqueuedAt = _timeProvider.GetUtcNow(),
RetryCount = 0
};
Interlocked.Increment(ref _totalEnqueued);
Interlocked.Increment(ref _currentQueueDepth);
ProvcacheTelemetry.SetWriteBehindQueueSize((int)Interlocked.Read(ref _currentQueueDepth));
return _channel.Writer.WriteAsync(item, cancellationToken);
}
}