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 } }