< Summary

Information
Class: NostrSure.Infrastructure.Client.Implementation.InMemorySubscriptionManager
Assembly: NostrSure.Infrastructure
File(s): /home/runner/work/NostrSure/NostrSure/NostrSure.Infrastructure/Client/Implementation/InMemorySubscriptionManager.cs
Line coverage
100%
Covered lines: 24
Uncovered lines: 0
Coverable lines: 24
Total lines: 48
Line coverage: 100%
Branch coverage
100%
Covered branches: 6
Total branches: 6
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%11100%
NewSubscriptionId()100%11100%
AddSubscription(...)100%22100%
RemoveSubscription(...)100%22100%
HasSubscription(...)100%22100%
GetActiveSubscriptions()100%11100%

File(s)

/home/runner/work/NostrSure/NostrSure/NostrSure.Infrastructure/Client/Implementation/InMemorySubscriptionManager.cs

#LineLine coverage
 1using NostrSure.Infrastructure.Client.Abstractions;
 2using System.Collections.Concurrent;
 3
 4namespace NostrSure.Infrastructure.Client.Implementation;
 5
 6/// <summary>
 7/// In-memory subscription manager
 8/// </summary>
 9public class InMemorySubscriptionManager : ISubscriptionManager
 10{
 4511    private readonly ConcurrentDictionary<string, DateTime> _subscriptions = new();
 4512    private int _subscriptionCounter = 0;
 13
 14    public string NewSubscriptionId()
 315    {
 316        var id = $"sub_{Interlocked.Increment(ref _subscriptionCounter)}_{DateTime.UtcNow:yyyyMMddHHmmss}";
 317        return id;
 318    }
 19
 20    public void AddSubscription(string subscriptionId)
 201721    {
 201722        if (string.IsNullOrWhiteSpace(subscriptionId))
 323            throw new ArgumentException("Subscription ID cannot be null or empty", nameof(subscriptionId));
 24
 201425        _subscriptions.TryAdd(subscriptionId, DateTime.UtcNow);
 201426    }
 27
 28    public void RemoveSubscription(string subscriptionId)
 100729    {
 100730        if (string.IsNullOrWhiteSpace(subscriptionId))
 331            return;
 32
 100433        _subscriptions.TryRemove(subscriptionId, out _);
 100734    }
 35
 36    public bool HasSubscription(string subscriptionId)
 1137    {
 1138        if (string.IsNullOrWhiteSpace(subscriptionId))
 339            return false;
 40
 841        return _subscriptions.ContainsKey(subscriptionId);
 1142    }
 43
 44    public IEnumerable<string> GetActiveSubscriptions()
 645    {
 646        return _subscriptions.Keys.ToList();
 647    }
 48}