using System;
using Svrnty.CQRS.Events.Abstractions.Streaming;
using Svrnty.CQRS.Events.Abstractions;
namespace Svrnty.CQRS.Events.Metrics;
///
/// No-op implementation of for when metrics are disabled.
/// All methods are empty and have no performance overhead.
///
public sealed class NoOpEventStreamMetrics : IEventStreamMetrics
{
///
/// Singleton instance to avoid allocations.
///
public static readonly NoOpEventStreamMetrics Instance = new();
private NoOpEventStreamMetrics()
{
}
///
public void RecordEventPublished(string streamName, string eventType)
{
// No-op
}
///
public void RecordEventConsumed(string streamName, string subscriptionId, string eventType)
{
// No-op
}
///
public void RecordProcessingLatency(string streamName, string subscriptionId, TimeSpan latency)
{
// No-op
}
///
public void RecordConsumerLag(string streamName, string subscriptionId, long lag)
{
// No-op
}
///
public void RecordError(string streamName, string? subscriptionId, string errorType)
{
// No-op
}
///
public void RecordRetry(string streamName, string subscriptionId, int attemptNumber)
{
// No-op
}
///
public void RecordStreamLength(string streamName, long length)
{
// No-op
}
///
public void RecordActiveConsumers(string streamName, string subscriptionId, int consumerCount)
{
// No-op
}
}